大佬有什么好用的顺手的问题排查工具都可以推荐,python 和 go 中不知道有没有类似 JAVA 的 GC 这种的排查工具?
公司最近业务系统使用中反馈慢,APP 项目有时候打开页面老是转圈(周末高峰期会出现)。
后端:Tornado(python)+nginx+mysql
前端:ios 原生+h5 。
服务器: 阿里云 8 核 32G
部署:单进程+端口号 起了 6 个进程 upstream 负载。
1.后端日志没有发现 error 信息,请求正常。
2.nginx 日志在同一时间段会重复出现 recv() failed (104: Connection reset by peer)
3.top 查看 cpu 、内存、服务器负载都正常。nginx 加了$request_time 显示请求时间。
4.而且把出问题那一段时间的 nginx 日志找出来,都是同一个端口报的,而且前面 1-2 分钟之内有几个接口返回 30s 。
4.百度 nginx 的错误根据指导方案:nginx 连接数调高、buffer 缓存调大、keepalive 加了长连接。
5.自己这边又增加服务进程数(由原来 6-10 ,又增加了两台服务器负载一共 20 个进程)、慢接口进行读写分离优化。
6.最后增加自动访问接口提醒功能,超时提醒。[前端]优化了超时时间 30s 改 10s 、优化了页面快速切换的重复请求。
最后周末没有再出现转圈问题,整个一套组合拳打下来具体也不清楚是那里给治好了。
后来我仔细分析了一下:
1.数据库连接瓶颈,Tornado 每起动一个进程+端口服务会初始化一个数据库连接,所有的请求都用一个数据库连接。
2.python 单进程-单线程模式,堵塞造成的。
一个请求过来,单线程去处理,然后这个线程就去使用数据库连接,遇到一些统计查询慢 SQL ,很长时间返回造成这个单进程端口下的堵塞( nginx 报的那个问题)。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.