ハッシュの設定

サーバ名、ディレクティブの値のmap, MIME type, リクエストヘッダ文字列の名前 のような静的なデータのセットをすばやく処理するために、nginxはハッシュテーブルを使います。開始と再設定の際に、nginxはキーと同一のハッシュ値を保持するバケットサイズが設定された値(hash bucket size)を超えないようなできるだけ最小限になるハッシュテーブルのサイズを選択します。テーブルのサイズはバケットで表現されます。この調整はテーブルのサイズがハッシュの最大サイズパラメータを超えるまで続けられます。ほとんどのハッシュはパラメータが変更できる対応するディレクティブをもちます。例えば、サーバ名のハッシュは、 server_names_hash_max_sizeserver_names_hash_bucket_sizeです。

ハッシュのバケットサイズパラメータは、プロセッサのキャッシュラインサイズの倍数のサイズに揃えられます。これにより、最近のプロセッサではメモリアクセスの回数を減らすことでハッシュのキー検索をスピードアップします。ハッシュのバケットサイズがプロセッサのキャッシュラインサイズと同じ場合、キー検索の間のメモリアクセスの回数は最悪で2回です - 1回目はバケットのアドレスを計算し、二回目はバケットの中でキー検索を行います。従って、もしnginxがハッシュ最大サイズまたはハッシュパケットサイズの増加のリクエストメッセージを出している場合は、最初のパラメータをまず増やす必要があります。

TOP
inserted by FC2 system