centOS7内核参数调整

  • 打开文件数

lsof -u 【用户】 | wc -l   #查看某用户已打开文件数量
lsof -p 【pid】 | wc -l   #查看某进程已打开文件数量

#修改内核参数
[root@centos1 ~]# sysctl -a|egrep 'file-max|nr_open'  #查看当前值
fs.file-max = 85204 #所有进程可打开的文件句柄的数量限制
fs.nr_open = 1048576 #单个进程打开文件句柄数上限
[root@centos1 ~]# vi /etc/sysctl.conf
fs.file-max = 6553600
fs.nr_open = 1048576
[root@centos1 ~]# sysctl -p #生效
[root@centos1 ~]#

#修改用户级别的配置参数,不能超过内核参数的值
[root@centos1 ~]# ulimit -a|grep 'open files' #查看当前值
open files                      (-n) 1024
[root@centos1 ~]# vi /etc/security/limits.conf #退出重新登录shell即可生效
* - nofile 99999 #-就包含了hard和soft
[root@centos1 ~]# #如不生效,可修改/etc/security/limits.d/*.conf试试
  • 创建进程数
    ps h -Led -o user | sort | uniq -c | sort -n#查看所有用户创建的进程数
#修改内核参数
[root@centos1 ~]# sysctl kernel.pid_max
kernel.pid_max = 131072
[root@centos1 ~]#vi /etc/sysctl.conf
kernel.pid_max = 66666
[root@centos1 ~]# sysctl -p #生效
[root@centos1 ~]#

#修改用户级别的配置参数,不能超过内核参数的值
[root@centos1 ~]# ulimit -a|grep 'max user processes' #查看当前值
max user processes              (-u) 3539
[root@centos1 ~]# vi /etc/security/limits.conf #退出重新登录shell即可生效
* - nproc 66666 #-就包含了hard和soft
[root@centos1 ~]# #如不生效,可修改/etc/security/limits.d/20-nproc.conf 试试,其他用户要重新登录再试
  • 内存锁定值
    说明:对于应用程序来说,可以将内存中一些对程序性能影响较大的数据lock起来,避免非预期的页面回收或者换入/换出引起性能波动
    解决告警:RLIMIT_MEMLOCK too small
[root@centos1 ~]# ulimit -a|grep 'max locked memory' #查看当前值
max locked memory       (kbytes, -l) 64
[root@centos1 ~]# vi /etc/security/limits.conf #退出重新登录shell即可生效
* - memlock unlimited
[root@centos1 ~]#
  • (vm.max_map_count) 65530 is too low
[root@centos1 ~]# sysctl vm.max_map_count #查看当前值
vm.max_map_count = 65530
[root@centos1 ~]# vi /etc/sysctl.conf #修改
vm.max_map_count = 1048575
[root@centos1 ~]# sysctl -p #生效
[root@centos1 ~]#
  • 解决问题:TCP连接出现大量TIME_WAIT的解决办法
vi /etc/sysctl.conf
net.ipv4.tcp_syncookies = 1 #表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量DDoS、CC和SYN攻击,默认为0,表示关闭;
net.ipv4.tcp_tw_reuse = 1 #表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;
net.ipv4.tcp_tw_recycle = 1 #表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭;
net.ipv4.tcp_fin_timeout = 30 #套接字由本端要求关闭时,TCP连接保持在FIN-WAIT-2状态的时间。缺省是60秒,改为30秒
net.ipv4.tcp_keepalive_time = 600 #表示当keepalive起用的时候,TCP发送keepalive消息的频度。缺省是2小时,改为10分钟
net.ipv4.tcp_keepalive_intvl=60 #探测包发送的时间间隔设置为60秒,默认75秒
net.ipv4.tcp_keepalive_probes=3 #如果对方不给予应答,探测包发送的次数,默认9次
net.ipv4.tcp_max_syn_backlog = 2048 #表示SYN队列的长度,默认为1024,加大队列长度为8192,可以容纳更多等待连接的网络连接数。
net.ipv4.tcp_max_tw_buckets = 5000 #表示系统同时保持TIME_WAIT的最大数量,如果超过这个数字,TIME_WAIT将立刻被清除并打印警告信息。
                                   #默 认为180000,改为5000。对于Apache、Nginx等服务器,上几行的参数可以很好地减少TIME_WAIT套接字数量,但是对于 Squid,效果却不大。

最后输入下面的命令,让内核参数生效:
sysctl -p

猜你喜欢

转载自blog.csdn.net/mnbwz/article/details/113794403