此次拖的時間稍長一些,因為遇到幾個難題。一個就是前面提到的死結,其他幾個問題還未解決。遇到的幾個問題和現象,大致總結如下:
1。 PC機的最大TCP串連數問題。
Windows平台,XP sp3(x86)系統,100Mb的網卡,測試結果顯示,串連數最大隻能達到32000多一些。由此推測,AysncSelect模型的最大的TCP串連數可能是32768。
對於Select模型、EventSelect模型,最大TCP串連數或為16384,因為我的程式最多的一次是跑到16165個串連。
也可能是PC的原因,也可能是XP系統的原因,或者是網卡?但是,AysncSelect模型的最大串連數約為 Select模型、EventSelect模型的兩倍,從這一點來說,應該和網路模型有關了。
2。 PC機的最大線程數
這個以前說過,大約是1900多一些,再往後就是失敗了。
3。 電腦的嘟嘟聲
原本是想做一個簡單的壓力測試,結果,在數萬個串連之後,用戶端或伺服器退出,串連依次關閉,機器處於極度繁忙狀態。此時,台式機偶爾發出嘟嘟聲,而膝上型電腦則長時間發出嘟嘟聲。
這時候,最忙的應該是網卡吧。估計是網卡發出的。其中,這次的嘟嘟聲和上次的筆記本故障聲音類似!——可以拿這個來測試筆記本的效能了。
4。 可怕的Dos攻擊
DOS或DDOS攻擊究竟會產生什麼效果,以前一直無緣得見。這次算是開眼了,台式機的CPU利用率直接飆升到50%以上,而筆記本的CPU利用率則直接100%。
這個和程式的設計有一定關係。
(1)伺服器接受用戶端的串連時,我加了一把全域進程鎖和一把線程鎖,這可能導致效率低下。
(2)習慣於使用臨界區加鎖,而臨界區過大,這降低了程式的執行效率。
(3)如果每次接受一個用戶端串連後,就Sleep幾十毫秒,應該可以大大降低CPU利用率,但是,伺服器響應用戶端串連的速度就會大大降低。
避開這些人為因素,不得不感歎DOS攻擊的可怕!一台機器運行DOS程式,就可以造成這麼大的攻擊性,如果是大量的死士同時攻擊,那該多麼壯觀!——當然了,伺服器的配置要高很多的,即使這樣,也難以承受幾十台肉雞每秒上萬次乃至更多的攻擊數。