タグ

tcpとkernelに関するkimutanskのブックマーク (2)

  • LinuxでTCP_DEFER_ACCEPTが有効でもaccept後readできない理由

    listen()のbacklogが不足した際のTCP_DEFER_ACCEPTの動作について - blog.nomadscafe.jpという記事の中で、listen backlog があふれた後に accept(2) すると、その後の read(2) が EAGAIN を返したり、接続が不安定になるという事象が説明されていました。気になったので調べてみたことをまとめます。 結論から言うとこれはLinuxの仕様です。manのtcp(7)を見ると、 TCP_DEFER_ACCEPT (since Linux 2.4) Allow a listener to be awakened only when data arrives on the socket. Takes an integer value (seconds), this can bound the maximum number of

    kimutansk
    kimutansk 2014/05/08
    DEFERが有効に働かないケースがある事象の詳細、と
  • TIME_WAITのチューニングとkernelリビルド for CentOS 6.0 - 逆襲のWebエンジニア

    久しぶりにSRPMからkernelリビルドしてみたので、 過去を振り返りつつ手順をメモ。 ソーシャルゲームや外部のAPIを使用するサービスなどにありがちなんですが、 Webサーバは、受けるHTTPリクエストが多くなると、 外部のWebサーバにHTTPリクエストを送る処理も多くなったりします。 その場合に問題となるのが、tcpのコネクションです。 TIME_WAIT状態のコネクションが多くなると、 接続できる数は上限があるので、接続できたりできなかったり不安定な状態になります。 そうなると、まあ担当者はかなりテンパってますね。 でも負荷的にはサーバはテンパってなかったりします。 TIME_WAIT多発対策はざっくり サーバ増強 緊急対応ということで、あくまで一時的な対応。富豪ならこれでよし。 使用できるTCPポート番号を増やした 増加量が上回る場合は、焼け石に水。 tcp_tw_recycl

    TIME_WAITのチューニングとkernelリビルド for CentOS 6.0 - 逆襲のWebエンジニア
    kimutansk
    kimutansk 2012/09/09
    この辺の設定が後付けで設定ファイルで出来ると便利なんですけどねぇ・・・さすがにそうはいきませんか(汗
  • 1