Linux 性能调优

  1. 内存优化:这包括合理配置虚拟内存、减少内存泄漏、优化内存分配算法等。
  2. CPU 优化:这包括识别并避免 CPU 占用过高的进程、优化 CPU 调度策略、限制并发线程数等。
  3. 网络优化:这包括优化网络设备、优化网络协议栈、减少网络延迟等。
  4. 文件系统优化:这包括优化文件系统的读写速度、优化磁盘 I/O 策略、减少磁盘碎片等。
  5. 存储优化:这包括优化数据库查询、优化缓存策略、优化数据结构等。
  6. 容器和虚拟化优化:这包括优化容器启动时间、优化资源调度、提高虚拟机效率等。
  7. 启动程序优化:这包括优化开机自启程序、优化应用程序启动时间、优化系统服务管理等。

#内存优化

检查内存使用情况:

  free -h
  top -n 5 -c -o RES

前5个占用内存最多的线程
要在Linux系统中找到占用内存最多的前5个线程,可以通过以下几个步骤完成:

  1. 使用 top 命令查看线程信息

    • 首先运行 top 命令,然后按 Shift + H 切换到线程视图。这将显示每个线程的信息,包括它们的内存和CPU使用情况。
  2. 使用 ps 命令结合 sort 命令

    • 你可以使用 ps 命令结合 sort 命令来列出占用内存最多的线程。以下是一个常用的方法:
    ps -eLo pid,ppid,tid,%mem,cmd --sort=-%mem | head -n 6
    • ps -eLo pid,ppid,tid,%mem,cmd:列出所有线程的PID、PPID、TID、内存使用百分比(%MEM)和命令(CMD)。
    • --sort=-%mem:按内存使用量从高到低排序。
    • head -n 6:显示前6行,其中包括表头行。
  3. 解释命令

    • pid:进程ID。
    • ppid:父进程ID。
    • tid:线程ID。
    • %mem:内存使用率。
    • cmd:执行命令。

通过执行以上命令,你可以快速找到系统中占用内存最多的前5个线程。如果你只想查看线程的ID及其内存使用情况,可以调整输出格式,例如:

ps -eLo tid,%mem --sort=-%mem | head -n 6

这会只显示线程ID和内存使用情况。

释放无用内存:

使用 ps aux | grep | awk ‘{print $PID}’ | xargs kill -9 来结束占用大量内存的进程;也可以使用 free -m 命令查看内存使用情况,并手动删除不需要的大文件或压缩包来释放内存。

配置虚拟内存:

可以通过编辑 /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 -a

pidstat

快速提纲

简单来说,pidstat 的核心用法就是监控指定进程或所有进程的 CPU、内存、IO 等资源消耗情况。它的主要用法可以概括为:

  1. 基础用法:不加任何选项,默认监控进程的 CPU 使用情况。
  2. 核心功能:通过 -u(CPU)、-r(内存)、-d(磁盘IO)等选项来监控不同资源。
  3. 关键技巧:使用 -p 指定特定进程,以及用 间隔次数 参数进行持续监控。

分点详细描述(口语化版)

下面我为你拆解一下它的常见用法,听起来会更像在面试中交流:

1. 最基本的“查户口”

  • 命令:直接输入 pidstat
  • 作用:这是最简单的用法,它会显示从系统启动到现在,所有活动进程的一个平均 CPU 使用情况快照。在排查历史问题时可以快速看一眼。

2. 化身“实时监控大屏”

  • 命令:pidstat 2pidstat 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(磁盘)组合起来使用,这样就能在一个屏幕上同时监控一个进程的三大核心指标,效率非常高!

面试小贴士:
你可以补充一句:“在实际工作中,我通常先用 tophtop 快速定位到可疑进程的 PID,然后再用 pidstat -urd -p [PID] 2 对这个进程进行详细的综合性能分析。” 这样能体现出你工具链使用的连贯性。

希望这个解释对你有帮助!祝你面试顺利!

作者:严锋  创建时间:2023-09-13 11:40
最后编辑:严锋  更新时间:2025-12-03 20:02