在服务器运维和系统管理工作中,合理的系统优化是保障服务稳定运行、提升资源利用率的核心环节。本文从实战角度出发,详细讲解Linux系统优化的三大核心模块——内核参数调整、系统资源限制配置、开机自启服务管理,内容覆盖CentOS/RedHat、Ubuntu等主流发行版,适合运维新手快速掌握基础优化方法。
一、内核参数调整:针对性优化系统底层性能
Linux内核参数决定了系统的底层运行规则,通过调整/proc/sys目录下的内核参数(或sysctl配置文件),可解决网络卡顿、文件句柄不足、内存占用过高等问题。
1. 内核参数调整的两种方式
方式1:临时生效(重启后失效,适合测试)
直接通过sysctl命令修改,或echo值写入/proc/sys对应文件:
# 示例1:临时调整TCP连接回收超时时间(单位:秒)
sysctl -w net.ipv4.tcp_fin_timeout=30
# 示例2:临时放开文件最大打开数限制
echo 65535 > /proc/sys/fs/file-max
方式2:永久生效(重启后保留,推荐生产环境)
修改/etc/sysctl.conf或/etc/sysctl.d/自定义.conf文件,执行sysctl -p加载:
# 编辑sysctl配置文件
vim /etc/sysctl.conf
# 添加常用优化参数(按需添加)
# 网络优化:提升TCP连接处理能力
net.ipv4.tcp_tw_reuse = 1 # 复用TIME_WAIT状态的连接
net.ipv4.tcp_tw_recycle = 1 # 快速回收TIME_WAIT连接
net.ipv4.tcp_fin_timeout = 30 # TCP连接关闭超时时间
net.core.somaxconn = 65535 # 监听队列最大长度
net.core.netdev_max_backlog = 65535 # 网络设备接收队列最大值
# 文件系统优化:提升文件句柄限制
fs.file-max = 655350 # 系统级最大打开文件数
fs.inotify.max_user_watches = 1048576 # 提升inotify监控文件数量
# 内存优化:调整SWAP使用策略(值越小越优先使用物理内存)
vm.swappiness = 10
# 加载配置使其生效
sysctl -p
2. 常见内核参数说明(新手必知)
| 参数名 | 作用 | 推荐值(服务器场景) |
|---|---|---|
| net.ipv4.tcp_tw_reuse | 复用TIME_WAIT连接 | 1(开启) |
| fs.file-max | 系统最大打开文件句柄数 | 655350+ |
| vm.swappiness | 内存交换分区使用倾向 | 10-20(减少SWAP使用) |
| net.core.somaxconn | 套接字监听队列上限 | 65535 |
二、系统资源限制:管控进程/用户资源使用
Linux通过PAM模块的limits配置,限制用户/进程可使用的资源(如打开文件数、进程数、内存大小),避免单个进程耗尽系统资源。
1. 查看当前资源限制
使用ulimit命令查看当前会话的资源限制:
# 查看所有资源限制
ulimit -a
# 重点关注两个参数
ulimit -n # 查看当前用户最大打开文件数(默认多为1024,需调高)
ulimit -u # 查看当前用户最大进程数
2. 修改资源限制(永久生效)
步骤1:编辑limits.conf配置文件
vim /etc/security/limits.conf
# 添加全局限制(*代表所有用户,也可指定具体用户/组)
* soft nofile 65535 # 软限制(警告阈值)
* hard nofile 655350 # 硬限制(不可突破的最大值)
* soft nproc 65535 # 最大进程数软限制
* hard nproc 65535 # 最大进程数硬限制
root soft nofile 655350 # 单独给root用户更高限制
root hard nofile 655350
步骤2:(CentOS7+/RHEL7+)修改limits.d配置
部分系统会加载/etc/security/limits.d/下的配置,需确保无冲突:
# 编辑20-nproc.conf(若存在)
vim /etc/security/limits.d/20-nproc.conf
# 修改内容为:
* soft nproc 65535
root soft nproc unlimited
步骤3:验证配置生效
重新登录系统(或切换用户),执行以下命令验证:
ulimit -n # 应显示65535
ulimit -u # 应显示65535
3. 注意事项
- 软限制(soft):用户可临时突破,但会触发警告;
- 硬限制(hard):由系统管理员设置,用户无法突破;
- 配置生效需重新登录,进程需重启才能应用新限制。
三、开机自启配置:管控服务启动规则
合理配置开机自启服务,可减少系统启动时间、降低资源占用,同时确保核心服务(如Nginx、MySQL)随系统自动恢复。
1. 主流系统自启管理方式(systemd为主)
Linux系统自启管理主要分两种:systemd(CentOS7+/Ubuntu16.04+)和chkconfig(CentOS6/老版本),重点讲解systemd。
方式1:systemd管理(推荐)
# 1. 查看服务状态
systemctl status nginx # 查看nginx服务状态
# 2. 设置开机自启
systemctl enable nginx # 开启nginx开机自启
systemctl enable --now nginx # 立即启动并设置开机自启
# 3. 关闭开机自启
systemctl disable nginx
# 4. 查看所有开机自启服务
systemctl list-unit-files --type=service --state=enabled
# 5. 禁止无用服务自启(示例:禁止bluetooth蓝牙服务)
systemctl disable bluetooth
方式2:chkconfig管理(老版本系统)
# 查看服务自启状态
chkconfig --list sshd
# 设置sshd开机自启(级别2-5)
chkconfig --level 2345 sshd on
# 关闭自启
chkconfig --level 2345 postfix off
2. 自定义脚本开机自启(实战场景)
若需让自定义脚本(如数据备份脚本)开机运行,可通过以下两种方式实现:
方法1:通过rc.local配置(简单易操作)
# 1. 确保rc.local有执行权限
chmod +x /etc/rc.d/rc.local
# 2. 编辑rc.local,添加脚本执行命令
vim /etc/rc.d/rc.local
# 示例:开机执行/root/backup.sh脚本
/root/backup.sh > /var/log/backup_start.log 2>&1
# 3. 验证:重启后查看日志
cat /var/log/backup_start.log
方法2:创建systemd服务(规范且可控)
以自定义监控脚本为例,创建systemd服务文件:
# 1. 创建服务文件
vim /etc/systemd/system/monitor.service
# 写入以下内容
[Unit]
Description=Custom System Monitor Script # 服务描述
After=network.target # 网络启动后再执行
[Service]
Type=simple
ExecStart=/root/monitor.sh # 脚本路径
Restart=on-failure # 脚本失败时重启
User=root # 执行用户
[Install]
WantedBy=multi-user.target # 多用户模式下生效
# 2. 重新加载systemd配置
systemctl daemon-reload
# 3. 设置开机自启并启动
systemctl enable monitor
systemctl start monitor
3. 优化建议:精简自启服务
# 关闭无用自启服务(示例)
# 关闭邮件服务
systemctl disable postfix
# 关闭防火墙(若使用云厂商防火墙)
systemctl disable firewalld
# 关闭SELinux(可选,需重启生效)
sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
四、系统优化实战:一站式基础优化脚本
结合以上内容,整理新手可用的基础优化脚本,一键完成内核参数、资源限制、自启服务优化:
#!/bin/bash
# 系统基础优化脚本
# 适用:CentOS7+/Ubuntu18.04+
# 1. 内核参数优化
cat >> /etc/sysctl.conf << EOF
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 30
net.core.somaxconn = 65535
net.core.netdev_max_backlog = 65535
fs.file-max = 655350
vm.swappiness = 10
EOF
sysctl -p
# 2. 资源限制优化
cat >> /etc/security/limits.conf << EOF
* soft nofile 65535
* hard nofile 655350
* soft nproc 65535
* hard nproc 65535
root soft nofile 655350
root hard nofile 655350
EOF
# 3. 关闭无用自启服务
systemctl disable postfix firewalld bluetooth > /dev/null 2>&1
echo "系统基础优化完成!需重新登录生效资源限制,重启生效SELinux(若修改)"
使用方法:
# 保存为optimize.sh,添加执行权限
chmod +x optimize.sh
# 执行脚本
./optimize.sh