diaryこの広告は、90日以上更新していないブログに表示しています。2015-01-01Backlogってなんぞやはじめにサーバソフトウェアの設定ファイル等でよく見かける項目であるBacklogってどういう意味なんだろうと、少し調べたのでメモを残します。Backlogapacheやnginx、memchachedなどのサーバ系ソフトウェアの設定ファイルの中で設定することが多い、このBacklogとは何なのかをここでは言及する。サーバアプリケーションがlistenしているソケットがacceptしていない、確立済TCPセッションを何個までOS側で保持するかを定義したもの。下記のようなサーバーアプリケーションがあるとする。print("ここは到達しないコード")上記のサーバアプリケーションに、5個の接続要求(telnetとかを使って)を出すと。3個目までTCPコネクションが確立され、4,5個目の接続要求は無視される。netstatで確認してみると、下記のようになる。LISTENコードを見てもらうと分かる通り、サーバ(server.py)では2回しかacceptされていないが、netstatでは下記の3つセッションが確立できていることが分かる(ESTABLISHED)127.0.0.1.52601と127.0.0.1.6001127.0.0.1.52600と127.0.0.1.6001127.0.0.1.52599と127.0.0.1.6001これは、server.pyからは2つのコネクションしか見えていないが、残りの1つのセッションはOS側で保持してくれていることが分かる、この何個のセッションをOS側で面倒見るかを定義したものがbacklogである。今回は、backlog=1でサーバソケットをlistenしているため3個目のリクエストはセッションが確立されたが4、5個目のリクエストはクライアントからSYNパケットを送っているが、サーバに無視されている。これらの挙動を図にまとめるとこんな感じになる。注目していただきたいのは下記の点ソケットキューの大きさがbacklog数ソケットキューは、サーバソケットごと(=port)ごとに作成されるaccept()システムコールが呼ばれると、確立済のTCPセッションはソケットキューから削除され、ファイルディスクリタに登録される(関連づけられる)maxconnソケットキューの長さの最大値を定義するカーネルパラメーター、128がデフォルトで定義されている。backlogでmaxconnより大きな数字を定義しても、maxconnの値が優先されます。読者になる検索リンクヘルプはてなブログお知らせ最新記事OpenStackで使用されているプラグイン機構Stevedoreの使い方pythonパッケージからdebファイルを作成するIronicをDevstackでサク?っと試してみたRack、WSGIサーバのThread処理の実装について(1)Backlogってなんぞや月別アーカイブはてなブログをはじめよう!ukinauさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。