当前位置: 首页 > news >正文

Linux-----进程管理面试题

怎么排查Linux服务器卡顿

按从简单到复杂顺序查:

  1. 先看整体负载:uptime看系统忙不忙;查看系统开机时长、当前时间、登录用户数、1/5/15分钟平均负载
  2. 查 CPU:是不是某个程序疯狂跑占满 CPU;top
  3. 查内存:内存不够会不会在疯狂读写硬盘 Swap;free -h
  4. 查磁盘 IO:硬盘读写卡死(最容易忽略,磁盘慢服务器直接卡);iostat -x 1 :磁盘IO性能 iotop :哪个进程读写磁盘
  5. 查磁盘空间:df -h看磁盘是不是 100% 满了;
  6. 查网络:带宽打满、大量连接拖慢系统;ip ss端口 ping连通性 traceroute路由 iftop看网络流量
  7. 查内核日志:dmesg看有没有 OOM 杀进程、硬件报错、内核崩溃;journalctl 内核日志
  8. 最后查有没有定时任务跑大量脚本、挖矿病毒。

交换(Swap)内存不足时,系统把内存数据挪到硬盘Swap分区,这个行为叫 换出(swap out);再读回来叫 换入(swap in)

free后怎么查找占用高的进程

  • 输入free -h先看内存整体;
  • top命令,按大写M,自动按内存从高到低排序,前面的就是吃内存大户;
  • 也可以直接一条命令列出:ps aux --sort=-rss
  • 装个 htop 更直观,鼠标点一下就能按内存排序。

怎么看我当前的这个 Linux 系统的 CPU 详细信息是多少?

  • 最简单一条:lscpu直接显示:几颗物理 CPU、多少核心、多少超线程、主频、缓存大小、架构;
  • 只想看 CPU 型号:cat /proc/cpuinfo | grep "model name"
  • 数核心:看有多少个 processor 就是逻辑 CPU 总数。

可用内存怎么看,主要关注哪些数据?

命令:free -h只记 3 个关键点:

  1. available(最关键):系统实打实还能分给新程序用的内存,别看 free 那一列;
  2. Swap used:交换分区如果一直在涨,说明物理内存不够用了,硬盘疯狂读写,服务器必卡;
  3. buff/cache:Linux 闲着也是闲着,拿多余内存加速硬盘读写,这个数值大完全不用慌,内存不够系统会自动收回来。

判断:available 充足、Swap 几乎不用 = 内存健康;Swap 一直在跳涨 = 内存瓶颈。

Linux中查看系统性能的命令

  • CPU:uptime、top、mpstat、pidstat
  • 内存:free、vmstat
  • 磁盘 IO(卡顿重灾区):iostat、iotop、df
  • 网络:ss、iftop
  • 日志查异常:dmesg、journalctl

CPU出现问题怎么排查?

  • 先用 uptime 看负载,4 核机器负载长期大于 4,就是 CPU 扛不住;
  • 打开 top 看三列:
    • us(用户态高):业务代码死循环、疯狂计算,程序本身问题;
    • sy(内核态高):系统内核频繁干活、频繁调用系统接口;
    • wa(iowait 高):根本不是 CPU 坏了,是硬盘读写太慢,CPU 在干等磁盘
  • top 按大写 P,按 CPU 占用排序,找到占用最高的进程 PID;
  • 看进程里面哪个线程耗资源,排查代码死循环、定时任务扎堆执行、挖矿程序。

CPU爆满怎么查、内存泄漏怎么定位

(1)CPU 爆满排查

  1. 看负载 → top 区分是纯计算还是等硬盘 IO;
  2. 揪出高占用进程 → 拆解内部线程;
  3. 查代码 bug(死循环、无限递归)、定时任务、恶意进程。

(2)内存泄漏

内存泄漏:程序申请了一块内存,用完之后代码忘了还给系统,越跑占用越多,慢慢把内存吃光。

