Home  >  Article  >  Backend Development  >  nginx server system optimization

nginx server system optimization

WBOY
WBOYOriginal
2016-08-08 09:32:57943browse

1 Linux default core file size is 0

What is a core file? When a program crashes, the storage image of the process is copied in the core file in the current working directory of the process. The core file is just a memory image (plus debugging information), mainly used for debugging. The core file is a binary file, and corresponding tools need to be used to analyze the memory image when the program crashes.

The system default core file size is 0, so it is not created. You can use the ulimit command to view and modify the size of the core file.

$ulimit -c

0

$ ulimit -c 1000

$ulimit-c

1000

-c specifies to modify the core file size, 1000 specifies the core file size. You can also set no limit on the size of the core file, such as:

# ulimit -c unlimited

#ulimit -c

Unlimited

If you want the changes to take effect permanently, you need to modify the configuration file

In Vim /etc/profile:

ulimit -S -c 0 > /dev/null 2>&1

change into

ulimit -S -c 1000 > /dev/null 2>&1

Reference: http://hi.baidu.com/jrckkyy/blog/item/2562320a5bdbc534b1351d95.html

2 The default value of linux open files and max user processes is 1024

#ulimit -n

1024

#ulimit –u

1024

Problem description: Description: The server only allows 1024 files to be opened at the same time and handles 1024 user processes.

Use ulimit -a to view all limit values ​​of the current system, and use ulimit -n to view the current maximum number of open files.

The newly installed Linux only has 1024 by default. When used as a server with a heavy load, it is easy to encounter error: too many open files. Therefore, it needs to be made larger.

Solution:

Use ulimit –n 65535 to modify it immediately, but it will be invalid after restarting. (Note that ulimit -SHn 65535 is equivalent to ulimit -n 65535, -S refers to soft, and -H refers to hard)

There are three modification methods:

1. Add a line ulimit -SHn 65535
to /etc/rc.local 2. Add a line ulimit -SHn 65535
to /etc/profile 3. Add at the end of /etc/security/limits.conf:

*soft nofile 65535
*hard nofile 65535
* soft nproc 65535
*hard nproc 65535

Which one to use specifically? The first method has no effect in CentOS, the third method has an effect, and the second method has an effect in Debian.

# ulimit -n

65535

# ulimit -u

65535

Note: The ulimit command itself has soft and hard settings. Add -H for hard, add -S for soft. The default display is soft limit.

The soft limit refers to the setting value in effect on the current system. The hard limit value can be lowered by ordinary users. But it cannot be increased. The soft limit cannot be set higher than the hard limit. Only the root user can increase the hard limit value.

3 Found that there are a large number of connections in TIME_WAIT state


Problem description: A large number of connections in time_wait state were found, sometimes even reaching more than 7000

netstat -n | awk '/^tcp/ {++state[$NF]} END {for(key in state) print key,"t",state[key]}'

Find more time_wait connections

netstat -n|grep TIME_WAIT|awk '{print $5}'|sort|uniq -c|sort -rn|head -n20

It was found that the mysql and memcache of the DB server were not released.

Solution: For applications that use a large number of tcp connections, the parameters in /etc/sysctl.conf also need to be optimized accordingly:

vim /etc/sysctl.conf

Edit the file and add the following content:

net.ipv4.tcp_syncookies = 1

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_tw_recycle = 1

net.ipv4.tcp_fin_timeout = 30

Then execute /sbin/sysctl -p to make the parameters take effect.

Optimized:

It was found that a large number of TIME_WAIT no longer existed, and the occupancy rate of the mysql process quickly dropped.

The above has introduced nginx server system optimization, including aspects of it. I hope it will be helpful to friends who are interested in PHP tutorials.

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Previous article:nginx version upgradeNext article:nginx version upgrade