ydswin

忘记背后,努力面前的,向着标杆直跑

导航

linux中limits.conf和sysctl.conf需做哪些优化

limits.confsysctl.conf 是 Linux 系统中用于配置用户资源限制和系统内核参数的两个重要配置文件。针对这两个文件进行优化,可以帮助提升系统的安全性和性能。

limits.conf 的优化

limits.conf 是 PAM(Pluggable Authentication Modules,可插拔认证模块)的配置文件,用于限制用户的系统资源使用。以下是一些常见的优化建议:

  1. 设置合理的用户资源限制:根据实际需求,为用户设置合理的核心文件大小(core)、数据大小(data)、文件大小(fsize)、锁定内存大小(memlock)等限制。这有助于防止用户进程占用过多系统资源,导致系统性能下降或不稳定。
  2. 限制打开的文件描述符数量:通过设置 nofile 参数,可以限制用户进程打开的文件描述符数量。这有助于防止因打开过多文件而导致的资源耗尽问题。
  3. 针对特定用户或组进行限制:可以根据需要,为特定用户或用户组设置不同的资源限制。这有助于实现更精细的资源管理。
vi /etc/security/limits.conf
添加如下行:
* soft noproc 65535
* hard noproc 65535
* soft nofile 65535
* hard nofile 65535

sysctl.conf 的优化

sysctl.conf 用于在 Linux 系统运行时动态修改内核参数。通过优化这些参数,可以提升系统的网络性能、内存管理、磁盘 I/O 性能等方面。以下是一些建议:

  1. 网络参数优化:调整 TCP/IP 堆栈参数,如 TCP 窗口大小、最大连接数等,以提高网络传输效率和吞吐量。
  2. 内存管理优化:通过调整页缓存、脏页写回策略等参数,优化内存使用,减少内存浪费和交换空间的使用。
  3. 磁盘 I/O 优化:根据硬件特性和工作负载,选择合适的磁盘调度策略和 I/O 调度器,以提高磁盘读写性能。
  4. 安全性优化:禁用不必要的内核功能、限制 ICMP 消息响应等,增强系统的安全性。
vim /etc/sysctl.conf
 
fs.file-max = 65535
# 减少交换内存使用,默认60,建议10-30
vm.swappiness = 30
# 脏数据的比例和处理,根据场景不同设置
# 如果是数据库服务器,希望数据能够尽快安全写入,可降低内存缓存比例
# vm.dirty_background_ratio = 5
# vm.dirty_ratio = 10  
# 如果是业务服务器,对数据安全写入无要求,可加大内存缓存比例 
# vm.dirty_background_ratio = 50
# vm.dirty_ratio = 80
# 设置为1,内核允许分配所有的物理内存,Redis常用 
vm.overcommit_momory = 1
# 系统拥有的内存数,ElasticSearch启动必备
vm.max_map_count = 262144
# 设置为1 
net.ipv4.tcp_no_metrics_save = 1
# 禁用 sysrq 功能
kernel.sysrq = 0
# 控制 core 文件的文件名中是否添加 pid 作为扩展
kernel.core_uses_pid = 1 
# 设置为1, 防止 SYN FlOOD 攻击 
net.ipv4.tcp_syncookies = 1
# 消息队列的最大消息大小,默认8k,建议64kb
kernel.msgmax = 65536
# 消息队列存放消息的总字节数
kernel.msgmnb = 163840
# TIME_WAIT socker的最大数目,不宜太大或者太小,nginx反向代理必备
net.ipv4.tcp_max_tw_buckets = 50000
# 打开 SACK  选项,设置为1 
net.ipv4.tcp_sack = 1
# 激活窗口扩充因子,支持64kb以上数据传输
net.ipv4.tcp_window_scaling = 1
# TCP 缓冲区内存,连接数达到非常高时候需要配置好
net.ipv4.tcp_mem = 786432 2097152 3145728
net.ipv4.tcp_rmem = 4096 4096 16777216
net.ipv4.tcp_wmem = 4096 4096 16777216
# socket 缓冲区默认值和最大值
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
# ACCEPT 等待队列长度,适当,太大了堆积也无用
net.core.netdev_max_backlog = 65535 
# 允许最大并发连接数,重要 
net.core.somaxconn = 65535
# 不属于任何进程的socket数目,不宜太大,防止攻击
net.ipv4.tcp_max_orphans = 65535
# SYNC等待队列长度,适当,太大了排队也没用 
net.ipv4.tcp_max_syn_backlog = 65535
# 禁用timestamp,重要,高并发下设置为0
net.ipv4.tcp_timestamps = 0 
# 发送SYNC+ACK 的重试次数,不宜太大,5以内
net.ipv4.tcp_synack_retries = 1
# 发送SYNC的重试次数,不宜太大,5以内
net.ipv4.tcp_syn_retries = 1
# 允许回收TCP连接,重要,必须为1
net.ipv4.tcp_tw_recycle = 1
# 允许重用TCP连接,重要,必须为1
net.ipv4.tcp_tw_reuse = 1
# 服务端主动关闭后,客户端释放连接的超时,重要,<30
net.ipv4.tcp_fin_timeout = 5
# 允许TCP连接保持的空闲keepalive时长,不需要太长
net.ipv4.tcp_keepalive_time = 30
# 系统作为TCP客户端连接自动使用的端口(start,end),可发起并发连接数为end-start
net.ipv4.ip_local_port_range = 10240 65535

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

在进行这些优化时,应该根据系统的实际需求和硬件配置进行调整。过度优化可能导致系统不稳定或性能下降。因此,建议在修改配置文件之前备份原始文件,并在修改后进行充分的测试,以确保系统的稳定性和性能。

此外,不同的 Linux 发行版可能具有不同的默认配置和工具集,因此具体的优化步骤和参数可能有所差异。在进行优化时,建议参考相关发行版的官方文档和社区资源,以获取更详细的指导和建议。

posted on 2024-04-26 23:55  dashery  阅读(132)  评论(0编辑  收藏  举报