在Linux系统中,调整系统参数通常涉及内核参数、资源限制、硬件配置等多方面操作。以下是具体方法和相关知识的详细说明:
1. 临时调整内核参数
使用`sysctl`命令临时修改运行中的内核参数,重启后失效:
bash
sysctl -w vm.swappiness=10 # 修改虚拟内存交换倾向值
sysctl -w net.core.rmem_max=4194304 # 调整网络接收缓冲区大小
2. 永久调整内核参数
编辑`/etc/sysctl.conf`或`/etc/sysctl.d/`目录下的配置文件,添加或修改参数后执行`sysctl -p`生效:
bash
echo "vm.swappiness=10" >> /etc/sysctl.conf
sysctl -p
3. 文件描述符限制
用户级调整:修改`/etc/security/limits.conf`:
* soft nofile 65535
* hard nofile 65535
系统级调整:修改`/proc/sys/fs/file-max`或在`/etc/sysctl.conf`中设置`fs.file-max=2097152`。
4. 磁盘I/O调度器
查看当前调度器:
bash
cat /sys/block/sda/queue/scheduler
临时修改为deadline调度器:
bash
echo "deadline" > /sys/block/sda/queue/scheduler
永久生效需通过GRUB配置添加`elevator=deadline`内核参数。
5. CPU频率调节
使用`cpufrequtils`工具调整:
bash
cpufreq-set -g performance # 性能模式
cpufreq-set -g powersave # 节能模式
需安装相应驱动(如`intel_pstate`或`acpi-cpufreq`)。
6. 内存管理
透明大页(THP):禁用可降低延迟敏感性应用的性能波动:
bash
echo never > /sys/kernel/mm/transparent_hugepage/enabled
OOM Killer调整:通过`/proc/
7. 网络参数优化
调整TCP缓冲区、连接队列等:
bash
sysctl -w net.ipv4.tcp_tw_reuse=1 # 复用TIME_WAIT连接
sysctl -w net.ipv4.tcp_fin_timeout=30 # 减少FIN超时
sysctl -w net.core.somaxconn=1024 # 增大连接队列
8. 定时任务调整
修改`/proc/sys/kernel/hung_task_timeout_secs`可修正任务卡死检测阈值。
9. 硬件资源监控与限制
cgroups:划分CPU、内存等资源:
bash
cgcreate -g cpu,cpuset:/mygroup
cgset -r cpu.shares=512 mygroup
numactl:控制NUMA架构下的资源分配:
bash
numactl --cpunodebind=0 --membind=0
10. 日志与调试
调整内核日志级别:
bash
dmesg -n 4 # 4=WARNING
修改`/proc/sys/kernel/printk`可控制日志输出优先级。
注意事项
参数调整需结合具体应用场景测试,如数据库服务通常需要降低`swappiness`,而高并发网络服务需优化TCP栈。
使用`tuned`或`sysfsutils`工具可简化部分配置。
修改关键参数前建议备份配置文件,并通过`man proc`或内核文档查阅参数含义。