设置哈希表
为了快速处理静态数据集,例如服务器名称、map 指令的值、MIME 类型、请求头字符串的名称,Nginx 使用哈希表。在启动和每次重新配置期间,Nginx 会选择尽可能小的哈希表大小,以确保存储具有相同哈希值的键的桶的大小不超过配置的参数(哈希桶大小)。表的大小以桶为单位表示。调整将持续进行,直到表的大小超过哈希最大大小参数。大多数哈希都有相应的指令允许更改这些参数,例如,对于服务器名称哈希,它们是 server_names_hash_max_size 和 server_names_hash_bucket_size。
哈希桶大小参数会对齐到处理器缓存行大小的倍数。这可以通过减少内存访问次数来加快现代处理器上哈希中的键搜索速度。如果哈希桶大小等于一个处理器的缓存行大小,则在最坏情况下,键搜索期间的内存访问次数将为两次——第一次计算桶地址,第二次在桶内搜索键。因此,如果 Nginx 发出请求增加哈希最大大小或哈希桶大小的消息,则应首先增加第一个参数。