Linux 内核调优

简介:

以nginx 10k并发连接为优化目标,附简单介绍,不一一解释。


一、tcp容量规划


1
2
3
4
5
6
7
net.ipv4.tcp_mem  = 262144  524288 786432
net.core.wmem_max = 16777216
net.core.wmem_default = 131072
net.core.rmem_max = 16777216
net.core.rmem_default = 131072
net.ipv4.tcp_wmem = 4096    131072  16777216
net.ipv4.tcp_rmem = 4096    131072  16777216


net.ipv4.tcp_mem  

单位是内存页,一般是4k,三个值分别代表tcp内存使用的水平,低、中、高,

低表示无内存压力,中级表示内存压力状态,高表示内存吃紧,最高峰时系统将会拒绝分配内存。

262144 代表1G内存,即(262144x4/1024/1024),其他类推。


下面的参数单位都是字节

net.core.wmem_max 和net.core.wmem_default 会覆盖net.ipv4.tcp_wmem 的第二第三个值,

同理,net.core.rmem_max 和 net.core.rmem_default 会覆盖net.ipv4.tcp_rmem 的第二第三个值。


稍微提高tcp读写缓冲区的容量,可以增加tcp传输效率,比如上文默认值131072=128k,现有一个1M的文件传输,只需8次传输即可,比较适合图片类传输。但也不是越大越好,比如一个文字页面只有15k,使用128k的内存显然有些浪费。


上文tcp压力状态下的容量为2G,对应tcp读写缓冲区128k,可应对的连接数为16384 (2048x1024/128),可满足10k要求。



二、tcp连接行为管理


1
2
3
4
5
6
7
8
9
10
11
12
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_timestamps = 1
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_max_tw_buckets = 8192
net.ipv4.tcp_retries1 = 3
net.ipv4.tcp_retries2 = 5
net.ipv4.tcp_keepalive_time = 1800
net.ipv4.tcp_keepalive_probes = 5
net.ipv4.tcp_keepalive_intvl = 30
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_max_orphans = 262144


上面主要是tcp连接行为的伴随的参数,主要是tcp重用,增加队列,减少等待重试频率等等来提升效率。



三、内存管理


1
2
3
4
vm.swappiness =  5
vm.dirty_ratio =  40
vm.min_free_kbytes =  524288
vm.vfs_cache_pressure =  100


vm.swappiness = 5 表示物理内存剩余5%时,才考虑使用swap,默认60,这显然非常不合理


vm.dirty_ratio = 40 表示拿出物理内存的40%用于写缓存,而不立即将数据写入硬盘。由于硬盘是众所周知的瓶颈,扩大它可提升写的效率,40%是个比较合适的比例。


vm.min_free_kbytes = 524288   这个用于控制剩余内存的大小,524288=512M,可根据需要调整。如果某些任务临时需要大量内存,可临时将它调大然后调小,回收页面缓存。它比vm.drop_caches 要温和得多,后者更粗暴。


vm.vfs_cache_pressure = 100 ,如果要尽快将脏数据刷进硬盘,提高它,比如150 。


四、内核其他行为


1
2
3
4
5
6
7
8
net.core.somaxconn = 8192
net.core.netdev_max_backlog = 8192
net.ipv4.ip_local_port_range = 15000 65000
net.netfilter.nf_conntrack_max = 131072
net.nf_conntrack_max = 131072
net.ipv6.conf.all.disable_ipv6 = 1
net.netfilter.nf_conntrack_tcp_timeout_established = 3600
net.core.rps_sock_flow_entries = 32768


net.core.somaxconn 表示socket的最大连接数,默认128,对于php-fpm使用unix socket情况下,需要调大。


net.netfilter.nf_conntrack_tcp_timeout_established = 3600   默认2天时间,多数情况下,调小这个参数是有益的,如果是tcp长连接,这个参数可能不太合适。


net.core.rps_sock_flow_entries 这个参数启用RPS,自动将网卡中断均匀分配到多个CPU,改进网卡性能和系统负载。


RPS还需要脚本配合

