優化Linux生產服務器

一、時間同步

生產環境下的服務器對時間的要求是精準的,編輯

vim /etc/crontab

至今每天跟ntp時間服務器自動對時一次:

30 1 * * * /usr/sbin/ntpdate 192.43.244.18

二、啓用內核中的SYN cookie保護:

echo "1" > /proc/sys/net/ipv4/tcp_syncookies

執行以下命令使內核配置立馬生效:

/sbin/sysctl -p

三、Squid服務器變慢的解決方法

如果自己的生產服務器是squid緩存服務器,當發現系統變慢或打開網頁變慢時可輸入下列命令:

netstat -n | awk '/^tcp/ {++S[$NF]} \ END {for(a in S) print a, S[a]}'

這條命令可以把當前系統的網絡連接狀態分類彙總,由此分析出系統變慢的原因。

Linux下高併發的Squid服務器,TCP TIME_WAIT套接字數量經常達到兩、三萬,服務器很容易被拖死。通過修改Linux內核參數,可以

減少Squid服務器的TIME_WAIT套接字數量。

vim /etc/sysctl.conf

增加以下幾行:

net.ipv4.tcp_fin_timeout = 30 net.ipv4.tcp_keepalive_time = 1200 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_tw_recycle = 1 net.ipv4.ip_local_port_range = 1024 65000 net.ipv4.tcp_max_syn_backlog = 8192 net.ipv4.tcp_max_tw_buckets = 5000

說明:

net.ipv4.tcp_tw_reuse = 1 表示開啓重用。允許將TIME-WAIT sockets重新用於新的TCP連接,默認爲0,表示關閉;

net.ipv4.tcp_tw_recycle = 1 表示開啓TCP連接中TIME-WAIT sockets的快速回收,默認爲0,表示關閉。

net.ipv4.tcp_fin_timeout = 30 表示如果套接字由本端要求關閉,這個參數決定了它保持在FIN-WAIT-2狀態的時間。

net.ipv4.tcp_keepalive_time = 1200 表示當keepalive起用的時候,TCP發送keepalive消息的頻度。缺省是2小時,改爲20分鐘。

net.ipv4.ip_local_port_range = 1024 65000 表示用於向外連接的端口範圍。缺省情況下很小,改爲1024到65000。

net.ipv4.tcp_max_syn_backlog = 8192 表示SYN隊列的長度,默認爲1024,加大隊列長度爲8192,可以容納更多等待連接的網絡連接數。

net.ipv4.tcp_max_tw_buckets = 5000表示系統同時保持TIME_WAIT套接字的最大數量,如果超過這個數字,TIME_WAIT套接字將立刻被清除並打印警告信息。默認爲 180000,改爲5000。對於Apache、Nginx等服務器,上幾行的參數可以很好地減少TIME_WAIT套接字數量,但是對於Squid,效果卻不大。此項參數可以控制TIME_WAIT套接字的最大數量,避免Squid服務器被大量的TIME_WAIT套接字拖死。

執行以下命令使內核配置立馬生效:

/sbin/sysctl –p

四、Nginx服務器的情況

如果服務器是Nginx負載均衡器或用於Nginx+PHP5的web服務器,此二項也必須打開:

net.ipv4.tcp_tw_reuse = 1 #允許重新用於新的TCP連接 net.ipv4.tcp_tw_recycle = 1 #開啓TCP連接快速回收

執行以下命令使內核配置立馬生效:

/sbin/sysctl –p

五、調整Linux的最大文件打開數

Linux最大文件打開數的默認值很低,必須修改的高一些,否則squid服務器在高負載時執行性能將很低。

vim /etc/security/limit.conf

,在最後一行添加

* soft nofile 60000 * hard nofile 65535

值得注意的是,通過命令ulimit -SHn是改變不了linux系統的最大文件打開數的,寫進/etc/rc.d/rc.local也是不行的。

六、停止ipv6

線上跑的Linux服務器,絕大多數是64位的CentOS。CentOS默認的狀態下,ipv6是被啓用的狀態。因爲我們不使用ipv6,所以,停止

ipv6能夠以最大限度保證安全和快速。

vim /etc/modprobe.conf

修改此配置文件,添加如下行到文尾:

alias net-pf-10 off alias ipv6 off echo "IPV6INIT=no" >> \ /etc/sysconfig/network-scripts/ifcfg-eth0

完成!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章