1. 程式人生 > >當前服務器的並發連接數查看

當前服務器的並發連接數查看

efault his 配置 並發訪問 版本 並發 nds end 數量

最近在測試項目,項目環境是centos 5.6下,nginx,mysql,php環境的項目,數據庫的數據量較大,每個表都是近億級別的數據,多表輪詢查詢。

linux的最大並發允許的鏈接:
查看當前服務器的並發連接數命令:
查看使用了多少連接數:
cat /proc/sys/net/ipv4/netfilter/ip_conntrack_count
新版本centos用這個:
cat /proc/sys/net/netfilter/nf_conntrack_count

查看總數多少:
cat /proc/sys/net/ipv4/ip_conntrack_max
新版本用這個:
cat /proc/sys/net/netfilter/nf_conntrack_max

臨時設置增加並發數多少:
echo “524288” > /proc/sys/net/ipv4/ip_conntrack_max
新版本centos用這個:
echo “524288” > /proc/sys/net/netfilter/nf_conntrack_max

最終:
/etc/sysctl.conf中加入:net.ipv4.ip_conntract_max =102400
新版本centos用這個:
/etc/sysctl.conf中加入:net.nf_conntract_max =102400
重啟配置
/sbin/sysctl -p

linux的並發過程中,time_wait的數量太大,引起的鏈接掛起等待,需要在服務器增加以下配置:

編輯文件/etc/sysctl.conf,加入以下內容:

net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 30
然後執行 /sbin/sysctl -p 讓參數生效。
net.ipv4.tcp_syncookies = 1 表示開啟SYN Cookies。當出現SYN等待隊列溢出時,啟用cookies來處理,可防範少量SYN攻擊,默認為0,表示關閉;
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 修改系默認的 TIMEOUT 時間

數據庫方面優化:使用簡單的代碼進行查詢,建立了索引,同時查詢條件相對簡單化。數據庫mysql的最大連接數設置成了3000,但是壓力測試階段,發現其實最大並發連接數達不到這麽高。

php端優化:
由於接口是webservice,壓力測試階段總是並發鏈接上不去,但是cpu和各項服務器性能參數都很低,增加libxml_disable_entity_loader(false); 在頁面開始,問題解決,可以大並發訪問。

Php.ini的修改:

; The timeout for serving a single request after which the worker process will
; be killed. This option should be used when the ‘max_execution_time’ ini option
; does not stop script execution for some reason. A value of ‘0’ means ‘off’.
; Available units: s(econds)(default), m(inutes), h(ours), or d(ays)
; Default Value: 0
request_terminate_timeout = 0s

該項置0。

優化前,並發在20RPS。
以上是對這次的優化,優化後,該接口並發達到300左右RPS,響應時間在0.3秒內。如果還要繼續優化,後面需要考慮對應的第三方緩存,減少數據庫級別的查詢才能更好解決問題。

參考文章:http://www.itwendao.com/article/detail/92135.html

當前服務器的並發連接數查看