排查步骤:

  1. 持续观察 free,available 一点点往下掉,Swap 慢慢上涨;
  2. top 按 M 排序,锁定内存只涨不跌的那个进程;
  3. 对应语言工具查: Java 用 jmap 导出堆文件分析,C 语言用 valgrind,Python 用内存检测模块;
  4. 改代码:关闭没释放的连接、清空无限膨胀的缓存、销毁没用的对象。

什么是oom,有 swap 为什么还会 OOM killer 杀进程

解释 OOM

OOM = 内存用光了。Linux 内核有个自保程序叫 OOM Killer,为了防止整个服务器彻底死机,直接把最吃内存的进程干掉,腾出内存救系统。

有 Swap 还被杀的 4 个原因

  1. Swap 是硬盘,速度比内存慢几万倍,如果大量往 Swap 挪数据,服务器直接卡死,内核不等慢慢交换,直接杀程序最快;
  2. 系统参数 swappiness 设置太低,告诉内核尽量别用 Swap,内存一耗尽直接触发 OOM;
  3. 程序一次性要一大块连续内存,Swap 在硬盘上是零散空间,凑不出连续大块内存,分配失败触发杀进程;
  4. 内核自己内存泄露了,驱动 / 内核模块占死内存,就算应用没占满内存,也会触发 OOM。

查看历史被杀记录:dmesg -T | grep oom

什么是swap?他和虚拟内存是一种东西吗

  1. Swap(交换分区):在硬盘上划出来一块空间,当物理内存不够时,系统把暂时不用的数据扔到硬盘里,腾内存给正在活跃的程序用。缺点就是巨慢。
  2. 虚拟内存:是一整套操作系统的管理规则。简单说:让软件以为自己拥有超大内存,不用管实际物理内存条多大,里面包含分页、缺页调用、Swap 硬盘缓存这一整套机制。

一句话总结:虚拟内存是一套大规则,Swap 只是这套规则里用到的硬盘存储空间,Swap 属于虚拟内存的一部分,不能完全划等号。

Cpu的使用率计算原理是什么

  1. Linux 内核有个像秒表一样的计数器,不停在跳,把 CPU 每时每刻干的活分成 7 类:跑用户程序、跑内核、闲着发呆、等硬盘、处理中断等等;
  2. 隔一小段时间读两次这个秒表数字,算出差值;
  3. 用公式:CPU使用率 =(总干活时间 - 纯发呆空闲时间)÷ 总运行时间 ×100%

补充: 单核 CPU 满负荷是 100%,8 核跑满 top 会显示 800%;按键盘数字 1,可以看到每一个核心各自占用多少。

free 这个命令它输出的结果当中,它的 free 那行和 available 那行,这两列的区别是什么呢

1. Mem.free(free 那一列)

字面意义上彻底空着、啥都没放的裸内存。 Linux 系统有个习惯:空闲内存不会白白浪费,会拿去做磁盘缓存(buff/cache)加速读写,所以 free 数值通常很小,这个数字参考价值极低,不能用来判断够不够内存

2. available(最核心)

系统真正可以立刻拿出来分给新程序的总内存组成 = 狭义 free 内存 + 可以快速回收的 buff/cache 缓存内存 + 可回收的共享内存。

一句话记死

  • free:剩在手里完全闲置的零花钱
  • available:零花钱 + 存在余额宝里随时能取出来的钱 判断内存够不够只看available,别看 free。

如何排查一个系统的CPU负载情况,你说uptime,使用uptime命令后有几个数展示,分别代表什么。

举个例子输出:16:25 up 8 days, 4:12, 2 users, load average: 0.35, 0.41, 0.30

一段一段翻译:

  1. 16:25:服务器现在几点
  2. up 8 days, 4:12:机器开机连续运行了 8 天 4 小时 12 分钟
  3. 2 users:目前有 2 个人登录了这台服务器
  4. load average: 0.35, 0.41, 0.30三个核心负载数字
  • 第一个:最近 1 分钟的平均负载
  • 第二个:最近 5 分钟的平均负载
  • 第三个:最近 15 分钟的平均负载

