設定雜湊
為了快速處理靜態數據集,例如伺服器名稱、map 指令的值、MIME 類型、請求標頭字串的名稱,nginx 使用雜湊表。在啟動和每次重新配置期間,nginx 會選擇最小可能的雜湊表大小,以便儲存具有相同雜湊值的鍵的儲存桶大小不超過設定的參數(雜湊儲存桶大小)。表的大小以儲存桶表示。調整會持續進行,直到表的大小超過雜湊最大大小參數。大多數雜湊都有對應的指令,允許更改這些參數,例如,伺服器名稱雜湊的參數為 server_names_hash_max_size 和 server_names_hash_bucket_size。
雜湊儲存桶大小參數會對齊到處理器的快取行大小的倍數。這可以透過減少記憶體存取的次數來加速現代處理器中雜湊中的鍵搜尋。如果雜湊儲存桶大小等於一個處理器的快取行大小,那麼在最壞的情況下,鍵搜尋期間的記憶體存取次數將為兩次 - 第一次是計算儲存桶位址,第二次是在儲存桶內進行鍵搜尋。因此,如果 nginx 發出要求增加雜湊最大大小或雜湊儲存桶大小的消息,則應首先增加第一個參數。