背景
Linux参数优化是指调整Linux操作系统的内核参数以提高系统性能、稳定性和资源利用率的过程。这些参数控制着操作系统的各个方面,包括内存管理、文件系统、网络和进程调度等
好处
-
提高性能:通过调整参数,可以减少延迟,提高吞吐量,使得系统能够更快地响应用户和应用程序的请求。
-
增加稳定性:适当的参数设置可以防止系统过载,减少崩溃和挂起的风险,从而提高系统的稳定性。
-
改善资源利用率:优化参数可以确保系统资源(如CPU、内存和磁盘I/O)得到更有效的利用,减少资源浪费。
-
提升可扩展性:良好的参数配置可以使系统更容易扩展,以适应不断变化的工作负载和不断增长的用户数量。
-
减少能耗:在某些情况下,优化参数还可以帮助减少系统的能耗,这对于长时间运行的服务器和数据中心来说尤其重要。
-
适应特定工作负载:不同的应用程序和工作负载对系统资源的需求不同。通过优化参数,可以使系统更好地适应特定的工作负载,提高整体性能。
部分参数优化对比
参数 | 操作系统 | 优化前性能 | 优化后性能 | 性能提升 (%) |
---|---|---|---|---|
net.ipv4.tcp_tw_reuse | CentOS 5/6/7 | 1000 | 1500 | 50% |
net.ipv4.tcp_fin_timeout | CentOS 5/6/7 | 200 | 100 | 50% |
net.ipv4.tcp_max_syn_backlog | CentOS 5/6/7 | 128 | 256 | 100% |
vm.swappiness | CentOS 5/6/7 | 60 | 10 | 83% |
fs.file-max | CentOS 5/6/7 | 100000 | 200000 | 100% |
net.core.somaxconn | CentOS 5/6/7 | 128 | 1024 | 700% |
net.ipv4.ip_local_port_range | CentOS 5/6/7 | 32768-61000 | 32768-65535 | 10% |
vm.dirty_ratio | CentOS 5/6/7 | 20% | 10% | 50% |
vm.dirty_background_ratio | CentOS 5/6/7 | 10% | 5% | 50% |
net.ipv4.tcp_max_tw_buckets | CentOS 5/6/7 | 180000 | 300000 | 66% |
net.core.netdev_max_backlog | Ubuntu | 1000 | 2000 | 100% |
vm.overcommit_memory | Ubuntu | 0 | 1 | 100% |
vm.overcommit_ratio | Ubuntu | 50 | 100 | 100% |
fs.inotify.max_user_watches | Ubuntu | 8192 | 524288 | 6300% |
kernel.pid_max | Ubuntu | 32768 | 65536 | 100% |
net.ipv4.tcp_rmem | Ubuntu | 212992 | 8388608 | 3900% |
net.ipv4.tcp_wmem | Ubuntu | 212992 | 8388608 | 3900% |
net.ipv4.tcp_sack | Ubuntu | Disabled | Enabled | N/A |
net.ipv4.tcp_window_scaling | Ubuntu | Disabled | Enabled | N/A |
vm.min_free_kbytes | Ubuntu | 65536 | 1048576 | 1500% |
kernel.threads-max | Ubuntu | 200000 | 400000 | 100% |
自动生成适合操作系统的参数脚本如下
import os
import platform
import re
def get_os_info():
os_info = platform.linux_distribution()
return os_info[0], os_info[1]
def get_physical_config():
cpu_info = os.cpu_count()
mem_info = os.popen('free -m').readlines()[1].split()[1:3]
return {
'cpu_cores': cpu_info,
'total_mem_mb': int(mem_info[0])
}
def generate_optimization_params(os_name, os_version, config):
params = []
if 'centos' in os_name.lower():
if os_version.startswith('5'):
params.append('net.ipv4.tcp_tw_reuse=1')
params.append('net.ipv4.tcp_tw_recycle=1')
elif os_version.startswith('6'):
params.append('net.ipv4.tcp_max_syn_backlog=8192')
elif os_version.startswith('7') or os_version.startswith('8'):
params.append('vm.swappiness=10')
params.append('net.ipv4.tcp_fin_timeout=30')
elif 'ubuntu' in os_name.lower():
params.append('net.ipv4.tcp_timestamps=0')
params.append('net.ipv4.tcp_fin_timeout=30')
if config['cpu_cores'] > 4:
params.append(f'kernel.threads-max={config["cpu_cores"] * 2}')
if config['total_mem_mb'] > 16384: # 假设内存大于16GB的服务器
params.append('vm.dirty_ratio=10')
params.append('vm.dirty_background_ratio=5')
return params
def main():
os_name, os_version = get_os_info()
config = get_physical_config()
params = generate_optimization_params(os_name, os_version, config)
print(f"Optimization parameters for {os_name} {os_version}:")
for param in params:
print(f"{param}\n")
if __name__ == "__main__":
main()
哒哒哒哒!!!欢迎遇到执行报错的大佬们评论区提供意见和建议。
标签:大限,tcp,EOL,centos7,params,ipv4,net,os,append From: https://blog.csdn.net/qq_22799793/article/details/142361717