當前位置:編程學習大全網 - 源碼下載 - nginx能支持多少長連接

nginx能支持多少長連接

壹 前言

當管理大量連接時,特別是只有少量活躍連接,NGINX有比較好的CPU和RAM利用率,如今是多終端保持在線的時代,更能讓NGINX發揮這個優點。本文做壹個簡單測試,NGINX在壹個普通PC虛擬機上維護100k的HTTP長連接,然後查看NGINX和系統的資源利用率。

二 測試環境

1.服務端

硬件:雙核2.3GHz,2GB內存

軟件:CentOS 6.5, kernel 2.6.32, gcc 4.4.7, nginx 1.4.7

IP:10.211.55.8

內核參數調整:

$ /sbin/sysctl -w net.netfilter.nf_conntrack_max=102400 # 提升系統整體連接數

$ /sbin/sysctl net.netfilter.nf_conntrack_max #驗證是否生效

NGINX從源碼編譯時帶--with-m

PID %CPU %MEM RSS COMMAND

1899 2.0 4.9 94600 nginx

# vmstat 3

procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----

r b swpd free buff cache si so bi bo in cs us sy id wa st

0 0 0 654248 62920 158924 0 0 6 6 361 108 0 1 98 0 0

0 0 0 654232 62920 158952 0 0 0 85 804 218 0 1 98 0 0

0 0 0 654108 62928 158976 0 0 0 9 813 214 0 1 98 0 0

0 0 0 654108 62928 159004 0 0 0 0 803 220 0 1 99 0 0

^C

# free

total used free shared buffers cached

Mem: 1918576 1264576 654000 0 62952 159112

-/+ buffers/cache: 1042512 876064

Swap: 4128760 0 4128760

四 總結

1. NGINX平均每個連接的內存占用很小,通過ps的rss看出,每個連接物理內存占用約1k。多數內存都被內核TCP緩存占用。

2. NGINX維持大量連接(少量活躍連接,本文中平均每秒活躍連接為總連接數的千分之壹)占用很少CPU,上文僅為2%。

3. 最好的優化就是不優化。整個測試除了提升文件數和連接數的這些硬限制外,沒有任何參數調優,但仔細計算下就發現平均每個連接內存占用不到10k,遠小於默認的緩存大小(net.ipv4.tcp_rmem = 4096 87380 4194304)和 (net.ipv4.tcp_wmem = 4096 16384 4194304)

4. NGINX維持此類連接的主要瓶頸就是可用內存大小,我的2GB內存虛擬機其實可以支持15萬長連接,只不過我物理機器沒有內存再繼續clone虛擬機客戶端了:-(

5. 雖然會遇到更多內核參數的限制,但大內存服務器支持100萬連接是完全沒問題的。

  • 上一篇:Oracle實例如何創建?
  • 下一篇:qq發說說的句子(適合發QQ說說的句子)
  • copyright 2024編程學習大全網