mysql centos操作系統優化

CentOS系統參數優化
衆所周知,Mysql能安裝在各大操作系統上,特別是對於很多個人開發者,都喜歡把開發放在windows上面,但是實際上線的項目都是需要部署到服務器上。雖然說Windows也能作服務器,但實際應用中比較少,而更多的是使用基於Linux的CentOS系統,原因自然是穩定安全性高,並且CentOS也是免費的操作系統。
所以這裏是針對MySQL的性能進行的CentOS系統參數的優化。


內核相關參數
內核相關參數在/etc/sysctl.conf中修改


網絡相關參數


1.這個參數決定每個端口最大監聽隊列的長度,這個值默認狀態下比較小,對於負載較大的服務器肯定是不夠的,一般都要調到2048或者以上,具體情況看需要。


net.core.somaxvconn = 65535
2.每個網絡接口接收數據包的速率比內核處理這些包的速率快時,允許發送到隊列的數據包的最大數目


net.core.netdev_max_backlog = 65535
3.還未獲得連接的請求,可保存到隊列的最大數目,超過這個數目的數據包就會被拋棄


net.ipv4.tcp_max_syn_backlog = 65535
4.控制TCP連接等待處理的時間,加快TCP處理的回收,如果有大量數據庫連接的請求,而TCP連接又被佔滿的話,就會出現數據庫連接錯誤。這也是爲什麼有些網站遭ddos後出現數據庫連接的錯誤。


net.ipv4.tcp_fin_timeout = 10
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
5.設置TCP連接、接收和發送緩衝區大小的默認值和最大值


net.core.wmem_default = 87380
net.core.wmem_max = 16777216
net.core.rmem_default = 87380
net.core.rmem_max = 16777216
6.設置TCP開始發送keepalive探測消息的時間間隔。單位是秒,用於檢驗TCP連接是否有效。


net.ipv4.tcp_keepalive_time = 120
7.發送兩個TCP keepalive探測數據包的間隔時間


net.ipv4.tcp_keepalive_intvl = 30
8.設置keepalive探測包失效之前,允許發送keepalive探測數據包的最大數量。


net.ipv4.tcp_keepalive_probes = 3
內存相關參數


1.設置單個共享內存段的最大值


kernel.shmmax = 4294967295
ps:這個參數應該設置足夠大,以便能在一個共享內存段下容納下整個Innodb緩衝池的大小。這個值的大小對於64位linux系統,可取的最大值爲物理內存值-1byte,建議值爲大於物理內存的一半,一般取值大於Innodb緩衝池的大小即可。


2.控制除非Linux內核的虛擬內存滿了,否則不要使用交換區。


vm.swappiness = 0
ps:在Linux系統安裝時都有一個系統交換分區,而當操作系統因爲沒有足夠內存時,就會將一些虛擬內存寫到磁盤的交換區中。這樣就會發生內存交換,進而會影響到MySQL的性能,但是如果禁用掉交換分區,將會降低操作系統的性能,容易造成內存溢出和崩潰,或者所有進程都被操作系統強制關閉,所以這樣設置能保證最優。


增加資源限制
這個修改文件/etc/security/limit.conf


1.控制打開文件限制


* soft nofile 65535
* hard nofile 65535
ps: 這裏直接加到limit.conf文件的末尾。*表示對所有用戶有效 ,soft指當前系統生效的設置,hard表明系統中所能設定的最大值,nofile表示所限制的資源是打開文件的最大數目,65535就是限制的數量。最後,這個文件的修改需要重啓才生效


磁盤調度策略


echo deadline > /sys/block/devname/queue/scheduler


文件系統的配置
EXT3/4系統的掛載參數
這裏修改/etc/fstab


/dev/ada1/ext4   noatime,nodiratime,data=writeback 1 1


ps:writeback表示寫入日誌時原數據和當前數據是不同步的,noatime,nodiratime表示禁止記錄文件的訪問時間和讀取目錄的時間,這樣可以減少寫操作。


這第一篇mysql性能的調優就先到這裏了。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章