Linux下高並發socket鏈接數測試


一.如何增大service進程的max open files

ulimit -n 只能改小max open files,不能改大。需要按照以下步驟:

  1. 修改/etc/security/limits.conf文件,將"soft nofile 655360"和"hard nofile 655360"這兩行的655360改成期望的值
  2. 退出,重新ssh該機器(否則無效)
  3. 修改對service的啟動腳本,增加"ulimit -n 950000",其中950000是期望改變的值
  4. 重啟service進程(否則無效),通過"cat /proc/pid/limits"查看是否生效,其中pid是service的進程id
  5. 可以通過"cat /proc/sys/fs/file-max"查看系統允許的最大的max open files

二.如何修改系統的tcp端口限制

  1. 通過"cat /proc/sys/net/ipv4/ip_local_port_range"可以查看系統設置的可用端口
  2. 在/etc/sysctl.conf中增加"net.ipv4.ip_local_port_range = 1024 65000"這一行,執行"sysctl -p",若不報錯則成功
  3. 再次通過"cat /proc/sys/net/ipv4/ip_local_port_range"可以查看系統設置的可用端口是否生效

三.測試方法

  1. 加強對測試系統的了解。例如:由於對系統的某些限制不了解造成測試方法錯誤,結果不可取。(同一級目錄下不允許創建百萬個文件)
  2. 復現問題,盡量模擬用戶的用法。例如:協程or物理線程。
  3. 打破常規假設:理論判斷不會走到的分支,則沒有測試,鏈接數異常,則可能是走到了理論判斷不會走到分支;
  4. Little's law法則:pthread_create並不是創建的線程越多越好,看測試重點,針對此問題,開幾個線程,每個線程多干活即可達到期望的高鏈接數;
    N = X * E[T] ,N就是你的壓力器線程數,X是IOPS ,E[T]是平均處理時間
    壓不上去兩個原因 1) N太小 2) E[T]太大
  5. 測試觀察項。期望壓力持續一個狀態,而非瞬間狀態,保證鏈接不復用且不釋放或釋放后立即重連。
  6. 測試性能結果,需要符合用戶的用法。例如:QPS、Latency等,不要提供給用戶一個用戶不需要的性能報告
  7. 善用工具。例如:能復用盡量復用,減少重復的無用功。多積累學習一些工具,較少工作量。
  8.  

用戶:我想要一輛跑得很快的馬車。

重點是“快”,而不是“馬車”。

 

參考:

Linux下高並發socket最大連接數

http://soft.chinabyte.com/os/285/12349285.shtml


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM