ichinose9372 / 42-webserv

c++でnginxを作る課題
2 stars 0 forks source link

#72 siegeテストによるpollエラーの対応 #84

Closed welove-t closed 8 months ago

welove-t commented 8 months ago

fix #72

pollが落ちる件

原因

pollで管理しているpollfdsが増大し続けていたから。 ※FDはちゃんと閉じていた。(handleExistingConnection内で)

FDの上限は256(端末による。「ulimit -n」コマンドで確認できる) リクエストの都度、pollfds内のノードが増え続けていた。 なので、(試してはいないけど)localhostに257回アクセスしたらpollが落ちる。

poll(pollfds.data(), pollfds.size(), -1)

↑第2引数がFDの上限を超えたらOUT

対応

FDのclose時点で該当のpollfds内のノードを削除する。 これでpollfdsを適切に管理できる

結果

「Availability:99.92 %」