Kernel parameter adjustment
Ulimit -n should be adjusted to 100000 or more. Execute ulimit -n 100000 from the command line to modify it. If you can't modify it, you need to set /etc/security/limits.conf to join.
* soft nofile 262140 * hard nofile 262140 root soft nofile 262140 root hard nofile 262140 * soft core unlimited * hard core unlimited root soft core unlimited root hard core unlimited
Note that after modifying the
limits.conf file, you need to restart the system to take effect.
Linux operating system has three ways to modify kernel parameters:
- Modify the
/etc/sysctl.conffile, add configuration options, the format is
key = value, modify the save and call
sysctl -pto load the new configuration.
- Use the
sysctlcommand to temporarily modify it, such as:
sysctl -w net.ipv4.tcp_mem="379008 505344 758016"
- Directly modify the files in the
/proc/sys/directory, such as:
echo "379008 505344 758016" > /proc/sys/net/ipv4/tcp_mem
The first method will take effect automatically after the operating system restarts, and the second and third methods will fail after restarting.
net.unix.max_dgram_qlen = 100
Swoole uses unix socket dgram for interprocess communication. If the request volume is large, you need to adjust this parameter. The system defaults to 10 and can be set to 100 or greater.
Or increase the number of worker processes and reduce the amount of requests allocated by a single worker process.
Modify this parameter to increase the memory size of the socket cache.
net.ipv4.tcp_mem = 379008 505344 758016 net.ipv4.tcp_wmem = 4096 16384 4194304 net.ipv4.tcp_rmem = 4096 87380 4194304 net.core.wmem_default = 8388608 net.core.rmem_default = 8388608 net.core.rmem_max = 16777216 net.core.wmem_max = 16777216
Whether socket reuse, the function of this function is to quickly re-use the listening port when the server restarts. If this parameter is not set, the port will not be released in time and the startup will fail when the server is restarted.
Use socket to quickly recycle. Short connection server needs to enable this parameter. This parameter indicates that the fast recovery of TIME-WAIT sockets in the TCP connection is enabled. In Linux, the default is 0, which means it is closed. Turning on this parameter may cause the NAT user connection to be unstable. Please test it carefully before turning it on.
Message queue settings
This kernel parameter needs to be adjusted when using Message Queuing as the interprocess communication method.
- kernel.msgmnb = 4203520, The maximum number of bytes in the message queue
- kernel.msgmni = 64, How many message queues are allowed to be created
- kernel.msgmax = 8192, Message queue single data maximum length
- sysctl -w net.local.dgram.maxdgram=8192
- sysctl -w net.local.dgram.recvspace=200000 Modify the buffer area size of Unix Socket
Set kernel parameters
kernel.core_pattern = /data/core_files/core-%e-%p-%t
View the current limit of the coredump file by using the ulimit -c command
If it is 0, you need to modify /etc/security/limits.conf to set the limit.
After core-dump is turned on, the process is exported to a file once an exception occurs in the program. Great help for investigating procedural issues
Other important configurations
- net.ipv4.tcp_fin_timeout = 30
- net.ipv4.tcp_keepalive_time = 300
- net.ipv4.tcp_tw_reuse = 1
- net.ipv4.tcp_tw_recycle = 1
- net.ipv4.ip_local_port_range = 20000 65000
- net.ipv4.tcp_max_tw_buckets = 200000
- net.ipv4.route.max_size = 5242880
Check whether the configuration takes effect
Such as: modify net.unix.max_dgram_qlen = 100, through
If the modification is successful, here is the newly set value.