Nagle algorithm

2009年03月26日 00:19

拍手があると励みになる、と言う事を記事に書いたら思ったよりたくさんの反応があってうれしかったです。そもそもワークスペースの操作、についてはツールが欲しかった方も多かったのかもしれません。

さて、今日はネットワークの絡むお話をしてみようと思います。
Notes の問い合わせで、Nagle algorithm とか出て来たらちょっととっつきにくいですよね。
残念ながらこの話は、NotesNetworkの問題では度々出てきます。

# 実はどう読むか悩んでいたのですが、ナグルアルゴリズムと言うカナが振られているサイトをよく見ますが、John Nagleとかが提唱者なようで、英語的に考えるとどう考えてもネーグルなんじゃないかと思いますが実際のところどうなのでしょう。。。(ちなみにアルクで検索したらネーグルとなっていました。。)

この文書の7.5のところを読んでみて見ると、Nagle アルゴリズムを無効にしてみるような内容の記事があります。
トラブルシューティング:クライアントとサーバー間の接続の問題 (#731795)

Nagle Algorithm は、NotesNetworkパフォーマンスに悪い影響を与える事が分かってきて、8.5 からデフォルトで無効になっています。このような背景もあり、7.x 及び 8.0.x の環境においても無効にすることを推奨しています。

「DEBUG_PD_NAGLE_OFF & EnableNagle: the Nagle algorithm should be disabled」(Domino Wiki)

Notes側でどんな症状が出るのか?と言うと、サーバー接続やDBを開く際にはそれほど大きな遅延が無いのですが、複製や添付ファイルのダウンロードのように大きなストリームデータを扱う際にパフォーマンスが大きく遅延します。別に止まったりするわけではないので気が付きにくいので、ネットワークのスループットなどにかなり自信がある環境でないと気が付きにくいかもしれません。

このアルゴリズムはNotesだけが使っている怪しいアルゴリズムではありません。
RFC896 などで規定されているもので、小さなネットワークパケットが頻繁にネットワーク上を飛び交うの抑えるためのものです。
 送信データのサイズがMSSを超えない場合に、全ての送信パケットにAckが帰ってくるまで送信バッファを遅延させるのですが、Windowsではこのタイムアウトがデフォルトで200msになっているのでうまく帰ってこないときはパケットが200msほど遅延してから送信されます。小さな遅延に思うかもしれないですが、パケット単位で周期的にこの遅延が起こると結構な影響を受けてしまいます。

 更に悪い事にこれは遅延Ack(Delayed ACK)を相手側が有効にしていると、受け手はAckをバッファリングするので更に応答遅延してしまったりもするし、色々な場面でヒットします。

と言うわけで、Notesでヒットする事は度々あるのですが、ネットワーク関連の話になると話が分かりにくく感じてしまう部分もあるかと思うので、関連症状に当たったらちょっとこの可能性は無いかな?と思い出してもらえるといいかな、と思います。




コメント

  1. 大川宗之 | URL | -

    Re: Nagle algorithm

    僕も何度かこれにぶち当たりました。そのうちの1つは、サーバーエージェントから大量にメールを送るというアプリケーションが、サーバーをバージョンアップさせたら遅くなったという現象でした。一見、ネットワークとは関係なさそうなところでも影響があるので厄介です。8.5からデフォルト無効なんですね。良かったです。

  2. 長島 | URL | -

    そんな事例もあったのですね

    なるほど。。

    どうもNagle アルゴリズムの話は、「ちりも積もれば・・・」のような事例が多いみたいですね。
    メール一通の遅延だけを取ればそれほどでもなかったと思うのですが、たくさん送っているとバカに出来ない差になったのでしょうか。。。

コメントの投稿

(コメント編集・削除に必要)
(管理者にだけ表示を許可する)

トラックバック

この記事のトラックバックURL
http://hnagasim.blog8.fc2.com/tb.php/116-76fa38a9
この記事へのトラックバック


最新記事