您的位置 首页 nginx优化

文件句柄的设置方式(/etc/security/limits.conf) 调整内核参数:让time_wait状态重用

.句柄数、文件数、线程数

Linux 对于每个用户,系统限制其最大进程数。为提高性能,可以根据设备资源情况,设置各 linux 用户的最大进程数

可以用 ulimit -a 来显示当前的各种用户进程限制。

nproc 代表用户最大进程数

nofile 代表用户进程打开文件数,如果超过此数就自动退出---用户进程访问文

件的句柄数量--可以打开文件描述符的最大值

 

1 句柄

文件句柄的设置方式:
1、系统全局性修改。
2、用户局部性修改。
3、进程局部性修改。

文件句柄,Linux一切皆文件,文件句柄可以理解为就是一个索引,文件句柄会随着我们进程的调用频繁增加,系统默认文件句柄是有限制的,不能让一个进程无限的调用,所以我们需要限制每个 进程和每个服务使用多大的文件句柄,文件句柄也是必须要调整的优化参数。

[root@lb01 ~]# vim /etc/security/limits.conf

1、系统全局性修改。
# * 代表所有用户
* soft nofile 25535
* hard nofile 25535

2.用户局部性修改
#针对root用户,soft仅提醒,hard限制,nofile打开最大文件数
root soft nofile 65535
root hard nofile 65535

3.进程局部性修改
#针对nginx进程,nginx自带配置
worker_rlimit_nofile 30000

 

2 进程数

 

* soft nproc 196605
* hard nproc 196605

 

 

nproc 代表用户最大进程数
nofile 代表用户进程打开文件数,如果超过此数就自动退出---用户进程访问文
件的句柄数量--可以打开文件描述符的最大值

core 限制 core 文件的大小 kb
data 最大数据大小
fsize 最大文件大小
stack 最大栈大小
cpu 以分钟为单位的最多 cpu 时间

 

 

4.调整内核参数:让time_wait状态重用(端口重用)[flag]
[root@web01 ROOT]# vim /etc/sysctl.conf
net.ipv4.tcp_tw_reuse = 1     # 开启端口复用
net.ipv4.tcp_timestamps = 0   # 禁用时间戳
需要自己手动加
[root@web01 ROOT]# sysctl -p    #可以查看我们添加的内核参数
[root@web01 ROOT]# sysctl -a    #可以查看所有内核参数

 

在高并发短连接的TCP服务器上,当服务器处理完请求后立刻主动正常关闭连接。这个场景下会出现大量socket处于TIME_WAIT状态。如果客户端的并发量持续很高,此时部分客户端就会显示连接不上。 我来解释下这个场景。主动正常关闭TCP连接,都会出现TIMEWAIT。

为什么我们要关注这个高并发短连接呢?有两个方面需要注意:

1. 高并发可以让服务器在短时间范围内同时占用大量端口,而端口有个0~65535的范围,并不是很多,刨除系统和其他服务要用的,剩下的就更少了。
2. 在这个场景中,短连接表示业务处理+传输数据的时间 远远小于 TIMEWAIT超时的时间的连接。

这里有个相对长短的概念,比如取一个web页面,1秒钟的http短连接处理完业务,在关闭连接之后,这个业务用过的端口会停留在TIMEWAIT状态几分钟,而这几分钟,其他HTTP请求来临的时候是无法占用此端口的(占着茅坑不拉翔)。单用这个业务计算服务器的利用率会发现,服务器干正经事的时间和端口(资源)被挂着无法被使用的时间的比例是 1:几百,服务器资源严重浪费。(说个题外话,从这个意义出发来考虑服务器性能调优的话,长连接业务的服务就不需要考虑TIMEWAIT状态。同时,假如你对服务器业务场景非常熟悉,你会发现,在实际业务场景中,一般长连接对应的业务的并发量并不会很高。

禁止时间戳

 

欢迎来撩 : 汇总all

白眉大叔

关于白眉大叔linux云计算: 白眉大叔

热门文章