性能分析与故障定位实战

共 21 题
#

1. kernel.core_pattern 如何配置 core dump 落盘(路径、命名与管道转发),core 大小限制(ulimit -c)与生产环境的安全处置

A core 文件不包含敏感内存内容
B 只要设置 core_pattern 就一定会生成 core 文件
C core_pattern 支持以管道转发给 systemd-coredump 等处理程序,且需 ulimit -c 配合才能生成 ✓ 正确答案
D fs.suid_dumpable 与 core dump 无关
#

2. memory cgroup 的 memory.high 与 memory.max 如何实现软、硬内存限制?

A memory.high 与 memory.max 作用相同
B memory.high 超限一定杀死进程
C 两个参数可以任意大于物理内存
D memory.max 超限触发强制回收与 OOM Kill,memory.high 超限进行软回收与节流,生产上通常 high 低于 max 形成两级防护 ✓ 正确答案
#

3. transparent hugepage 在数据库主机的禁用原因

A THP 只能提高性能,没有任何副作用
B THP 的合并与分裂过程会引发 CPU 与延迟抖动,数据库主机通常禁用(never) ✓ 正确答案
C 运行时 echo never 会立即拆分已有大页
D madvise 模式对所有内存都启用大页
#

4. PSI(/proc/pressure)cpu/memory/io stall 指标解读

A some 表示至少一个任务被资源不足延迟的时间占比,full 表示所有任务被延迟,直接度量压力对任务的伤害 ✓ 正确答案
B PSI 与 CPU 使用率含义相同
C full 高说明资源充足
D PSI 只有 1 分钟窗口
#

5. USE 方法(利用率/饱和度/错误)系统性排障

A USE 只关注 CPU 资源
B USE 对每个资源依次考察利用率、饱和度与错误三个维度,是资源视角的系统排障方法 ✓ 正确答案
C 利用率低就一定没有瓶颈
D USE 与 RED 方法相互矛盾
#

6. btrace(blktrace 封装)如何跟踪块设备 IO 请求?

A blk-mq 时代事件语义与单队列完全相同
B blktrace 只能统计吞吐量
C blktrace 通过块层 tracepoint 记录请求从入队到完成的时序,可分析排队与延迟,但生产环境需控制开启时长 ✓ 正确答案
D btrace 不产生任何性能开销
#

7. free -h 输出的内存指标如何解读,可用内存如何估算?

A available 是内核估算的可分配内存(含可回收缓存),比 used/free 更适合判断内存是否够用 ✓ 正确答案
B used 字段准确反映真实内存占用
C buff/cache 完全不可回收
D available 等于 free
#

8. kernel.pid_max 与 fork 失败/无法创建进程的排查中 pid_max 与 threads-max 的关系、容器内 PID 限制与 cgroup pids.max

A pid_max 只限制进程数,与线程无关
B 线程与进程都占用 PID 号空间,失败层级包括 pid_max、threads-max、ulimit -u 与容器 cgroup pids.max,需逐层排查 ✓ 正确答案
C 容器内不会受 pids 限制
D fork 失败只可能是磁盘满
#

9. kernel.shmmax、shmmni、shmall 如何实现共享内存段?

A shmmax 限制单段大小、shmmni 限制段数量、shmall 限制共享内存总页数,过小会导致依赖 SysV 共享内存的应用启动失败 ✓ 正确答案
B shmmax 限制内存条数量
C ipcs 用于查看 CPU 使用
D shmall 的单位是字节
#

10. kernel.yama/ptrace_scope 如何实现 ptrace 限制?

A 默认值 1 只允许 attach 有祖先关系的进程,跨进程调试需 root 或临时调低 ✓ 正确答案
B 取 0 时任何用户都能调试 root 进程
C 取 3 仍可随时通过 sysctl 调低
D 该参数与容器安全无关
#

11. load average 高但 CPU 空闲(D 态/IO 等待)的分析路径

