開始前準備。操做系統Ubuntu 12java
在/etc/sysctl.conf中添加以下配置:併發
fs.file-max = 1048576 net.ipv4.ip_local_port_range = 1024 65535 net.ipv4.tcp_mem = 786432 2097152 3145728 net.ipv4.tcp_rmem = 4096 4096 16777216 net.ipv4.tcp_wmem = 4096 4096 16777216 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_tw_recycle = 1
在/etc/security/limits.conf中添加以下配置:jvm
* soft nofile 1048576 * hard nofile 1048576
最後使用ulimit -an查詢設置是否生效。tcp
測試主機cpu:性能
內存:測試
客戶端測試機用VMware建立12臺虛擬機。機器性能就不列舉了。每臺虛擬機能夠跑3W連接操作系統
1:t-io啓動時內存佔用率以及連接狀況code
2:5W連接時內存佔用狀況進程
3:10Wip
4:20W
5:30W
----------------------------------------------------------------------------
java進程統計狀況
cpu
jvm
2小時後觀察內存變化狀況以下圖
結論以下
1:0-10萬鏈接。內存變化較大。主要是因爲內存初始化時jvm會佔用一部份內存。
2:10萬以後。每增長10萬鏈接 內存佔用率上升300M左右。
3:隨着鏈接數增長能夠發現cpu性能對鏈接數影響不大。
4:新生代內存與老生代內存佔用率比較合理。
5:併發30W鏈接在2小時內。內存變化不明顯。處於合理狀態
根據以上數據能夠推論 —-> 以8G內存(可以使用內存爲7.5G左右)爲例:當內存佔用率達到5G左右時足以支撐100W併發鏈接。