for fileRfc in $(ls /sys/class/net/eth*/queues/rx-*/rps_flow_cnt);do echo 2048 > $fileRfc;done










本文转自 紫色葡萄 51CTO博客,原文链接:http://blog.51cto.com/purplegrape/1353861,如需转载请自行联系原作者
目录
相关文章
|
29天前
|
Linux C语言
Linux内核队列queue.h
Linux内核队列queue.h
|
1月前
|
监控 Unix Linux
Linux操作系统调优相关工具(四)查看Network运行状态 和系统整体运行状态
Linux操作系统调优相关工具(四)查看Network运行状态 和系统整体运行状态
34 0
|
1月前
|
Linux
Linux操作系统调优相关工具(三)查看IO运行状态相关工具 查看哪个磁盘或分区最繁忙?
Linux操作系统调优相关工具(三)查看IO运行状态相关工具 查看哪个磁盘或分区最繁忙?
24 0
|
1月前
|
存储 Linux
linux查看系统版本、内核信息、操作系统类型版本
linux查看系统版本、内核信息、操作系统类型版本
62 9
|
2天前
|
存储 缓存 安全
Linux系统内核面试题
Linux系统内核面试题
13 3
|
3天前
|
缓存 运维 算法
深入理解Linux内核的虚拟内存管理
【5月更文挑战第6天】 在现代操作系统中,尤其是类Unix系统如Linux中,虚拟内存管理是一项核心功能,它不仅支持了多任务环境,还提供了内存保护和抽象。本文将深入探讨Linux操作系统的虚拟内存子系统,包括分页机制、虚拟地址空间布局、页面置换算法以及内存分配策略。通过对这些概念的剖析,我们旨在为读者揭示Linux如何有效地管理和优化物理内存资源,并确保系统的稳定运行与高效性能。
|
3天前
|
Linux 调度 开发者
探索Linux内核调度:公平与效率的平衡艺术
【5月更文挑战第6天】 随着多核处理器的普及,操作系统的进程调度策略对系统性能的影响愈加显著。Linux作为广泛应用的开源操作系统,其内核调度器的设计哲学和实现细节一直是系统研究领域的热点。本文将深入分析Linux内核调度器的工作原理,探讨如何在保证公平性和效率之间取得平衡,并考察最新的调度器CFS(Completely Fair Scheduler)如何适应现代硬件架构的需求。
|
8天前
|
运维 监控 Linux
提升系统稳定性:Linux内核参数调优实战
【5月更文挑战第1天】 在运维领域,保障服务器的高效稳定运行是核心任务之一。Linux操作系统因其开源、可靠和灵活的特点被广泛应用于服务器中。本文将深入探讨通过调整Linux内核参数来优化系统性能,提升服务器的稳定性和响应能力。文章首先介绍了内核参数调优的必要性和基本原则,然后详细阐述了调优过程中的关键步骤,包括如何监控当前系统状态,确定性能瓶颈,选择合适的参数进行调优,以及调优后的测试与验证。最后,文中提供了一些常见问题的解决策略和调优的最佳实践。
43 5
|
9天前
|
算法 大数据 Linux
深入理解Linux内核的进程调度机制
【4月更文挑战第30天】操作系统的核心职能之一是有效地管理和调度进程,确保系统资源的合理分配和高效利用。在众多操作系统中,Linux因其开源和高度可定制的特点,在进程调度机制上展现出独特优势。本文将深入探讨Linux内核中的进程调度器——完全公平调度器(CFS),分析其设计理念、实现原理及面临的挑战,并探索未来可能的改进方向。
|
9天前
|
算法 Linux 调度
探索Linux内核:进程调度的奥秘
【4月更文挑战第30天】 在多任务操作系统中,进程调度是核心功能之一,它决定了处理器资源的分配。本文深入分析了Linux操作系统的进程调度机制,从调度器的基本原理到复杂的调度策略,以及它们如何影响系统性能和用户体验。通过剖析进程优先级、时间片分配以及实时性要求等方面,揭示了Linux如何在众多运行着的进程中做出快速而公平的决策,确保系统的高效与稳定运行。