タグ

tcpに関するkimutanskのブックマーク (5)

  • 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が有効に働かないケースがある事象の詳細、と
  • listen()のbacklogが不足した際のTCP_DEFER_ACCEPTの動作について - blog.nomadscafe.jp

    TCP_DEFER_ACCEPTは、LinuxでサポートされているTCPのオプションで、サーバ側で使用した場合にはaccept(2)からのブロック解除をTCP接続が完了したタイミングではなく最初のデータが到着したタイミングで行ってくれるオプションです。 Webサーバ・アプリケーションサーバではリクエストが到着してからaccept(2)のブロックを解除するので、リクエストの到着をWebサーバ・アプリケーションサーバで待つ必要がなくなり、特にprefork型のサーバでは効率的にプロセスを使えるようになるという利点があります。PerlではStarletがこの機能を有効にしています ところが、某サービスでTCP_DEFER_ACCEPTが有効にも関わらず、accept後のreadでデータが読めず、最悪の場合、デフォルトのtimeoutである5分間プロセスがストールすることがありました。strace

    kimutansk
    kimutansk 2014/05/08
    backlogも適切に設定しておかないとDEFERは有効に扱えない場合もある、と。。
  • マスタリングTCP/IP OpenFlow編 目次:Geekなぺーじ

    今年はじめから半年間書き続けていた「マスタリングTCP/IP OpenFlow編」(あきみち・宮永直樹・岩田淳 共著/7月末発売予定)の目次です。 予定では、先月発売されているはずだったのですが、色々と調べているうちに「ここが書き足りない」というような部分をいろいろと発見してしまい、遅れてしまいました。。。 方向性は多少違いますが、「インターネットのカタチ - 織り成す粘り強い世界」と同様に、自分自身で満足できる出来になっていると感じています。 OpenFlow 1.0から1.3.2まで 書はOpenFlow 1.0を骨子としつつ、OpenFlow 1.3.2までを解説しています。 OpenFlow 1.0を基としているのは、OpenFlow 1.0でOpenFlowの初期設計思想が色濃く反映されているため、OpenFlowを理解するにはOpenFlow 1.0から入るのがわかりやすい

    kimutansk
    kimutansk 2013/07/04
    これはほしいですね。かつ、オーム社であれば電子版もすぐ出るわけですし。楽しみです。
  • 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
    この辺の設定が後付けで設定ファイルで出来ると便利なんですけどねぇ・・・さすがにそうはいきませんか(汗
  • TCP/IP で TIME_WAIT が残る時間を短くする

    TIME_WAIT 状態の TCP コネクションが多数残る netstat コマンドで TCP コネクションの状態を確認していると、"TIME_WAIT" という状態のコネクションがたくさん確認される場合があります。 "TIME_WAIT" 状態というのは TCP コネクションにおいて、こちら側から通信をした場合に "FIN_WAIT_1" (FIN ACK 受信) から、"FIN_WAIT_2" (ACK 受信) または "CLOSING" (FIN 受信, ACK 送信)を経て、コネクションを閉じられる状態となったことを示すもののようです。 そしてこの "TIME_WAIT" から、実際にそのコネクションが閉じられて "CLOSED" となるまでの間に待ち時間があり、これによって、短時間に通信が集中すると、その分だけ通信終了間際の "TIME_WAIT" 状態のコネクションが多数、ne

    kimutansk
    kimutansk 2012/03/23
    Linuxネットワークチューニング
  • 1