uptime的负载数是怎么计算的,和CPU核数是什么关系。

负载到底统计啥

系统统计等着要用 CPU 干活的进程总数平均值,包括三种: 正在 CPU 跑的程序、排着队等 CPU 的程序、卡死在磁盘 IO 动不了的程序。 内核定时采样算出来的平均值。

和 CPU 核数最简单理解

举例子:4 核 CPU

  • 负载 = 4:CPU 刚好全部拉满,刚刚好

  • 负载<4:CPU 还有空余,很轻松

  • 负载>4:活太多,任务排队堵了,服务器压力大

口诀:负载数字等于 CPU 核心数就是满载线

CPU使用率越高,uptime越高吗

不一定,完全两码事

情况 1:正常挂钩(最常见)

程序疯狂算东西、死循环、打包编译,CPU 跑满,任务排队,负载跟着涨。

情况 2:负载很高,CPU 却很闲(经典坑)

大量程序卡在读写硬盘(IO 阻塞),进程一动不动不耗 CPU,但系统会把它算进负载里。 现象:load 飘很高,top 看 CPU 使用率几乎为 0。

情况 3:CPU 很高,负载却很低

4 核服务器,只跑一个单线程程序占满其中 1 个核心 整体 CPU 使用率 25%,负载只有 1 左右,数字看着一点不高。

http://www.jsqmd.com/news/1392502/

相关文章:

  • 2026上海科创园区GEO服务商适配度榜单报告
  • 2026年8月怀化屋顶漏水维修哪家好?正规防水修缮科普指南 - 聪居到家
  • KMS_VL_ALL_AIO使用指南:一个开源脚本解决Windows与Office激活的7个关键疑问
  • 餐饮供应链行业企业获客软件精准拓客方法论:基于客户类型的多维筛选策略
  • 面向对象-接口
  • 2026云南电大中专**报名入口!报考流程+专业解析 - 小张zc
  • 2026成都钻石钻戒回收诚信商家一览:无损鉴定当场结算指南 - 资讯快报员
  • 普通人要Codex有什么用?
  • Dism++ 完整上手指南:免费开源系统优化工具,10 分钟跑通清理、更新与备份全流程
  • 从卸载官方软件到彻底掌控:这台ROG笔记本经历了什么?
  • RIP + GRE 配置笔记
  • TLT153 开发实操二:EPC-TLT153 工控虚拟机与串口调试配置
  • 多工具研发链路,如何评估国产化平台的投入产出比?
  • 把照片变成能摸到的立体摆件,这个免费开源的 ImageToSTL 工具怎么用?
  • CRMEB 首届主题设计大赛奖金2万元~
  • Android 定制限制安装功能
  • AI的「寂灭」-龍德明宇
  • 如何用Pixelle-Video开启AI全自动短视频创作:新手一键生成视频的完整指南
  • Python循环关键字break和continue的使用
  • 代码之外09:团队离不开我,晋升名单却没有我
  • 信息发布系统定制速看:2026商业统一信息发布系统开发商推荐 - 选型|行业|价格|案例
  • 2026广东中小建企资质增项测评:6大机构实力对比,批量多资质申报认准专业服务商 - 优质品牌中立测评推荐
  • 2026广州做小程序商城的公司有哪些,广州小程序商城服务商怎么挑
  • WorkBuddy 安装指南(Windows 版):从下载到登录,一篇就够了
  • CS2 直播不想暴露辅助界面?三步配好 OBS 录屏绕过隐藏设置
  • iPhone USB 网络共享失效?这份 Windows 驱动安装与排错完整指南帮你快速搞定
  • 主力资金流向因子怎么挖掘本地化Python全流程实战
  • GetQzonehistory 备份攻略:十分钟把 QQ 空间说说完整归档到本地
  • 破解物理AI技术困局(45):TVA挑战通用表征架构
  • 魔兽争霸3优化工具WarcraftHelper使用教程:解锁帧率、宽屏与地图限制一次搞定