
1) 【一句话结论】:接到生产调度系统(TOS)宕机通知后,需遵循“先外后内、分层排查”原则,优先检查网络与核心中间件(如消息队列、缓存),再查应用与数据库,最后硬件,动态调整步骤,确保快速定位故障并恢复系统,同时控制业务中断风险。
2) 【原理/概念讲解】:故障排查需采用“分层诊断”法,从系统依赖的外部组件向内部组件逐层分析。TOS通常依赖消息队列(如Kafka)处理调度指令、缓存(如Redis)存储实时数据,因此排查时需先验证这些中间件状态。类比:排查电脑无法上网,先检查路由器(网络)是否开启,再查Wi-Fi连接(应用),最后看网卡(硬件),中间可能还要检查DNS服务器(类似中间件)。
3) 【对比与适用场景】:
| 排查阶段 | 工具/方法 | 定义 | 特性 | 使用场景 | 注意点 |
|---|---|---|---|---|---|
| 网络层 | Ping、Traceroute、Wireshark | 检查与外部系统的网络连通性 | 快速判断网络中断点 | 首先确认与调度中心、数据库等的外部连接是否正常 | 若Ping不通,需检查网线、交换机端口或路由配置 |
| 中间件(消息队列) | Kafka命令行(kafka-topics --list)、日志 | 验证消息队列服务状态与消息传递 | 检查队列是否运行、消息是否积压 | 查看Kafka是否正常处理调度指令 | 若队列满或无消息,可能影响应用接收指令 |
| 中间件(缓存) | Redis客户端(redis-cli)、监控工具 | 检查缓存服务状态与数据一致性 | 验证缓存数据是否可用、连接正常 | 确认Redis存储的实时数据(如设备状态)是否完整 | 缓存失效可能导致应用查询慢或数据不一致 |
| 应用层 | 系统日志(tail -f)、服务状态(ps -ef) | 检查应用服务运行状态与错误日志 | 实时监控服务进程,定位应用错误 | 查看TOS应用服务是否启动,日志中的错误信息(如“服务启动失败”“请求超时”) | 日志需结合时间顺序分析,定位具体错误原因 |
| 数据库层 | 数据库客户端(MySQL命令行)、日志 | 验证数据库连接与数据完整性 | 检查数据库服务状态、连接池、数据一致性 | 确认数据库是否正常运行,关键数据(如调度表)是否完整 | 连接失败需先检查数据库服务状态,避免盲目重启 |
| 硬件层 | 硬件监控工具(iDRAC)、状态指示灯 | 检查服务器硬件状态 | 监控CPU温度、内存使用率、硬盘健康 | 检查服务器是否过热或硬件故障 | 硬件异常需联系硬件维护,避免重启导致故障扩大 |
4) 【示例】:
1. 网络检查:
- 执行:ping 192.168.1.100(调度中心IP)
- 若失败:检查网线连接、交换机端口状态,联系网络管理员确认路由配置
- 若成功:继续下一步
2. 中间件检查(消息队列Kafka):
- 执行:kafka-topics --list --bootstrap-server 192.168.1.101:9092
- 若无主题或无数据:检查Kafka服务状态(systemctl status kafka),查看日志(/var/log/kafka/kafka.log)
3. 中间件检查(缓存Redis):
- 执行:redis-cli -h 192.168.1.102 ping
- 若返回PONG:执行:redis-cli -h 192.168.1.102 keys * | head -5(检查缓存数据)
- 若失败:检查Redis服务状态(systemctl status redis),查看日志
4. 应用服务检查:
- 执行:ps -ef | grep TOS
- 若服务未启动:尝试启动(systemctl start TOS),若失败查看日志(tail -f /var/log/TOS/error.log)
- 日志示例:“2024-01-01 10:00:00 ERROR: 无法连接到Kafka,连接超时”
5. 数据库连接验证:
- 执行:mysql -h 192.168.1.103 -u admin -p123456
- 若连接失败:检查数据库服务状态(systemctl status mysql),查看日志
- 若连接成功:执行查询:SELECT COUNT(*) FROM 调度表;
6. 硬件状态检查:
- 执行:iDRAC查看CPU温度(<70℃正常)、内存使用率(<80%正常)
- 若异常:关闭服务器,联系硬件维护
7. 系统恢复:
- 若所有检查通过:重启TOS服务(systemctl restart TOS)
- 若问题未解决:备份数据库(mysqldump 调度表 > backup.sql),联系开发团队分析
5) 【面试口播版答案】:接到港口运营管理公司的生产调度系统(TOS)突然宕机的紧急通知后,我会立即启动故障排查。首先,快速确认网络连接是否正常,通过Ping调度中心IP,若网络通畅,接着检查消息队列(如Kafka)是否正常处理调度指令,再验证Redis缓存数据是否完整。然后查看TOS应用服务日志,分析是否有“消息队列连接失败”或“缓存未命中”的提示。接着用数据库客户端测试连接,确认调度表数据是否可访问。如果这些中间件或数据库层面无问题,再检查服务器硬件状态(如CPU温度、内存使用率)。排查完成后,根据问题原因执行恢复步骤:若服务未启动则重启,若数据库连接失败则尝试重新连接,若硬件异常则联系硬件维护。整个过程遵循“先外后内、分层排查”的原则,动态调整步骤,确保快速定位故障并恢复系统,保障港口运营的连续性。
6) 【追问清单】:
7) 【常见坑/雷区】: