本文主要講述高並發http應用中的c10k瓶頸問題:在很多服務器初始狀態下,無法服務1w左右的並發連接。這與每次服務的資源消耗、服務器的硬件配置固然有關,但很多時候是被linux的默認配置以及軟件stack選型所限制。本文主要分析c10k問題的產生原因、限制因素以及解決方案。
如果硬件配置沒有問題,性能較高的服務器上,產生c10k問題,很多情況下與配置和軟件棧相關:最大文件打開數、socket 端口數、IO基礎棧。
為什么呢?
如果依然存在性能問題,可以考慮優化程序的架構:比如,網絡瓶頸:cdn ,客戶端緩存,服務器端改成api + angular,這樣可以緩存頁面。多個服務器 + session-redis + memcached-mysql
如果依然存在性能問題,需要考慮優化Linux服務器的性能,參見另外一篇博客: Linux服務器性能調優方案。
如果是懷疑mysql的問題,參見另外一篇博客: mysql性能調優方案。
參考:
1. http://blog.sae.sina.com.cn/archives/1988
2. http://coolshell.cn/articles/7490.html
3. ulimit限制之nproc問題: http://blog.yufeng.info/archives/2568
4. 檢查丟包利器dropwatch: http://blog.yufeng.info/archives/2497
5. ulimit問題及其影響: http://blog.yufeng.info/archives/1380
