设置哈希

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

哈希桶大小参数被对齐到是处理器缓存行大小的倍数。这可以通过减少内存访问次数来加快现代处理器上哈希中的关键搜索。如果哈希桶大小等于一个处理器的缓存行大小,那么在最坏的情况下关键搜索期间的内存访问次数将是两次 —— 第一次用于计算桶地址,第二次用于在桶内进行关键搜索。因此,如果nginx发出消息要求增加哈希最大大小或哈希桶大小,则应首先增加第一个参数。