爲了讓系統可以支持更大的併發,除了必須安裝event擴展(或libevent擴展)以外,優化linux內核也是重中之重,如下優化每一項都很是很是重要,請務必按逐一完成。linux
打開文件 /etc/sysctl.conf,增長如下設置網絡
#該參數設置系統的TIME_WAIT的數量,若是超過默認值則會被當即清除 net.ipv4.tcp_max_tw_buckets = 20000 #定義了系統中每個端口最大的監聽隊列的長度,這是個全局的參數 net.core.somaxconn = 65535 #對於還未得到對方確認的鏈接請求,可保存在隊列中的最大數目 net.ipv4.tcp_max_syn_backlog = 262144 #在每一個網絡接口接收數據包的速率比內核處理這些包的速率快時,容許送到隊列的數據包的最大數目 net.core.netdev_max_backlog = 30000 #可以更快地回收TIME-WAIT套接字。此選項會致使處於NAT網絡的客戶端超時,建議爲0 net.ipv4.tcp_tw_recycle = 0 #系統全部進程一共能夠打開的文件數量 fs.file-max = 6815744 #防火牆跟蹤表的大小。注意:若是防火牆沒開則會提示error: "net.netfilter.nf_conntrack_max" is an unknown key,忽略便可 net.netfilter.nf_conntrack_max = 2621440 運行 sysctl -p便可生效。
說明:併發
/etc/sysctl.conf 可設置的選項不少,其它選項能夠根據本身的環境須要進行設置tcp
設置系統打開文件數設置,解決高併發下 too many open files 問題。此選項直接影響單個進程容納的客戶端鏈接數。高併發
Soft open files 是Linux系統參數,影響系統單個進程可以打開最大的文件句柄數量,這個值會影響到長鏈接應用如聊天中單個進程可以維持的用戶鏈接數, 運行ulimit -n能看到這個參數值,若是是1024,就是表明單個進程只能同時最多隻能維持1024甚至更少(由於有其它文件的句柄被打開)。若是開啓4個進程維持用戶鏈接,那麼整個應用可以同時維持的鏈接數不會超過4*1024個,也就是說最多隻能支持4x1024個用戶在線能夠增大這個設置以便服務可以維持更多的TCP鏈接。優化
Soft open files 修改方法:.net
(1)ulimit -HSn 102400code
這只是在當前終端有效,退出以後,open files 又變爲默認值。接口
(2)在/etc/profile文件末尾添加一行ulimit -HSn 102400,這樣每次登陸終端時,都會自動執行/etc/profile。隊列
(3)令修改open files的數值永久生效,則必須修改配置文件:/etc/security/limits.conf. 在這個文件後加上:
* soft nofile 1024000 * hard nofile 1024000 root soft nofile 1024000 root hard nofile 1024000
這種方法須要重啓機器才能生效。