设置哈希表

为了快速处理静态数据集,例如服务器名称、map 指令的值、MIME 类型、请求头字符串的名称,nginx 使用哈希表。

在启动和每次重新配置期间,nginx 会选择最小可能的哈希表大小,以便存储具有相同哈希值的键的桶大小不超过配置的参数(哈希桶大小)。

表的大小以桶表示。

持续调整一直到表大小超过 hash max size 参数。

大多数散列具有允许更改这些参数的相应指令,例如,对于服务器名称散列,它们是 server_names_hash_max_size 和 server_names_hash_bucket_size。

哈希桶大小参数与处理器缓存行大小的倍数大小对齐。这通过减少内存访问次数来加速现代处理器上散列中的 key 搜索。

如果哈希桶大小等于一个处理器的缓存行大小,那么在最坏的情况下,key 搜索期间的内存访问次数将是两次 —— 首先是计算桶地址,第二次是在桶内的 key 搜索期间。

因此,如果 nginx 发出请求增加哈希最大大小或哈希桶大小的消息,则应首先增加第一个参数。

说说我的看法
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号