千萬併發連接注意點

對於一臺服務器來說,支撐千萬併發連接是一個挑戰,我們來看看有哪些限制,並且如何解決

首先是內存問題,默認設置下,系統爲每個tcp連接分配4k的rmem和4k的wmem,那麼一個連接需要8k的內存,1kw連接需要80G內存。
修改系統的這兩個配置,改爲1k的rmem和wmem,則需要的內存爲20G,實際使用中還會有其他的內存開銷,因此最好準備32G或更大的內存
sysctl -w net.ipv4.tcp_rmem=4096
sysctl -w net.ipv4.tcp_wmem=4096

然後是文件描述問題,系統允許打開的文件數是有限制的,默認值很小,應當修改
sysctl -w fs.file-max=10485760

還有單進程的文件數量限制,這個最大值只能到1048576,應當修改
echo ‘* soft nofile 1048576’ >> /etc/security/limits.conf #用戶單進程的最大文件數,用戶登錄時生效
echo ‘* hard nofile 1048576’ >> /etc/security/limits.conf #用戶單進程的最大文件數,用戶登錄時生效
ulimit -n 1048576 #用戶單進程的最大文件數 當前會話生效

由於一個進程最多能夠打開100w個文件,因此需要多進程來支持千萬連接,因此server需要運行多個服務器進程。

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