设置哈希

为了快速处理服务器名称、map 指令的值、MIME 类型、请求头字符串的名称等静态数据集,nginx 使用哈希表。在启动和每次重新配置期间,nginx 会选择哈希表的最小可能大小,以便存储具有相同哈希值的键的存储桶大小不会超过配置的参数(哈希存储桶大小)。表的大小以存储桶表示。调整将持续到表大小超过哈希最大大小参数。大多数哈希都有相应的指令允许更改这些参数,例如,对于服务器名称哈希,它们是 server_names_hash_max_sizeserver_names_hash_bucket_size

哈希存储桶大小参数与处理器的缓存行大小的倍数大小对齐。这通过减少内存访问次数,从而加快了现代处理器上哈希中的键搜索速度。如果哈希存储桶大小等于一个处理器的缓存行大小,则在最坏的情况下,键搜索期间的内存访问次数将为两次——第一次计算存储桶地址,第二次在存储桶内搜索键。因此,如果 nginx 发出消息请求增加哈希最大大小或哈希存储桶大小,则应首先增加第一个参数。