A D 态进程可以直接 kill
B load 只统计 CPU 运行队列
C load 包含不可中断睡眠(D 态)任务,D 态堆积常见于磁盘/NFS 等待,需结合 ps、iostat 与进程栈定位 ✓ 正确答案
D load 高必然伴随 CPU 使用率高
#

12. net.core.somaxconn 与 tcp_max_syn_backlog 溢出导致的连接建立失败(connection reset)如何用 ss 与 netstat 定位

A somaxconn 只影响 SYN 队列
B ss 的 Recv-Q 顶满 backlog 说明 accept 队列溢出,netstat -s 的 ListenOverflows 计数可确认 ✓ 正确答案
C connection reset 只可能是防火墙导致
D accept 队列与 backlog 参数无关
#

13. net.netfilter.nf_conntrack_buckets 如何实现 hash 桶数?

A buckets 决定单连接的超时时间
B conntrack 条目越多越好,无内存代价
C conntrack 表满会静默丢弃新连接(dmesg 报 table full),需按峰值连接数调整 max 与 buckets ✓ 正确答案
D conntrack 只影响 TCP 已建立连接
#

14. ps auxf 如何以进程树形式查看进程父子关系?

A f 选项以树形展示进程父子层级,便于定位启动链条与孤儿/异常派生进程 ✓ 正确答案
B auxf 输出与 PPID 无关
C pstree 不能查看 PID
D 树形输出不受 pid namespace 影响
#

15. vm.overcommit_memory 三种模式与 malloc 大内存申请的关系,以及 overcommit 导致进程被 OOM 的排查

A OOM 只发生在模式 2
B overcommit_memory=2 会禁止所有内存分配
C malloc 是乐观分配,模式 0/1 下大内存申请常成功、运行期才被 OOM 杀,模式 2 则分配时即可能失败 ✓ 正确答案
D overcommit_ratio 与模式 0 有关
#

16. 磁盘 IO 调度器(mq-deadline/none/bfq)在 NVMe 与机械盘场景的选型依据与验证方法

A none 调度器会让机械盘性能达到 NVMe 水平
B bfq 的 CPU 开销最低
C NVMe 多队列设备通常用 none 避免调度开销,机械盘用 mq-deadline/bfq 减少寻道并保障延迟 ✓ 正确答案
D 调度器对 SSD 完全没有影响
#

17. cat /proc/<pid>/clear_refs 如何重置页表引用位以测量进程内存使用?

A 写入后立即清空 RSS
B clear_refs 会直接释放进程内存
C 清除引用位后读取 smaps 的 Referenced,可测量时间窗内实际被访问的页,识别驻留未用的内存 ✓ 正确答案
D 该接口对所有进程都可无权限写入
#

18. cat /proc/<pid>/io 如何查看进程的 IO 统计?

A 该文件不含系统调用次数
B rchar 统计的是网络流量
C write_bytes 一定大于 wchar
D rchar/wchar 是逻辑读写量,read_bytes/write_bytes 是落盘物理量,组合可区分缓存吸收与实际磁盘压力 ✓ 正确答案
#

19. cat /proc/<pid>/oom_score_adj 如何调整进程的 OOM 优先级?

A 取值范围 -1000 到 1000,-1000 使进程对宿主级 OOM Killer 免疫,常用于保护关键进程 ✓ 正确答案
B 普通用户可任意把任意进程设为 -1000
C oom_score_adj 与 oom_score 无关
D 设置后需重启进程生效
#

20. cat /proc/cpuinfo 如何查看 CPU 型号、核数与特性?

A 容器内 cpuinfo 必然反映容器独享的虚拟核
B cpu cores 字段是逻辑核数
C flags 只包含厂商信息
D physical id 与 core id 组合可统计物理核数,processor 条目数即逻辑核数,flags 反映指令集特性 ✓ 正确答案
#

21. cat /proc/meminfo 如何查看内存的详细统计?

A MemAvailable 估算含可回收缓存的可用内存,比 MemFree 更能反映实际可用性 ✓ 正确答案
B Cached 全部不可回收
C Committed_AS 与 overcommit 机制无关
D SwapFree 与内存压力判断无关