Ngnix uses a hash table to assist in the fast processing of requests.
Considering that the size of the hash table storage unit that saves keys and their values will not exceed the set parameter (hash bucket size), Nginx is hashed during startup and each reconfiguration. Choose the smallest possible table size.(Recommended learning:nginx use)
until the size of the Hash table exceeds the parameter (Hash Max Size) before re -selection. parameter. For example, the hash table that stores server names is controlled by the instructions
server_names_hash_max_size
and
server_names_hash_bucket_size
. The parameter hash bucket size is always equal to the size of the hash table and is a multiple of the processor cache size. After reducing the number of accesses in memory, it is possible to speed up the search for hash table key values in the processor.
If the hash bucket size is equal to the size of the processor cache, then when searching for a key, the number of searches in the memory is 2 in the worst case. The first time is to determine the address of the storage unit, and the second time is to find the key value in the storage unit.
Therefore, if Nginx gives a prompt that the hash max size or hash bucket size needs to be increased, the first thing is to increase the size of the previous parameter.
Event Model
Nginx supports the following connection processing methods (I/O multiplexing methods), these methods can be specified through the
use
directive.
select - Standard method. It is the compile-time default method if there is no more efficient method for the current platform. You can enable or disable this module using the configuration parameters
--with-select_module
and
--without-select_module
.
poll - Standard method. It is the compile-time default method if there is no more efficient method for the current platform. You can enable or disable this module using the configuration parameters
--with-poll_module
and
--without-poll_module
.
kqueue - Efficient method, used in FreeBSD 4.1, OpenBSD 2.9, NetBSD 2.0 and MacOS X. Using kqueue on a dual-processor MacOS X system may cause a kernel panic.
epoll - An efficient method, used in Linux kernel version 2.6 and later systems. In some distributions, such as SuSE 8.2, there is a patch to support epoll in the 2.4 kernel.
rtsig - executable real-time signal, used on systems with Linux kernel version 2.2.19 or later. By default, no more than 1024 POSIX real-time (queued) signals can appear in the entire system. This situation is inefficient for heavily loaded servers; so it is necessary to increase the queue size by adjusting the kernel parameter
/proc/sys/kernel/rtsig-max
. However, starting from Linux kernel version 2.6.6-mm2, this parameter is no longer used, and there is an independent signal queue for each process. The size of this queue can be adjusted with the RLIMIT_SIGPENDING parameter. When this queue becomes too congested, nginx abandons it and starts using the
poll
method to handle connections until normalcy returns.
/dev/poll - Efficient method, used on Solaris 7 11/99, HP/UX 11.22 (eventport), IRIX 6.5.15 and Tru64 UNIX 5.1A.
eventport - Efficient The method is used on Solaris 10. In order to prevent kernel crashes, it is necessary to install this security patch.
The above is the detailed content of How to optimize nginx. For more information, please follow other related articles on the PHP Chinese website!