设置哈希

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

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