Python aiohttp服务响应传递至Apache时出现异常长延迟的排查求助
Python aiohttp服务响应传递至Apache时出现异常长延迟的排查求助
我们的服务采用如下架构:
- HTTPS请求先进入A10四层负载均衡器
- 后端是两台运行Apache的服务器,由Apache终止TLS连接
- Apache配置了
ProxyPass规则,将请求转发到本地的HTTP服务 - 这个本地服务基于Python 3.11.2 + aiohttp实现,用gunicorn托管,运行在Debian 12(bookworm)的VMware虚拟机上
最近有用户反馈请求超时的问题,我们排查了Python应用和Apache的日志后发现,部分超时是由一段奇怪的延迟导致的:Python应用在将响应交给gunicorn(进而传递给Apache)之前会打印一条日志,但这条日志和Apache访问日志的时间差有时候会长达300秒。
这种情况并不常见——我们一天处理约88万请求,只有17个请求的延迟超过30秒,这给调试带来了不小的难度。
如果捕获所有网络流量生成巨大的.pcap文件再去排查,数据量实在太大,而且Apache的响应是加密的,很难在pcap文件中追踪请求ID。
另外,出现延迟的请求大多响应大小在几KB到几MB之间,但偶尔也会遇到响应体小于1KB(本应能塞进单个TCP包)的请求也出现慢响应的情况。
有没有大佬能帮忙分析一下这个延迟可能出现在哪里,以及我该如何进一步调试?
备注:内容来源于stack exchange,提问作者moritz
相关产品推荐
相关产品推荐

