引言
DevOps 是一种结合了软件开发(Dev)和 IT 运维(Ops)的方法论,旨在通过提高团队之间的协作效率、缩短交付周期和提升软件质量来改善软件开发和运维的过程
在Linux中,我们可以对其内核的一些参数进行合理调整,能够优化系统性能、提升稳定性。
配置文件:/etc/sysctl.conf
持久化保存配置:systemctl -p
调整网络相关参数
vim /etc/sysctl.conf
#增加系统可使用的文件描述符数量
fs.file-max = 655350 系统允许的最大文件描述符数量。适用于高并发服务器(如 Web、数据库)
#调整TCP/IP网络参数
net.ipv4.tcp_max_tw_buckets = 6000 启用 TIME_WAIT 连接的快速回收
net.ipv4.ip_local_port_range = 1024 65000
net.ipv4.tcp_tw_recycle = 1 启用 TIME_WAIT 连接的快速回收(Linux 2.6 + 默认开启)。注意:在 NAT 环境中可能导致连接问题
net.ipv4.tcp_tw_reuse = 1 允许将 TIME_WAIT 状态的 socket 重新用于新连接,提高连接复用率
net.ipv4.tcp_syncookies = 1 防御 SYN Flood 攻击,通过 cookie 机制验证 SYN 请求的合法性
net.ipv4.tcp_max_orphans = 3276800 未关联到用户进程的 TCP socket 最大数量。防止大量半开连接耗尽内存
net.ipv4.tcp_max_syn_backlog = 262144 SYN_RECV 状态连接的最大队列长度。高并发场景下需增大此值以处理更多待确认的连接
net.ipv4.tcp_synack_retries = 1 SYN+ACK 包的重传次数。减少重传可加快连接建立速度,但可能降低可靠性
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_fin_timeout = 15 FIN_WAIT_2 状态的超时时间(秒)。缩短超时可加速资源释放。
net.ipv4.tcp_keepalive_time = 30 TCP Keep-Alive 探测的初始间隔(秒)。适用于长连接服务(如数据库)
net.ipv4.tcp_keepalive_probes = 3
net.ipv4.tcp_keepalive_intvl = 15
net.ipv4.tcp_mem = 94500000 915000000 927000000 TCP 内存分配的三个阈值(min、pressure、max),单位为页(通常 4KB / 页)
net.ipv4.tcp_rmem = 4096 87380 16777216 TCP 接收缓冲区的最小、默认、最大值(字节)。增大可提高大带宽网络的吞吐量
net.ipv4.tcp_wmem = 4096 65536 16777216 TCP 发送缓冲区的最小、默认、最大值(字节)。增大可提高大带宽网络的吞吐量
net.ipv4.tcp_mtu_probing = 1# 提高系统UDP和TCP缓冲区大小
net.core.rmem_max = 16777216 系统所有 socket 接收缓冲区的最大尺寸(字节)
net.core.wmem_max = 16777216 系统所有 socket 发送缓冲区的最大尺寸(字节)
net.core.rmem_default = 65536
net.core.wmem_default = 65536
net.core.netdev_max_backlog = 4096 网络设备接收数据包但未被内核处理时的队列长度。高流量场景下需增大此值
net.core.somaxconn = 65535 TCP 监听队列的最大长度。需配合应用程序的listen()
参数使用# 关闭ICMP重定向
net.ipv4.conf.all.accept_redirects = 0 禁止接收v4的 ICMP 重定向报文,防止中间人攻击
net.ipv6.conf.all.accept_redirects = 0 禁止接收v6的 ICMP 重定向报文,防止中间人攻击
net.ipv4.conf.default.accept_redirects = 0
net.ipv6.conf.default.accept_redirects = 0
调整内存相关参数
#内存管理参数
# 调整内存分配策略
vm.swappiness = 10 控制内存使用到何种程度时开始使用 swap 分区(0-100)。值越低,越优先使用物理内存,适用于数据库服务器
vm.vfs_cache_pressure = 50 控制内核回收 dentry/inode 缓存的倾向(默认 100)。降低此值可保留更多文件系统缓存
vm.dirty_ratio = 60 系统内存中 “脏页”(未写入磁盘)的最大比例。超过此值时,内核将强制同步到磁盘
vm.dirty_background_ratio = 2
vm.overcommit_memory = 1 内存分配策略,0启发式检查(默认),1允许超量分配,2严格按照物理内存+swap限制分配
文件相关参数
#文件系统参数
# 提高inode数量限制
fs.inotify.max_user_watches = 524288 inotify 机制允许单个用户监视的文件 / 目录数量上限
fs.inotify.max_user_instances = 8192 单个用户创建inotify实例的数量上限
还可以通过修改/etc/security/limits.conf
文件来调整用户资源限制,即设置用户或组的资源限制
*表示除root外的所有用户,因此前四行配置对普通用户生效,后四行专门针对 root 用户
# 增加用户可打开的文件描述符数量
* soft nofile 65535 普通用户的 软限制(当前会话生效)为 65535 个文件描述符
* hard nofile 65535 普通用户的 硬限制(上限值)为 65535 个文件描述符
* soft nproc 65535 普通用户的 软限制 为 65535 个进程
* hard nproc 65535 普通用户的 硬限制 为 65535 个进程
root soft nofile 65535 root 用户也被限制为 65535 个文件描述符
root hard nofile 65535
root soft nproc 65535 root 用户最多可创建 65535 个进程
root hard nproc 65535