23 道故障排查:网络与性能练习题及答案
CompTIA Linux+ 认证考试练习的全部故障排查:网络与性能练习题,附正确答案和简短解析。
开始练习测验 →1. 有用户报告从一台 Linux 服务器无法访问内部应用。在该服务器上执行 `ping 10.40.12.15`(应用服务器的地址)成功,往返时延正常;而 `ping app.corp.example` 返回 'ping: app.corp.example: Name or service not known'。这些证据证明了什么,接下来应该检查什么?
- A.路由层可达性已证明,故障在名称解析——查 /etc/resolv.conf 的 nameserver 条目和 resolvectl status 输出。✓ 答案
- B.默认网关缺失,因此无法到达任何远程网络——把 ip route 打印的每条条目与 ip addr 显示的接口地址和掩码逐一比对。
- C.该应用的端口被过滤,会话根本无法建立——在这台服务器上用 firewall-cmd --list-all 查看活动区域及其放行的端口与服务。
- D.接口没有取得可用的租约,任何数据包都无法离开主机——用 nmcli device status 检查设备状态与当前激活的连接配置。
ping 字面地址成功,说明接口、路由和远端主机都正常,即路由层及其以下都通;同一个 ping 用名称失败且报的是解析器错误而不是超时,就把问题锁定在名称解析这一步,而在使用 systemd-resolved 的主机上,这一步由 /etc/resolv.conf 配置、由 resolvectl status 报告。
编号 QB-6BF9YN依据: CompTIA Linux+ exam objectives, Troubleshooting domain — analyzing networking issues (DNS issues); resolv.conf(5) and systemd-resolved(8) manual pages报告此题的问题
2. 在一台 Linux 主机上,`dig +short files.corp.example` 返回 '10.60.4.20',但 `getent hosts files.corp.example` 没有任何输出,应用报错 'Temporary failure in name resolution'。应当首先检查哪个文件,为什么?
- A./etc/resolv.conf,因为 dig 读取自己独立的配置,而 C 库的 nameserver 列表只来自这个文件。
- B./etc/nsswitch.conf,因为其中的 hosts 行决定 C 库查询哪些来源,而 dig 直接向 DNS 服务器发问。✓ 答案
- C./etc/hosts,因为其中的静态条目会先返回给 dig,根本不会联系 nameserver,所以两个工具结果不同。
- D./etc/services,因为 C 库会先把服务名解析成端口号,然后才去为该主机查询对应的地址记录。
dig 把查询直接发给 DNS 服务器,所以 dig 成功只证明 DNS 本身在作答;getent 走的是普通程序使用的完整 Name Service Switch 路径,因此一个成功、一个失败时,差异出在开关配置上——也就是 /etc/nsswitch.conf 的 hosts 行,它列出并排序了 C 库可以使用的来源。
编号 QB-NT94DN依据: nsswitch.conf(5) and getent(1) manual pages; CompTIA Linux+ exam objectives, network services and configuration (/etc/nsswitch.conf)报告此题的问题
3. 某 Web 服务已迁移到新地址。在一台 Linux 客户端上,`dig +short reports.corp.example` 返回 '172.18.9.60',但 `getent hosts reports.corp.example` 打印 '172.18.9.31 reports.corp.example',curl 仍然连到 172.18.9.31。最可能的原因是什么?
- A.该记录在权威服务器上的 time-to-live 还没到期,所以在到期之前每次查询都会拿到旧地址。
- B.curl 在两次调用之间保留自己的地址缓存,因此会重用上一次成功建立连接时所用的那个地址。
- C./etc/hosts 里该名称的过期条目先于 DNS 被采用,所以库返回旧地址,而 dig 返回新地址。✓ 答案
- D./etc/resolv.conf 中第二个搜索后缀被优先追加,于是该名称由另一个区域作答,与 dig 查询的不同。
在 Name Service Switch 把 files 排在 dns 之前的主机上,/etc/hosts 中的条目直接胜出,该名称根本不会发起 DNS 查询;而 dig 从不读取 /etc/hosts,所以它报告的是当前的 DNS 答案。dig 与 getent 或 curl 结果分歧,正是本地静态条目的特征,而且它不像缓存答案那样会自行过期。
编号 QB-5B4XSM依据: hosts(5) and nsswitch.conf(5) manual pages; CompTIA Linux+ exam objectives, Troubleshooting domain — DNS issues报告此题的问题
4. 两台 Linux 服务器位于同一子网。在 serverA 上 `getent hosts vpn.corp.example` 返回地址;在 serverB 上同一命令没有输出,但从 serverB `ping` 该地址成功,且两台主机都能访问互联网。最可能的原因是什么,应该从哪里开始检查?
- A.权威区域在间歇性作答,应在两台主机上反复用 dig 查询其 nameserver,直到答案出现差异。
- B.serverB 通告的 MTU 较小,较大的应答在途中被丢弃,先用 ping -M do -s 从 serverB 探测路径。
- C.两台主机查询的解析器不同,用 resolvectl status 比较各自实际使用的 nameserver 与搜索域设置。✓ 答案
- D.serverB 的时钟偏差过大导致应答校验失败,用 timedatectl 比较两台主机的时间与同步状态。
名称解析是逐主机的配置:每台机器都有自己的解析器列表、搜索域和 Name Service Switch 顺序,所以即使在同一个子网内,同样的查询也可能在一台主机成功而在邻机失败。由于从失败的主机 ping 该地址是通的,连通性和路由都完好,问题就指向这台主机自己的解析器配置,而不是网络或那个区域。
编号 QB-RTB4WR依据: resolv.conf(5) and resolvectl(1) manual pages; CompTIA Linux+ exam objectives, Troubleshooting domain — DNS issues报告此题的问题
5. 一台 Linux 客户端执行 `curl http://10.44.2.18:8080/health`,几乎立即返回 'curl: (7) Failed to connect to 10.44.2.18 port 8080: Connection refused',而 ping 10.44.2.18 是成功的。这个错误证明了什么?
- A.服务在握手阶段拒绝了会话,传输层开了又关——在客户端用 openssl s_client 测试协商过程。
- B.包过滤在入站方向丢弃了请求,所以客户端不再等待——用 firewall-cmd --list-all 查看生效规则。
- C.通往该网络的路由缺失,请求根本没离开客户端——用 ip route get 显示内核会选择的路由。
- D.数据包已到达该主机,内核因为该端口上没有进程监听而回了 reset——用 ss -tulnp 确认监听套接字。✓ 答案
被拒绝本身就是一种回答:目标主机收到了报文,其内核返回了 reset,而这发生在该端口上没有任何程序绑定时,因此接口、路由和主机都已被证明正常,排查应转向服务及其监听套接字。由于回应是立即而非延迟的,静默过滤和缺失路由都被排除,ss -tulnp 能显示服务实际占用的地址和端口。
编号 QB-8B6XAR依据: ss(8) manual page and curl exit-code documentation; CompTIA Linux+ exam objectives, Troubleshooting domain — server unreachable versus a service that is not listening报告此题的问题
6. 针对同一台 Linux 主机,`nc -vz 10.44.2.18 8080` 等待很久后以 'Connection timed out' 结束,而 `nc -vz 10.44.2.18 9100` 立即返回 'Connection refused'。哪种解释同时符合这两个结果?
- A.两个端口都没有监听者,8080 上的延迟只是因为接受握手的程序比 9100 后面的那个更慢一些。
- B.8080 后面的进程卡在不可中断睡眠中无法 accept,而 9100 后面的进程正在运行并拒绝请求。
- C.去往 8080 的流量在任何进程看到之前就被静默丢弃,而 9100 由一台没有程序绑定的主机回了 reset。✓ 答案
- D.8080 被应用自身的访问控制挡下,而 9100 是被主机前面的包过滤器过滤掉的,两者机制不同。
这两种失败来自不同机制:过滤器丢包时客户端根本收不到任何回应,于是不断重传直到自己的超时到期;而没有监听者的端口会立即产生 reset,报为 'Connection refused'。因此超时指向静默过滤或黑洞路径,被拒绝则指向一台可达但服务缺失或已停止的主机。
编号 QB-QTYRQQ依据: CompTIA Linux+ exam objectives, Troubleshooting domain — misconfigured firewalls and server unreachable; firewalld and nftables documentation on drop versus reject targets报告此题的问题
7. 某 Linux 服务器上的报表守护进程在本机执行 `curl http://localhost:9000` 有响应,但所有远端客户端都超时,尽管防火墙已放行 9000/tcp。`ss -tulnp` 显示:'LISTEN 0 128 127.0.0.1:9000 0.0.0.0:* users:(("reportd",pid=1422,fd=6))'。原因是什么?
- A.防火墙规则加到了该接口并未使用的区域,所以远端数据包在到达守护进程之前就被过滤掉了。
- B.监听队列上限 128 已被本地客户端占满,远端握手一直排队,直到客户端放弃并报告超时。
- C.该守护进程只绑定在环回地址上,因此从物理接口到达的数据包找不到可投递的匹配套接字。✓ 答案
- D.该守护进程以非特权身份运行,内核接受本地客户端,却拒绝来自主机外部的连接请求。
绑定在 127.0.0.1 的套接字只存在于环回路径中,因此从物理接口到达、目标端口为 9000 的数据包找不到匹配套接字,会被回 reset 或丢弃,无论防火墙怎么放行都一样。修复要在服务自身配置里做——把它绑定到可路由地址或通配地址并重启——而 ss 正是揭示服务实际占用了哪个地址的工具。
编号 QB-7BTK5Q依据: ss(8) and ip(8) manual pages; CompTIA Linux+ exam objectives, Troubleshooting domain — services bound to the wrong address报告此题的问题
8. 一台 Linux 主机显示 'inet 10.10.4.37/16 brd 10.10.255.255 scope global ens192',路由表中含 'default via 10.10.4.1 dev ens192' 和 '10.10.0.0/16 dev ens192 proto kernel scope link'。它实际所在的网段是 10.10.4.0/24,10.10.0.0/16 的其余部分都在网关后面路由。该主机能访问 10.10.4.0/24 的邻居和互联网主机,但 `ssh 10.10.9.20` 立即失败并报 'connect: No route to host'。原因是什么?
- A.由该前缀推导出的广播地址不正确,因此凡是本机 /24 之外的目标都无法完成地址解析过程。
- B.默认路由不可用,因为其下一跳落在一个 link scope 网络内,内核在发送前就丢弃了出网段的流量。
- C.前缀写得过宽,主机以为 10.10.9.20 与自己直连,于是在本网段上用 ARP 去解析它,而不把包交给网关。✓ 答案
- D.网关没有指向 /16 源地址的回程路由,10.10.9.20 的应答在返回途中被丢弃,客户端只能本地报错。
前缀长度决定内核认为哪些地址在本链路上。配成 /16 后,内核为整个 10.10.0.0/16 安装了一条 link scope 路由,这条更具体的路由胜过默认路由,所以发往 10.10.9.20 的包永远不会交给网关;主机反而去为一台并不在同一根线上的设备发 ARP,于是立即以 'No route to host' 失败。把前缀改回 /24 就能恢复经网关到 /16 其余部分的路径。
编号 QB-JT74VH依据: ip-address(8) and ip-route(8) manual pages; CompTIA Linux+ exam objectives, Troubleshooting domain — interface misconfiguration (subnet) and routing issues报告此题的问题
9. 一台由 NetworkManager 管理的新装 Linux 服务器能访问本子网内的所有主机,却到不了子网之外,向子网外解析器的查询也超时。`ip route` 只打印一行:'10.50.8.0/24 dev eth0 proto kernel scope link src 10.50.8.22'。可以得出什么结论,下一步该怎么做?
- A.反向路径过滤把返回的应答丢掉了——用 sysctl 放宽该接口的 rp_filter 设置,然后重新测试连接。
- B.链路被管理性关闭,只有仍然留在邻居缓存中的条目还能应答——先把接口拉起来,再用 ip link 确认载波状态。
- C.解析器列表为空,名称查询根本到不了任何服务器——用 nmcli 把 nameserver 地址加入 NetworkManager 配置。
- D.没有安装默认路由,去往其他网络的流量无处可去——用 nmcli 在 NetworkManager 配置中设置网关并重新激活。✓ 答案
内核只在有路由匹配目标时才转发数据包,因此当只有本地 /24 的 link scope 路由而没有默认路由时,10.50.8.0/24 之外的一切都会立即失败,子网外的解析器也变得不可达,这也是名称查询超时的原因。在 NetworkManager 主机上,持久的修复是把网关写进连接配置,使其在重新激活和重启后依然生效,而不是手工添加一条路由。
编号 QB-2B2X9H依据: ip-route(8) and nmcli(1) manual pages; CompTIA Linux+ exam objectives, Troubleshooting domain — routing issues (gateway)报告此题的问题
10. 在连接两个站点的隧道上,向一台 Linux 服务器执行 `ping -c 4` 报告零丢包,SSH 能连上并打印出横幅然后卡死,较大的 HTTPS 下载在几千字节后停滞。从客户端执行 `ping -M do -s 1472 remote` 返回 'From 10.1.1.1 icmp_seq=1 Frag needed and DF set (mtu=1400)',而 `ping -M do -s 1372 remote` 成功。这是怎么回事?
- A.远端防火墙一旦开始批量传输就对会话限速,所以握手能正常完成,之后吞吐量就跌到几乎为零。
- B.本地链路两端的双工设置不一致,只有当链路持续双向承载流量时才会出现错误。
- C.隧道的密钥重协商中途失败,所以横幅能交换,但会话在重新协商密钥之后无法再传数据。
- D.路径上有一跳只接受比接口通告更小的数据包,满尺寸报文被丢弃,会话在小量交互之后就卡住。✓ 答案
小数据包和初始握手能塞进路径上最小的那段链路,所以可达性测试和登录横幅都成功;但会话一开始发送满尺寸报文就超过该限制而被丢弃,这正是 'Frag needed and DF set (mtu=1400)' 这条应答所报告的内容,而用 ping -M do 能通过的最大载荷就量出了可用的路径尺寸。办法是把接口或隧道的报文尺寸调整为与该路径一致。
编号 QB-C7H6E4依据: ping(8) manual page and kernel networking documentation on path MTU discovery; CompTIA Linux+ exam objectives, Troubleshooting domain — interface misconfiguration (MTU mismatch)报告此题的问题
11. 一台使用静态地址的 Linux 数据库服务器会间歇性掉线数秒。邻机上的 tcpdump 显示 'ARP, Reply 10.50.8.40 is-at 00:50:56:9a:11:22',片刻之后又显示 'ARP, Reply 10.50.8.40 is-at 52:54:00:3c:4d:5e',而该服务器的日志记录了一次地址冲突。哪一步首要动作能找出肇事设备?
- A.重启数据库服务器上的网络服务,让它重新声明该地址,从而清掉网段上的重复条目。
- B.记下不属于该服务器的那个硬件地址,通过交换机的转发表把它追溯到具体端口。✓ 答案
- C.用 sysctl 缩短数据库服务器邻居缓存的有效期,让过时的硬件地址更早被丢弃掉。
- D.把数据库服务器改成由 DHCP 分配地址,使它拿到网段上没有其他设备在用的地址。
同一个地址由两个不同的硬件地址来应答 ARP,正是地址冲突的特征,而日志中的冲突消息也确认服务器自己检测到了竞争者。唯一能指向第二台机器的信息就是那个意外的硬件地址,交换机的转发表可以把它对应到端口,从而找到设备;而给服务器换地址或重新获取地址只是掩盖症状,并没有清除重复占用者。
编号 QB-VPPBZ4依据: ip-neighbour(8) and arp(8) manual pages; CompTIA Linux+ exam objectives, Troubleshooting domain — IP conflicts报告此题的问题
12. 在一台运行 firewalld 的 RPM 系服务器上,管理员执行了 'firewall-cmd --zone=public --add-port=8443/tcp',随后客户端连接正常。下一次重启之后连接又开始超时,'firewall-cmd --list-ports' 什么也不打印。如何解释?
- A.接口在开机时被重新划入了默认区域,因此该端口现在放行在服务器上没有任何接口绑定的那个区域里。
- B.放行端口时没有对应的 service 定义,firewalld 下次启动时会删除没有服务认领的端口规则。
- C.这个更改其实从未生效,因为运行时端口要等到之后执行了 firewall-cmd --reload 才会对新连接起作用。
- D.该端口只进入了运行时配置,除非同样用 --permanent 写入,firewalld 在重载或重启时就会丢弃它。✓ 答案
firewalld 维护两套配置:运行时配置立即生效,但在重载、重启或关机后丢失;永久配置则在启动时加载。因此不带 --permanent 的更改能一直有效到服务重载,然后就消失了,所以持久的做法是用 --permanent 添加端口,再执行重载,让保存的配置成为正在运行的配置。
编号 QB-B76U83依据: firewall-cmd(1) and firewalld.zone(5) documentation on runtime versus permanent configuration; CompTIA Linux+ exam objectives, firewall configuration报告此题的问题
13. 用户反映一台八核 Linux 服务器上的应用很慢。'uptime' 显示 'load average: 16.42, 15.98, 14.21',top 的汇总行为 '%Cpu(s): 3.1 us, 2.4 sy, 0.0 ni, 12.0 id, 82.1 wa, 0.0 hi, 0.4 si, 0.0 st'。这些数字说明什么?
- A.任务在排队等待输入输出而不是等处理器时间,尽管平均负载是核心数的两倍,瓶颈仍在存储路径。✓ 答案
- B.处理器已经饱和,因为平均负载远高于核心数,必须把工作迁走或者为这台主机增加核心。
- C.内存已耗尽,内核在不断回收页面,等待部分的处理器时间代表的正是这种回收活动。
- D.对这个规模的主机来说这些数字很正常,因为平均负载统计调度器跟踪的所有线程,无论是否在运行。
平均负载统计的是想要运行的进程加上处于不可中断睡眠的进程,所以它衡量的是需求而不是处理器利用率,必须结合核心数和处理器时间的构成才有意义。这里用户态和系统态时间都很小,而等待占 82.1%,说明处理器大多在空等存储完成请求,排查应指向磁盘或远端存储路径。
编号 QB-UPBZT3依据: proc(5) description of /proc/loadavg and top(1) manual page; CompTIA Linux+ exam objectives, Troubleshooting domain — high load average and high I/O wait time报告此题的问题
14. 有人告诉管理员某台 Linux 服务器内存不足。'free -h' 报告 'Mem: total 31Gi, used 9.8Gi, free 0.6Gi, shared 0.4Gi, buff/cache 21Gi, available 20Gi' 以及 'Swap: total 4.0Gi, used 0Ki, free 4.0Gi'。这份输出实际说明了什么?
- A.主机几乎没有内存了,因为 free 一列才是内核能立刻交给申请更多内存的进程使用的部分。
- B.确实存在泄漏,因为缓存增长而空闲内存减少,正是泄漏进程逐步吃掉剩余内存的表现。
- C.大部分内存是可回收的页缓存,available 一列才是新工作还能拿到的量,所以内存并未耗尽。✓ 答案
- D.交换分区已经吸收了压力,未被使用的 swap 数字说明短缺已经缓解,目前不需要再做处理。
Linux 会刻意把闲置内存用作页缓存,所以繁忙服务器上 free 很小是正常的,因为这部分缓存可以按需回收。真正描述余量的数字是 available,它估算新负载在不把系统推入交换的前提下还能分配多少;这里总量的大部分都是 available,而且交换分区完全没用,所以并不存在需要处理的短缺。
编号 QB-A7TG32依据: free(1) manual page and proc(5) description of MemAvailable in /proc/meminfo; CompTIA Linux+ exam objectives, Troubleshooting domain — out of memory and memory leaks报告此题的问题
15. 一台 Linux 主机连在 shell 里操作都很迟滞。'vmstat 1' 稳定输出的一行是:'r 6 b 3 swpd 3891200 free 71232 buff 1024 cache 96256 si 2144 so 2560 bi 8412 bo 9100 in 6210 cs 14820 us 12 sy 9 id 4 wa 75 st 0'。对这份输出的哪种解读是正确的?
- A.主机在持续把匿名内存换入换出,正是这些磁盘流量造成了高等待时间和终端迟滞。✓ 答案
- B.处理器是瓶颈,因为运行队列高于核心数,再加上稳定的上下文切换,说明调度器已经饱和。
- C.这些列显示的只是普通文件读写,因为 swap 两列报告的仅是系统当前配置的交换空间大小。
- D.应该移除交换分区来消除磁盘流量,因为正在换页的主机一旦停用交换设备就会恢复正常。
si 与 so 两列统计的是每秒在内存与交换设备之间搬运的数据量,因此持续非零意味着系统正在实际换页,而换页是内存不足的后果而非原因。被阻塞的进程和很高的等待比例,都源于这些交换流量与正常磁盘活动争抢资源,所以解决办法是降低内存需求或增加内存,而不是把交换撤掉。
编号 QB-TPYNN2依据: vmstat(8) manual page and proc(5) memory fields; CompTIA Linux+ exam objectives, Troubleshooting domain — swapping and system unresponsiveness报告此题的问题
16. 一个 Java 服务在夜间消失,其自身日志里没有任何记录。该时段的 'journalctl -k' 中含有:'Out of memory: Killed process 8123 (java) total-vm:9814232kB, anon-rss:7521288kB, file-rss:0kB, shmem-rss:0kB, UID:994 pgtables:15100kB oom_score_adj:0'。这证明了什么,应当如何跟进?
- A.内核可用内存耗尽并杀掉了占用最多的进程,应把该服务的内存用量与主机容量对照,调整限额或加内存。✓ 答案
- B.是管理员或某个计划任务用信号终止了服务,应审查任务定义与 shell 历史,查找该时段的误杀。
- C.分配失败是因为没有交换设备,加上 swap 就能让内核在下次内存不足时不再挑中这个进程。
- D.服务是自行退出的,内核只是记录了这件事,应启用核心转储,从应用一侧分析下一次故障。
'Out of memory: Killed process' 这一行由内核的内存不足终止器写入,它在无法满足分配时按评分挑选牺牲者,因此这条记录证明是主机结束了该进程,而不是应用自己崩溃,anon-rss 则显示了牺牲者占用的常驻匿名内存有多大。所以跟进方向是容量或给该服务设内存限额,因为交换只能推迟短缺而不能消除它。
编号 QB-DYDTWT依据: kernel documentation on the out-of-memory killer and proc(5) oom_score_adj; CompTIA Linux+ exam objectives, Troubleshooting domain — out of memory and killed processes报告此题的问题
17. 某 Linux 主机上的夜间批处理作业耗时远超以往,而 'top' 显示主机大体空闲。'mpstat -P ALL 1' 报告 'all: %usr 12.60 %sys 0.75 %iowait 0.10 %steal 0.00 %idle 86.50'、'CPU 0: %usr 99.00 %sys 1.00 %idle 0.00',其余每个核心的空闲率都在 95% 以上。这说明什么?
- A.调度器没能均衡负载,应当用 taskset 把该作业绑定到较空闲的核心上,把需求分散开。
- B.某个单线程进程已把一个核心跑满,总体空闲率掩盖了这个作业真实存在的处理器瓶颈。✓ 答案
- C.主机是空闲的,延迟来自别处,因为判断处理器是否成为限制要看总体那一行的数字。
- D.中断风暴占满了一个核心,补救办法是调整 IRQ 亲和性,把该设备的中断分散到其他核心。
总体处理器数字是所有核心的平均值,所以在其余核心都很闲的主机上,一个被跑满的核心只体现为一个不高的总体百分比,只有按核心查看才能暴露这种饱和。由于忙碌核心的时间是用户态时间,中断和等待都可忽略,限制就是干活的那个单线程,因此下一步是定位该进程并把它并行化或重新调度,而不是换个核心跑。
编号 QB-WFKYGU依据: mpstat(1) and top(1) manual pages; CompTIA Linux+ exam objectives, Troubleshooting domain — CPU bottleneck and high CPU usage报告此题的问题
18. 某 Linux 服务器上的数据库查询很慢,而处理器大多空闲。'iostat -xz 1' 对数据盘报告:'sdb r/s 412.0 w/s 128.0 rkB/s 6592.0 wkB/s 2048.0 aqu-sz 23.40 r_await 52.80 w_await 61.30 %util 99.80'。这份证据说明了什么?
- A.传输速率并不高,所以设备不是限制因素,延迟应当来自数据库上运行的查询执行计划。
- B.该设备上的文件系统快满了,这就是每个请求的利用率都被报成接近百分之百的原因。
- C.请求太小不够高效,提高预读值直到平均请求变大,才能把设备利用率降下来。
- D.该设备已在满负荷运行,请求队列很长、服务时间达到几十毫秒,查询等的正是存储延迟。✓ 答案
设备利用率接近百分之百,同时平均队列深度远大于 1、await 达到几十毫秒,描述的正是一个已经饱和的设备:请求的大部分时间花在排队而不是被服务上。既然处理器空闲而等待时间不断累积,瓶颈就在存储路径;而且 %util 描述的是设备有多忙,不是上面的文件系统有多满。
编号 QB-CY2GRS依据: iostat(1) manual page; CompTIA Linux+ exam objectives, Troubleshooting domain — high disk latency, low throughput and high I/O wait time报告此题的问题
19. 在一台 Linux 主机上,'ps -eo pid,stat,wchan:20,comm' 打印出 ' 4411 D wait_on_page_bit backupd' 和 ' 4520 Z - reportgen'。两者都已被发送过 SIGKILL,却仍然列在进程表中。应当分别如何处理?
- A.对两个进程再发一次 SIGKILL,因为不可中断的进程和僵尸进程在同一信号再次送达后都会消失。
- B.先修复第一个进程卡住的输入输出路径,第二个由其父进程回收即可,两种状态都不响应信号。✓ 答案
- C.用 renice 提高两者的优先级,让调度器把它们运行完,从而释放它们仍然占着的那些资源。
- D.重启主机,因为处于这两种状态之一的进程已经泄漏了内核内存,系统运行期间无法回收。
处于 D 状态的进程阻塞在内核中一个不可中断的操作上,在该输入输出完成或失败之前任何信号都不会被送达,所以要修的是它所等待的设备、文件系统或网络路径。僵尸进程则已经退出,除了进程表中的一条记录外不占任何资源,只要父进程调用 wait 该记录就会消失,因此向父进程发信号或重启父进程能清掉它,而对僵尸本身发信号毫无作用。
编号 QB-VF8NBT依据: ps(1) process state codes and proc(5); CompTIA Linux+ exam objectives, process states including blocked and zombie, and signal handling报告此题的问题
20. 某 Linux 服务器上的 Web 应用在高负载下开始拒绝新连接,日志里充满 'accept: Too many open files'。该主机处理器空闲,可用内存还有好几 GB。原因是什么,如何确认?
- A.该进程已达到打开文件数上限——用 lsof 数出它持有的描述符,并与 /proc/<PID>/limits 比较。✓ 答案
- B.出站端口范围已耗尽——无法再分配新的套接字,可用 sysctl 查看 ip_local_port_range 设置。
- C.监听队列相对到达速率太短——连接在套接字层被丢弃,可用 sysctl 查看 somaxconn 设置。
- D.文件系统的 inode 已经用尽——空间还有,但再也创建不了新文件,可用 df -i 对各个挂载点确认。
'Too many open files' 是进程达到自身可打开文件描述符上限时收到的错误,而每一个被 accept 的套接字都像打开的文件一样占用一个描述符,所以在处理器和内存都还有余量的机器上,繁忙的服务依然可能耗尽这个上限。统计该进程持有的描述符数并读取为它记录的限额即可确认,随后要为该服务而不是为交互式 shell 提高上限。
编号 QB-DWFNWT依据: RLIMIT_NOFILE as described in proc(5) and the POSIX shell ulimit specification; CompTIA Linux+ exam objectives, process limits报告此题的问题
21. 用户只反映了一句「服务器很慢」。这台 Linux 主机上跑着好几个应用,监控也没有触发任何告警。哪种做法符合公认的排障顺序?
- A.先确定哪个资源受限,再把这个限制归因到具体进程,然后只改一处并验证效果。✓ 答案
- B.先重启最大的那个应用,因为一次重启清掉泄漏内存和陈旧连接,比任何测量都快。
- C.先调整最繁忙进程的调度优先级,然后观察调整稳定后用户的抱怨是否随之消失。
- D.先在接口上抓包,因为用户能察觉到的缓慢,更多情况下是网络问题而不是主机问题。
排障是一步步收窄的过程:像「慢」这样笼统的抱怨,必须先用系统自身的计数器把它归到某个资源上——处理器、内存、存储或网络,然后才归到消耗该资源的进程。先动手再测量(比如重启或调优先级)会破坏证据并可能掩盖原因,而每次只改一个变量,才能让验证环节把改善归因清楚。
编号 QB-VDAGBT依据: CompTIA Linux+ exam objectives, Troubleshooting domain — analyzing performance issues, and the methodology of identifying the problem, testing one change and verifying the result报告此题的问题
22. 用户反映某台 Linux 服务器夜间约有十分钟失去响应。到了早上它一切正常,实时工具也看不出任何异常。哪种做法能取得关于该事件的可用证据?
- A.现在就运行 top 和各个进程的计数器,因为它们显示的峰值是自启动以来累计的,仍然能说明昨夜那次事件。
- B.用 journalctl --since 和 --until 回读该时段的内核与单元日志,并先确认日志持久保存。✓ 答案
- C.白天给主机加压以复现停顿,因为实时观察资源是唯一能对一个已经结束的问题做出归因的可靠办法。
- D.检查 shell 历史和进程表,因为造成停顿的那个东西今天早上仍会以同一个进程号存在于系统里面。
对于已经结束的事件,证据只能来自在事件发生时就把它记录下来的东西。日志保存带时间戳的内核与单元消息,可以用 --since 和 --until 查询任意时间窗,但前提是它被配置为跨重启持久保存而不是只存在内存里,所以先确认持久化是答案的一部分;实时工具描述的是当下,无法倒带。
编号 QB-CW4BRS依据: journalctl(1) and journald.conf(5) documentation on time filtering and persistent storage; CompTIA Linux+ exam objectives, Troubleshooting domain — monitoring, logging and log correlation报告此题的问题
23. 有人问管理员:一台八核批处理主机上处理器利用率 85%、平均负载 6,是否属于问题?哪一条考量能给出答案?
- A.凡是利用率超过 80% 的主机都属于超额使用,所以无论这台主机本该做什么,这些数字都是问题。
- B.系统健康时记录的基线能说明这些数字对该负载是否正常,正是基线让一个读数显得异常。✓ 答案
- C.平均负载低于核心数就一定安全,因此不必顾及这台主机平时报告什么,可以直接忽略这些数字。
- D.在内存和存储都空闲之前处理器数字没有意义,只要还有其他资源在使用就无法得出结论。
单个读数本身不构成证据:同样的利用率在一台本来就要把处理器跑满的批处理主机上是健康的,在对时延敏感的服务上却是警报,而平均负载还必须对照核心数来看。系统状态良好时采集的基线提供了这种对照,让一个数字变成一个信号,阈值和告警也只有由基线推导出来才有意义。
编号 QB-UDX56S依据: CompTIA Linux+ exam objectives, Troubleshooting domain — monitoring concepts including baselines, thresholds and alerts (exceeding baselines)报告此题的问题
本考试的其他主题
练习题依据 CompTIA 公布的 Linux+ 考试大纲及 Linux 系统管理的通行实践编写。CompTIA 和 Linux+ 是 CompTIA 的商标,Linux 是 Linus Torvalds 的注册商标;本网站与 CompTIA 无关联,也未获其认可。真实考试除选择题外还包含实操题(performance-based questions),要求在模拟环境中实际完成任务——四选一的题型无法复现这一部分,因此本题库覆盖的是知识部分,请同时在真实系统上动手练习。CompTIA 会定期修订大纲并为每个版本编号:报考前请向 CompTIA 确认现行大纲、考试代码与报考要求。 关于 CompTIA Linux+ 认证 →