· Linux系统内核参数优化及文件句柄数优化
## 优化内核参数的意义:
内核参数在Linux系统中具有重要意义,它们控制着系统的各种行为,包括内存管理、网络设置、系统错误处理等。
内存管理:
vm.swappiness:控制交换空间与物理内存的使用程度,影响系统性能。
vm.drop_caches:用于清空缓存,释放内存占用。
网络设置:
net.ipv4.ip_forward:控制数据包的路由转发。
net.ipv4.tcp_max_tw_buckets:设置TCP最大的timewait数量,避免连接溢出。
net.ipv4.tcp_keepalive_time:控制TCP连接的保活时间,提高网络稳定性。
系统错误处理:
kernel.panic:控制系统在遇到严重错误时的行为,如重启或等待用户处理。
通过调整这些参数,管理员可以优化系统性能,提高系统的稳定性和安全性
那么如何取优化调整内核参数和句柄数呢?这其中又有什么关联呢,让我们带着这样的疑问进入正题
内核参数优化(包含常用的一些参数)
vim /etc/sysctl.conf
#禁止IP转发功能(0表示不开启,1表示开启,如果将linux系统作为路由或者VPN服务就必要要开启)
net.ipv4.ip_forward = 0
#减少DDoS攻击,方式IP Spofing(0表示不开启,1表示开启)
net.ipv4.conf.default.rp_filter = 1
#禁用所有IP源路由(0表示不开启,1表示开启)
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.conf.all.accept_redirects=0
net.ipv4.conf.all.rp_filter = 1
kernel.sysrq = 0
#控制core文件的文件名是否添加pid作为扩展(0表示不开启,1表示开启)
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
#每个消息队列大小限制(单位:字节)
kernel.msgmnb = 65536
kernel.msgmax = 65536
#单个共享内存段的大小(单位:字节)
kernel.shmmax = 68719476736
#所有内存大小(单位:字节)
kernel.shmall = 4294967296
#这个参数指定了当文件系统缓存脏页数量达到系统内存百分之多少时(如5%),就会触发pdflush/fluh/kdmflush等后台回写进程运行,将一定缓存的脏页异步地刷入外存
vm.dirty_background_ratio = 5
#避免瞬间I/O写,产生严重等待(一般设置为上面参数的2倍左右)
vm.dirty_ratio = 10
#表示开启SYN Cookies,当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击(0表示不开启,1表示开启)
net.ipv4.tcp_syncookies = 1
#表示开启重用
net.ipv4.tcp_tw_reuse = 1
#表示系统级别上允许打开的最大文件句柄数
fs.file-max = 3000000
#表示单个进程能够打开的最大文件句柄数
fs.nr_open = 2048000
net.ipv4.ip_local_port_range = 1024 65535
net.nf_conntrack_max = 4194304
net.netfilter.nf_conntrack_max = 4194304
net.netfilter.nf_conntrack_tcp_timeout_established = 3600
net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120
net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60
net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120
文件句柄数修改
vim /etc/security/limits.conf
* soft nproc 800000
* hard nproc 800000
* soft nofile 800000
* hard nofile 800000
* soft stack unlimited
* hard stack unlimited
说明:
soft nproc:单个用户可用的最大进程数软限制。
soft nofile:单个用户可打开的最大文件数软限制。
soft stack:用户态堆栈大小软限制。
这里要注意,修改文件句柄遇到的坑-----绝对要注意否则错误的设置会导致你的服务器无法登录
在2.6.25内核之前有个宏定义,定义了这个值的最大值,为1024*1024,正好是100万(也有说是102万),
而在2.6.25内核及其之后,这个值是可以通过 cat /proc/sys/fs/nr_open 来查看,该值通过 /ect/sysct.conf 文件中 fs.nr_open 值指定,修改后 sysctl -p 生效。
修改句柄数在 /etc/security/limits.conf 配置文件中,如果不进行配置,用户open files 限制为默认值1024。 ////// 但是要注意的是:/etc/security/limits.conf 中配置 nofile 参数是有限制的
!!!!!如果 /etc/security/limits.conf 中配置的 nofile 参数超出 /ect/sysct.conf 文件中 fs.nr_open 的值,会导致服务器无法通过SSH登陆。
320

被折叠的 条评论
为什么被折叠?



