线上问题定位之fastapi服务hang住无响应

2025-05-11  本文已影响0人  daydaygo

写在前面

最近线上一个新功能闪现后, 经常出现报警

prod_服务异常的列表,请重点关注: 
==================================== 
[[http://{host}/api/health](http://{host}/api/health), 504]

而且之前出现过类似的情况: 业务服务的 kafka consumer 实例一启动, 业务服务的 web 实例就马上 hang 住, 不响应任何请求

解决问题第一步: 快速缓解问题

简单说: 加机器, k8s 时代, 就是调整资源, 详细参考上篇内容
最终确认业务所需的资源:

确认完资源侧的问题, 剩下的就是业务侧推进了, 直白点, 根因在业务代码, 靠加资源解决不了问题

解决问题第二步: 定位问题

定位问题基本就是三板斧

这次遇到的问题, 上面的3条路基本都试过

-- nginx error log
2025/05/06 04:00:08 [error] 214903#214903: *5482906 upstream prematurely closed connection while reading response header from upstream, client: {ip}, server: {host}, request: "POST /retrieval/apple_health_data HTTP/1.1", upstream: "http://{ip}:30016/retrieval/apple_health_data", host: "{host}"
2025/05/06 04:00:08 [error] 214904#214904: *5482919 upstream prematurely closed connection while reading response header from upstream, client: {ip}, server: {host}, request: "POST /retrieval/apple_health_data HTTP/1.1", upstream: "http://{ip}:30016/retrieval/apple_health_data", host: "{host}"
业务日志

范围已经缩小了, 剩下有2条路径, 尤其是这个问题涉及到业务服务hang, 有性能问题(cpu/mem/lock)的影子

定位性能问题: profile

这里需要岔开一嘴: 一定要有单测, 有了单测, 才能更快, 更强

写在最后

监控告警有一条黄金法则

海恩法则: 任何不安全事故都是可以预防的+故障的发生是量的积累 -> 长期的做好每件小事 -> 「系统内部还有没有类似问题」「今后如何能不再出现类似问题」

只要坚持 长期做好每件小事 , 就能安享太平

上一篇 下一篇

猜你喜欢

热点阅读