设置哈希表 | english русский 简体中文 עברית 日本語 türkçe 新闻 [en] nginx 介绍 下载 [en] 安全漏洞 [en] 文档 FAQ 外部连接 [en] 书籍 [en] 支持 [en] 捐献 [en] trac wiki nginx.com |
为了快速处理静态的数据集合,诸如虚拟主机名、 map指令的值、 MIME类型和请求头的字段名,nginx使用了哈希表。 在nginx启动和更新配置的过程中,它会尽可能为哈希表选择最小的容量, 同时使每个哈希桶的长度不超过设置的配置参数。这些桶用于保存键和对应的哈希值。 整个哈希表的容量以哈希桶的数量来定义。 nginx不断调整哈希表直到哈希表容量超过配置的最大值。 大部分哈希表都有对应的指令,允许修改这些配置参数。 比如,针对虚拟主机名的哈希表,有server_names_hash_max_size 和server_names_hash_bucket_size两条指令。 哈希桶大小的参数会对齐到处理器缓存线长度的整数倍。 这将加速哈希表中的键查找,因为在现代的处理器上,这可以减少内存访问的次数。 如果哈希桶大小等于处理器的缓存线长度,那么在最坏情况下,键查找时的内存访问次数是两次—— 第一次是计算哈希桶的地址,第二次是在哈希桶内进行键查找。 因此,如果nginx提示需要增大哈希表容量或者哈希桶大小时,应优先增大前者。
|