測試機: amd 兩核心 ,客戶端與服務(wù)端都在本機上跑。

網(wǎng)絡(luò)層:A類epoll線程處理accept的被動連接;
B類epoll線程處理connect的主動連接;
C類epoll線程把A或B類epoll線程得到的連接分配到某個線程,專門處理send和recv操作;
D類線程池處理C類拋出來的數(shù)據(jù),處理完之后,再投遞到C類線程做send操作。

用ab測試短連接
ab -n 1000 -c 150 http://127.0.0.1:8090/
測試20次之后,得到一個峰值tps=6000



用字節(jié)的寫的基于數(shù)據(jù)echo測試的壓力測試程序測試長連接:
client發(fā)出64字節(jié)數(shù)據(jù),echosvrd返回64字節(jié),client又發(fā)出64字節(jié)。

每次傳輸網(wǎng)絡(luò)傳輸數(shù)據(jù)在64字節(jié)以下的情況下: 
./stree_client 127.0.0.1 8090 100    得到tps=13851
./stree_client 127.0.0.1 8090 1000   得到tps=16641
./stree_client 127.0.0.1 8090 10000  得到tps=16600 service cpu跑到90%,始終在90%以下;stree_client的cpu跑到32%左右;
./stree_client 127.0.0.1 8090 20000  stree_client的cpu跑到100%告終
./stree_client 127.0.0.1 8090 15000  stree_client的cpu跑到100%告終

把日志的輸出級別調(diào)到1,此時基本無日志輸出:
./stree_client 127.0.0.1 8090 10000  得到tps=29436 service cpu跑到70%;stree_client的cpu跑到48%左右;
./stree_client 127.0.0.1 8090 15000  stree_client的cpu跑到100%告終

再把網(wǎng)絡(luò)傳輸?shù)淖止?jié)調(diào)整為128字節(jié)左右:
./stree_client 127.0.0.1 8090 10000  得到tps=29179 service cpu跑到68%;stree_client的cpu跑到45%左右;

結(jié)論:
在本機測試,就忽略了網(wǎng)絡(luò)io時延,得到網(wǎng)絡(luò)引擎cpu跑到100%時的tps是 不超過30000,或者不偏離30000很遠,
此時并發(fā)連接數(shù)在10000