问题分析
zx域名服务器(200.105)早盘负载过高,经查看,发现有如下两个大的因素:
频繁执行的脚本,耗用CPU较高
比如9:50左右,1分钟Load Average达到11:
1 2 3 4 5
| root 16214 2.9 0.2 35456 22932 ? S 09:44 0:05 php /var/www/html/cate/cron/gjzg/OriginalData/../autoScriptIndex.php Gjzg_Cron_OriginalData_QuoteData main root 16219 11.2 3.3 287256 273956 ? S 09:44 0:19 php /var/www/html/cate/cron/gjzg/ProductData/../autoScriptIndex.php Gjzg_Cron_ProductData_RealtimeGenerator generateAllByRealtime root 16392 38.6 0.1 29504 16360 ? R 09:45 0:43 php /var/www/html/cate/cron/gjzg/ActivityData/../autoScriptIndex.php Gjzg_Cron_OriginalData_MrdData getMrdData root 16717 65.3 1.7 160536 147540 ? R 09:46 0:34 /usr/local/bin/php /var/www/activity/applications/level2/scripts/updateHKTenData.php root 16701 65.7 1.5 142156 129032 ? R 09:46 0:34 /usr/local/bin/php /var/www/activity/applications/level2/scripts/updateLevel2CjmxData.php
|
每天的请求量比较大
以2015.12.08的日志为准:
1 2 3 4 5 6 7 8
| cat zx.access.log.1 |wc -l 3546963 cat activity.access.log.1 |wc -l 1857362 cat vis-free.access.log.1 |wc -l 22270 cat cate.access.log.1 |wc -l 618451
|
zx域名高达350多万的请求量,盘中9点至10点期间,并发数达到了148/s,这还不包括其他几个域名。
对zx域名的请求进行分析:
请求量排名:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| php statFlow.php -f /usr/local/nginx/logs/zx.access.log.1 -t /home/zhouchangju/statFlow/ -s n -p cost 19.467571973801
总流量 请求数 平均响应大小 URI 354652367 1488668 239 /interpretation/index/hasinfo 3487366765 790493 4412 /event/harden/stockhistory 413868872 268667 1541 /event/harden/stockreason 856088523 267299 3203 /tracesource/financial/index 5327568 218959 25 /tracesource/js/showtitle 318623420 124797 2554 /event/concept/trace 194268107 66014 2943 /event/api/search 1185320843 60949 19448 /event/api/getharden 144998194 35403 4096 /concept/index/detail 26170207 22001 1190 /report/recommend/cate
|
流量排名:
1 2 3 4 5 6 7 8 9 10 11 12 13
| php statFlow.php -f /usr/local/nginx/logs/zx.access.log.1 -t /home/zhouchangju/statFlow/ -s t
总流量 请求数 平均响应大小 URI 3487366765 790493 4412 /event/harden/stockhistory 1185320843 60949 19448 /event/api/getharden 856088523 267299 3203 /tracesource/financial/index 416551864 9463 44020 /report/ybxt/options 413868872 268667 1541 /event/harden/stockreason 354652367 1488668 239 /interpretation/index/hasinfo 318623420 124797 2554 /event/concept/trace 194268107 66014 2943 /event/api/search 189154709 11310 16725 /event/api/getcase 144998194 35403 4096 /concept/index/detail
|
平均响应大小:
1 2 3 4 5 6 7 8 9 10 11 12
| php statFlow.php -f /usr/local/nginx/logs/zx.access.log.1 -t /home/zhouchangju/statFlow/ -s a 总流量 请求数 平均响应大小 URI 416551864 9463 44020 /report/ybxt/options 76553537 3650 20974 /report/ybxt/syscolumn 1185320843 60949 19448 /event/api/getharden 3982311 214 18609 /shhk/js/highstock 189154709 11310 16725 /event/api/getcase 150592 13 11584 /report/images/ysc 283266 25 11331 /news/page/day 30317 3 10106 /news/page/week 1357013 137 9906 /shhk/cache/hgt 163195 17 9600 /news/page/hour
|
解决方案
CPU占用过高问题
1.和产品经理确认下脚本的执行频率,目前是每分钟执行一次,是否可以延长执行间隔
2.排查脚本性能,看看能否降低资源消耗
请求量过大问题
1 2 3 4 5 6 7 8 9 10
| 354652367 1488668 239 /interpretation/index/hasinfo 功能:94页面判断行业有没有溯源信息 问题:这个请求是客户端直接访问我们这边,发起请求的是热门页面,每天访问量较大 优化: 1.我们这边加上squid缓存(14:30) 2.今后改为走资讯服务器 cat zx.access.log|grep "/interpretation/index/hasinfo"|awk '{print $7}'|wc -l 885694 cat zx.access.log|grep "/interpretation/index/hasinfo"|awk '{print $7}'|grep -E "souniu/$"|wc -l 546751
|
1 2 3 4 5 6 7 8 9 10 11
| 3487366765 790493 4412 /event/harden/stockhistory 功能:涨停分析页面,查询个股的历史涨停资讯 问题: 1.有超过10%的请求,股票代码没有匹配出来,url中是%256 2.功能使用者较多 优化: 1.联系客户端同事排查股票代码匹配问题 2.我们这边加上squid缓存(14:30)
cat zx.access.log.1|grep "/event/harden/stockhistory/code/%256/"|awk '{print $7}'|wc -l 82865
|
1 2 3 4 5 6
| 413868872 268667 1541 /event/harden/stockreason 功能:涨停分析页面,查询个股的涨停原因 问题: 1.功能使用者较多 优化: 1.我们这边加上squid缓存(14:30)
|
1 2 3 4 5 6
| 856088523 267299 3203 /tracesource/financial/index 功能:财务数据标签 问题: 1.功能使用者较多,很容易触发tip页面 优化: 1.我们这边加上squid缓存
|
1 2 3 4
| 5327568 218959 25 /tracesource/js/showtitle.js 功能:财务数据标签上引用的一个js 问题:没有上传资源平台 优化:上传资源平台
|
1 2 3 4 5 6
| 1185320843 60949 19448 /event/api/getharden 功能:涨停分析,请求涨停股列表 问题: 1.功能使用者较多,访问量较大;而且一旦行情好了,返回的股票信息也会增加 优化: 1.我们这边加上squid缓存
|
效果
以12.08和12.09两天,14:30-15:30区间段的请求作为测试样本:
| 数据项 |
12.08 |
12.09 |
12.09/12.08 |
| 总请求数 |
258728 |
214562 |
83% |
| /interpretation/index/hasinfo |
140167 |
120218 |
86% |
| /event/harden/stockhistory |
25809 |
2771 |
11% |
| /event/harden/stockreason |
9789 |
2338 |
24% |
这几个请求,现在做的处理都是添加squid缓存,/interpretation/index/hasinfo的请求方式是POST,无法被squid缓存,因此没有效果,需要联系客户端进行请求机制上的优化。
其他几个请求,今天数据较少,需要等明天晚上再观察一下。