Setting up hashes
设置哈希
要快速处理静态数据集(如服务器名称,map指令的值,MIME类型,请求标头字符串的名称),nginx会使用散列表。在开始和每次重新配置期间,nginx选择最小可能的散列表大小,以便存储具有相同散列值的关键字的存储区大小不超过配置的参数(散列存储区大小)。表格的大小用桶表示。调整将继续,直到表大小超过散列最大大小参数。大多数散列具有相应的指令,允许更改这些参数,例如,对于服务器名称散列,它们是server_names_hash_max_size和server_names_hash_bucket_size。
哈希桶大小参数与大小为处理器的高速缓存行大小的倍数对齐。这通过减少内存访问次数来加速现代处理器散列中的关键搜索。如果散列桶大小等于一个处理器的高速缓存行大小,那么在最差情况下密钥搜索期间的内存访问次数将是两次 - 首先计算桶地址,第二次在桶内的密钥搜索期间。因此,如果nginx发出请求增加散列最大大小或散列桶大小的消息,则应首先增加第一个参数。