对于服务响应慢的问题排查和分析(1)
简单描述一下问题现象,主要是两个:1. 手机客户端偶尔有时候会出现卡顿现象,比如显示一直在加载,或者显示超时、连接不上服务器。但重新刷新又会问题消失。 2. 最近一段时间早上网站在10点前后一段时间在办公室访问特别慢,半天刷不出来。app有时候也卡。但同一时间,在服务器上直接wget 网站,速度飞快。
当前的服务架构:api server在一台机器上, 网站服务器web server在另一台机器上, 手机app直接请求api server,web server的大量功能会通过内网ip请求api server。master db和slave db分别在另外两台机器,和api server、web server之间的通信也是走内网ip。
问题排查过程如下:
1. 首先看服务器本身负载问题,包括机器网络环境,有一些是监控宝数据,一些是zabbix监控数据。
web server | api server | master db | slave db | |
cpu负载 |
早上10点左右为一天的最高峰,通常在4-7之间。 下午开盘后一般在2-4之间。其他时间在2以下 |
早上10点左右为一天最高峰,在2-2.5之间 | 5以内 | 5以内 |
网络流量 |
流入较多,高峰期在下午1点-3点,6M左右,流入只有4M左右。 10点的流入是4M左右,流出是2M左右(监控宝数据) |
主要为流出,早上10点前后到达高峰,一般在25M左右(监控宝数据,zabbix数据超过30M) | zabbix数据: 流入不超过1.5M,各时段比较平均。流出在2.5M-4M之间,10点前后也不是一天的最高峰。 | zabbix 数据:流入的峰值在10-14M(这台机器上有抓取),但一天内出现较多,10点左右的流量不比其他时段多。流出的峰值不到1M,并且各时段都差不多。 |
ping响应时间 | 可用率100%,平均响应30ms以内 | 可用率100%,平均响应30ms以内 | 无监控 | 无监控 |
端口连接数(netstat -nap统计) | 早上10点左右为1w多,端口资源总数是2w多。 | 早上10点左右为5w多,端口资源总数在6w多 | 1w以内 | 1w以内 |
服务连接数 | httpd进程在500以内(高峰期的active threads不超过300,Idle Threads为100出头),上限是2000 | httpd进程在800以内(高峰期的active threads是450,Idle Threads为400出头),上限是1024 | 上限800,高峰期连接数最大不超过300 | 上限800,高峰期连接数最大不超过150 |
2. 其次看一下监控宝上对http接口的监控数据,一共监控了3个接口
- 网站首页:web server上
- 大盘行情接口:api server上
- 公司主页:web server上
- 推送服务接口:api server上
3. 查api server和web server上的/var/log/messagess,没有发现错误信息
综上,从上面数据看起来,更像是api和web服务内部性能的问题,而不是系统资源问题。因为在同一台服务器上的公司主页响应速度不慢。而且apache进程数和mysql的进程数都未到上限,我们在日志里也没有发现之前遇到过的mysql连接失败问题。推送服务接口响应慢是一个比较奇怪的现象。因为推送服务的逻辑相对简单。
问题原因仍然待查