使用幾個經典網絡模型實現非阻塞簡單http服務,部署在一臺4核Xeon 3.00GHZ的機器上進行壓力測試。
| 短連接 | 長連接 | 客戶端 |
1個線程 | 97%cpu,多核分擔 60%cpu網卡中斷 1.6w/s 平均響應時間10ms | 100%cpu 15%cpu網卡軟中斷 2.8w/s 平均響應時間7ms | 100并發/客戶端 100w請求/客戶端 2個客戶端 |
4個線程 | 每個線程70%cpu 99%cpu網卡中斷 2.1w/s 平均響應時間9ms | 每個線程100%cpu 40%cpu網卡軟中斷 6.5w/s 平均響應時間3ms | 100并發/客戶端 100w請求/客戶端 2個客戶端 |
1個leader線程,接受連接 4個worker線程,處理請求 | leader線程90%cpu worker線程40%cpu 75%網卡中斷 1.8w/s 平均響應時間10ms | leader線程1%cpu worker線程100%cpu 40%網卡中斷 6.0w/s 平均響應時間3ms | 100并發/客戶端 100w請求/客戶端 2個客戶端 |
結論:
1. 短連接中,建立連接是很耗費資源的。
2. 長連接中,多線程在提高處理能力方面是很有價值的,尤其是運算量多的請求。
3. 多個線程同時接受連接會造成cpu軟中斷的overhead。