大佬有什么好用的顺手的问题排查工具都可以推荐,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 报的那个问题)。 