linux调优 linux好用的工具

其实linux调优的问题并不复杂,但是又很多的朋友都不太了解linux好用的工具,因此呢,今天小编就来为大家分享linux调优的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

Linux调优:内核参数优化

为了充分发挥Linux操作系统性能,调优内核参数至关重要。以下是一些经过实践验证的优化建议,旨在提高系统稳定性和性能。

编辑/etc/sysctl.conf文件,调整如下参数:

调整虚拟内存最小可用内存为10MB,以确保系统有足够的内存空间用于其他进程。

vm.min_free_kbytes= 10485760

设置脏页比率为10%,控制系统在写入磁盘前缓存的脏页比例。

vm.dirty_background_ratio= 10

设置脏页上限为50%,避免系统内存被大量脏页占用。

vm.dirty_ratio= 50

增加TCP最大连接数,提高网络并发性能。

net.core.somaxconn=1024

设置重试次数为5,增加TCP连接建立的稳定性。

net.ipv4.tcp_retries2=5

开启IP转发功能,用于设置路由器等场景。

net.ipv4.ip_forward=1

调整系统换页优先级为10,平衡内存和磁盘间数据交换。

vm.swappiness=10

自定义核心文件输出路径,便于问题追踪。

kernel.core_pattern=/var/core/core.%e.%p.%t

设置TCP最大连接缓存数量,避免资源浪费。

net.ipv4.tcp_max_tw_buckets= 262144

启用TCP同步cookie功能,提高安全性。

net.ipv4.tcp_syncookies= 1

启用TCP连接重用,提升效率。

net.ipv4.tcp_tw_reuse= 1

禁用TCP FIN回收,减少系统资源消耗。

net.ipv4.tcp_fin_timeout= 20

调整TCP最大SYN缓存数量,优化并发连接管理。

net.ipv4.tcp_max_syn_backlog= 262144

调整网络最大连接数,确保网络连接高效。

net.core.somaxconn= 65535

增加网络数据包缓存上限,提高处理能力。

net.core.netdev_max_backlog= 262144

设置最大进程数,确保系统资源充足。

kernel.pid_max=1048576

调整文件最大连接数,平衡文件系统性能。

fs.file-max= 1048576

优化NF连接跟踪配置,提高网络性能。

net.nf_conntrack_max= 4194304#最大跟踪连接数

调整连接状态超时时间,避免资源浪费。

net.netfilter.nf_conntrack_tcp_timeout_established= 300

调整最大NF连接跟踪配置,优化网络资源管理。

net.netfilter.nf_conntrack_max= 2097152

优化TCP状态超时时间,提升网络稳定性。

net.netfilter.nf_conntrack_tcp_timeout_close_wait= 60

调整TCP连接缓存策略,优化系统性能。

net.netfilter.nf_conntrack_tcp_timeout_fin_wait= 120

调整TCP状态超时时间,避免资源浪费。

net.netfilter.nf_conntrack_tcp_timeout_time_wait= 120

执行sysctl-p命令,使配置生效。

Linux 性能调优之资源限制(ulimit&Cgroup)

在Linux系统中,资源调优是一项关键任务,以确保系统的稳定性和性能。主要通过两种方式实现:Cgroups和ulimit。Cgroups是控制组,它是内核级别的一种机制,用于细粒度地管理和限制进程对系统资源的使用,如CPU时间、内存、网络带宽等。ulimit则是用户级别的资源限制工具,常用于shell会话中,通过PAM(Pluggable Authentication Modules)模块在登录时设置,如限制登录次数、核心文件大小和最大打开文件数等。

ulimit命令用于调整shell和其子进程的资源限制,它支持软限制和硬限制。软限制是警告阈值,超过后会发出警告,但允许登录,而硬限制则是严格的限制,一旦达到,会阻止登录。例如,可以限制一个用户的最大登录次数,防止滥用系统资源。

Cgroups通过systemd进行管理,可以按单元文件(service unit)或者drop-in配置文件来设置资源限制。通过创建独立的slice,可以为特定服务提供隔离的资源控制。systemd的system.slice默认控制所有未指定slice的服务,而drop-in配置文件允许覆盖或添加额外的限制,如kubelet服务的CPU和内存使用。

Linux内核的Cgroup功能是现代容器技术的基础,它允许管理员灵活地分配和监控资源,如在Docker容器中通过-cpuset-cpus和-m选项来限制CPU和内存。Cgroups不仅解决了传统niceness值调节的不足,还提供了进程级别的资源管理,提高了整体系统的效率。

总结来说,Linux性能调优通过Cgroups和ulimit这两种方法,实现了对系统资源的有效管理和优化,确保了系统的稳定性和用户体验。理解并合理配置这些工具,是提高Linux系统性能的关键。

Linux性能监控与调优工具

除了保证程序的正确性以外,在项目开发中往往还关心性能和稳定性。我们往往要对内核、应用程序或整个系统进行性能优化。在性能优化中常用的手段如下:

使用top、vmstat、iostat、sysctl等常用工具

top命令用于显示处理器的活动状况。在缺省情况下,显示占用CPU最多的任务,并且每隔5s做一次刷新;vmstat命令用于报告关于内核线程、虚拟内存、磁盘、陷阱和CPU活动的统计信息;iostat命令用于分析各个磁盘的传输闲忙状况;netstat是用来检测网络信息的工具; sar用于收集、报告或者保存系统活动信息,其中,sar用于显示数据,sar1和sar2用于收集和保存数据

sysctl是一个可用于改变正在运行中的Linux系统的接口。用sysctl可以读取几白个以上的系统变量,如用sysctl—a可读取所有变量。

sysctl的实现原理是:所有的内核参数在/proc/sys中形成一个树状结构,sysctl系统调用的内核函数是sys_sysctl,匹配项目后,最后的读写在do_sysctl_strategy中完成。

2.使用高级分析手段,如OProfile、gprof

OProfile可以帮助用户识别诸如模块的占用时间、循环的展开、高速缓存的使用率低、低效的类型转换和冗余操作、错误预测转移等问题。它收集有关处理器事件的信息,其中包括TLB的故障、停机、存储器访问以及缓存命中和未命中的指令的攫取数量。OProfile支持两种采样方式:基于事件的采样(Event Based)和基于时间的采样(Time Based)。基于事件的采样是OProfile只记录特定事件(比如L2缓存未命中)的发生次数,当达到用户设定的定值时Oprofile就记录一下(采一个样)。这种方式需要CPU内部有性能计数器(Performace Counter))。基于时间的采样是OProfile借助OS时钟中断的机制,在每个时钟中断,OProfile都会记录一次(采一次样)。引入它的目的在于,提供对没有性能计数器的CPU的支持,其精度相对于基于事件的采样要低,因为要借助OS时钟中断的支持,对于禁用中断的代码,OProfile不能对其进行分析。

阅读剩余
THE END