Linux 性能调优
- 内存优化:这包括合理配置虚拟内存、减少内存泄漏、优化内存分配算法等。
- CPU 优化:这包括识别并避免 CPU 占用过高的进程、优化 CPU 调度策略、限制并发线程数等。
- 网络优化:这包括优化网络设备、优化网络协议栈、减少网络延迟等。
- 文件系统优化:这包括优化文件系统的读写速度、优化磁盘 I/O 策略、减少磁盘碎片等。
- 存储优化:这包括优化数据库查询、优化缓存策略、优化数据结构等。
- 容器和虚拟化优化:这包括优化容器启动时间、优化资源调度、提高虚拟机效率等。
- 启动程序优化:这包括优化开机自启程序、优化应用程序启动时间、优化系统服务管理等。
#内存优化
检查内存使用情况:
free -h
top -n 5 -c -o RES前5个占用内存最多的线程
要在Linux系统中找到占用内存最多的前5个线程,可以通过以下几个步骤完成:
使用
top命令查看线程信息:- 首先运行
top命令,然后按Shift+H切换到线程视图。这将显示每个线程的信息,包括它们的内存和CPU使用情况。
- 首先运行
使用
ps命令结合sort命令:- 你可以使用
ps命令结合sort命令来列出占用内存最多的线程。以下是一个常用的方法:
ps -eLo pid,ppid,tid,%mem,cmd --sort=-%mem | head -n 6ps -eLo pid,ppid,tid,%mem,cmd:列出所有线程的PID、PPID、TID、内存使用百分比(%MEM)和命令(CMD)。--sort=-%mem:按内存使用量从高到低排序。head -n 6:显示前6行,其中包括表头行。
- 你可以使用
解释命令:
pid:进程ID。ppid:父进程ID。tid:线程ID。%mem:内存使用率。cmd:执行命令。
通过执行以上命令,你可以快速找到系统中占用内存最多的前5个线程。如果你只想查看线程的ID及其内存使用情况,可以调整输出格式,例如:
ps -eLo tid,%mem --sort=-%mem | head -n 6这会只显示线程ID和内存使用情况。
释放无用内存:
使用 ps aux | grep
配置虚拟内存:
可以通过编辑 /etc/fstab 文件或者使用 sysctl 命令来调整交换分区的大小,以提高系统的可用内存。
优化内核参数:
通过编辑 /etc/sysctl.conf 文件或者使用 sysctl -p 命令来修改内核参数,例如设置内核线程数量、限制进程内存等。
举例
结束占用大量内存的进程:如果有一个名为 “apache” 的 Web 服务器进程占用大量内存,可以使用以下命令来结束它:
ps aux | grep apache | awk '{print $PID}' | xargs kill -9增加交换分区的大小:如果系统中已经没有足够的物理内存来满足运行需求,可以增加交换分区的大小来提高系统的可用内存。例如,如果希望将交换分区的大小从 2GB 增加到 4GB,可以在 /etc/fstab 文件中添加如下内容:
/dev/sda5 swap swap defaults 0 0然后重新加载 fstab 文件:
mount -apidstat
快速提纲
简单来说,pidstat 的核心用法就是监控指定进程或所有进程的 CPU、内存、IO 等资源消耗情况。它的主要用法可以概括为:
- 基础用法:不加任何选项,默认监控进程的 CPU 使用情况。
- 核心功能:通过
-u(CPU)、-r(内存)、-d(磁盘IO)等选项来监控不同资源。 - 关键技巧:使用
-p指定特定进程,以及用间隔和次数参数进行持续监控。
分点详细描述(口语化版)
下面我为你拆解一下它的常见用法,听起来会更像在面试中交流:
1. 最基本的“查户口”
- 命令:直接输入
pidstat - 作用:这是最简单的用法,它会显示从系统启动到现在,所有活动进程的一个平均 CPU 使用情况快照。在排查历史问题时可以快速看一眼。
2. 化身“实时监控大屏”
- 命令:
pidstat 2或pidstat 2 5 - 作用:这是最常用的模式。后面的数字参数意思是:每 2 秒刷新一次数据。如果再加一个数字 5,就是只刷新 5 次后自动停止。这样你就能看到进程资源使用的动态变化,对于排查那种时高时低的性能问题特别有用。
3. 精准“盯梢”某个进程
- 命令:
pidstat -p 1234 2(假设 1234 是你关心的进程 PID) - 作用:当你知道问题大概出在哪个进程上时,用
-p参数可以只监控这个特定的进程,避免其他信息干扰,非常聚焦。
4. 全面“体检”之——查内存(RAM)
- 命令:
pidstat -r 2 - 作用:光看 CPU 不够,内存也是瓶颈大户。
-r选项会重点显示每个进程的内存消耗,关键看%MEM(内存占比)和RSS(实际物理内存大小),帮你快速找到内存泄漏的“元凶”。
5. 全面“体检”之——查磁盘IO
- 命令:
pidstat -d 2 - 作用:如果系统变慢但 CPU 和内存都不高,很可能是磁盘IO瓶颈。
-d选项会显示每个进程的读写速度和次数,帮你定位是哪个进程在疯狂读写磁盘。
6. 超级“全家桶”模式
- 命令:
pidstat -urd 2 - 作用:你可以把
-u(CPU)、-r(内存)、-d(磁盘)组合起来使用,这样就能在一个屏幕上同时监控一个进程的三大核心指标,效率非常高!
面试小贴士:
你可以补充一句:“在实际工作中,我通常先用 top 或 htop 快速定位到可疑进程的 PID,然后再用 pidstat -urd -p [PID] 2 对这个进程进行详细的综合性能分析。” 这样能体现出你工具链使用的连贯性。
希望这个解释对你有帮助!祝你面试顺利!
最后编辑:严锋 更新时间:2025-12-03 20:02