Ngnix hash表如何进行请求快速反应

开发 前端
Ngnix hash表在使用的时候需要我们不断的进行相关问题的掌握,下面我们就来详细的学习下有关的内容。希望大家不断的学习中掌握技巧。

用Ngnix hash表来协助完成请求的快速处理需要我们明白到底是一个什么意思。下面我们就来看看有关的问题如何进行解决,希望大家在之后的使用中有所收获。

考虑到保存键及其值的Ngnix hash表存储单元的大小不至于超出设定参数(hash bucket size), 在启动和每次重新配置时,Nginx为hash表选择尽可能小的尺寸。

直到hash表超过参数(hash max size)的大小才重新进行选择. 对于大多数Ngnix hash表都有指令来修改这些参数。例如,保存服务器名字的hash表是由指令 server_names_hash_max_size 和 server_names_hash_bucket_size所控制的。参数hash bucket size总是等于hash表的大小,并且是一路处理器缓存大小的倍数。在减少了在内存中的存取次数后,使在处理器中加速查找hash表键值成为可能。

如果hash bucket size等于一路处理器缓存的大小,那么在查找键的时候,最坏的情况下在内存中查找的次数为2。***次是确定存储单元的地址,第二次是在存储单元中查找键值。因此,如果Nginx给出需要增大 hash max size 或 hash bucket size的提示,那么首要的是增大前一个参数的大小.

事件模型

Nginx支持如下处理连接的方法(I/O复用方法),这些方法可以通过use指令指定。

select - 标准方法。 如果当前平台没有更有效的方法,它是编译时默认的方法。你可以使用配置参数 --with-select_module 和 --without-select_module 来启用或禁用这个模块。

poll - 标准方法。 如果当前平台没有更有效的方法,它是编译时默认的方法。你可以使用配置参数 --with-poll_module 和 --without-poll_module 来启用或禁用这个模块。

kqueue - 高效的方法,使用于 FreeBSD 4.1+, OpenBSD 2.9+, NetBSD 2.0 和 MacOS X. 使用双处理器的MacOS X系统使用kqueue可能会造成内核崩溃。

epoll - 高效的方法,使用于Linux内核2.6版本及以后的系统。在某些发行版本中,如SuSE 8.2, 有让2.4版本的内核支持epoll的补丁。

rtsig - 可执行的实时信号,使用于Linux内核版本2.2.19以后的系统。默认情况下整个系统中不能出现大于1024个POSIX实时(排队)信号。这种情况对于高负载的服务器来说是低效的;所以有必要通过调节内核参数 /proc/sys/kernel/rtsig-max 来增加队列的大小。

Ngnix hash表可是从Linux内核版本2.6.6-mm2开始, 这个参数就不再使用了,并且对于每个进程有一个独立的信号队列,这个队列的大小可以用 RLIMIT_SIGPENDING 参数调节。当这个队列过于拥塞,nginx就放弃它并且开始使用 poll 方法来处理连接直到恢复正常。

/dev/poll - 高效的方法,使用于 Solaris 7 11/99+, HP/UX 11.22+ (eventport), IRIX 6.5.15+ 和 Tru64 UNIX 5.1A+.

eventport - 高效的方法,使用于 Solaris 10. 为了防止出现内核崩溃的问题, 有必要安装 这个 安全补丁。以上就是对Ngnix hash表使用的相关介绍。希望大家有所收获。

【编辑推荐】

  1. Nginx状态监控如何实现自己的作用
  2. Linux Nginx基本操作与配置
  3. Linux Nginx最基础的十大安装步骤
  4. Nginx反向代理与服务器的配置缓冲
  5. 深入学习有关Nginx负载均衡的安装过程

 

责任编辑:张浩 来源: 博客园
相关推荐

2010-09-17 13:35:30

SQL跨表更新

2010-09-28 14:52:37

SQL表结构

2016-12-12 16:17:22

华为

2009-02-02 13:43:19

故障检测数据库

2013-10-17 23:12:12

Windows 8.1Windows 8.1

2017-07-28 11:31:59

iOS结构优化项目

2010-09-17 15:36:24

2021-08-26 10:05:31

APP安全加密网络攻击

2010-06-03 11:01:32

Hadoop安装部署

2010-02-01 10:21:36

Python编码转换

2010-02-22 16:05:40

Python配置

2013-01-28 10:11:24

敏捷设计敏捷开发

2009-12-08 11:34:40

WCF Windows

2024-07-08 08:38:37

Python游戏开发

2012-07-23 08:30:51

Java快速开发

2023-03-24 16:18:08

微服务架构

2010-06-02 14:16:18

SVN版本控制

2011-07-28 14:07:30

2010-02-03 13:55:51

Python 代码

2010-07-21 14:17:07

Linux telne
点赞
收藏

51CTO技术栈公众号