搜索文章

输入关键词开始搜索

服务器高负载问题

程序设计#Linux#AI

问题分析

zx域名服务器(200.105)早盘负载过高,经查看,发现有如下两个大的因素:

频繁执行的脚本,耗用CPU较高

比如9:50左右,1分钟Load Average达到11:

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的日志为准:

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域名的请求进行分析: 请求量排名:

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

流量排名:

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

平均响应大小:

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.排查脚本性能,看看能否降低资源消耗

请求量过大问题

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
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
413868872	268667	1541	/event/harden/stockreason
功能:涨停分析页面,查询个股的涨停原因
问题:
1.功能使用者较多
优化:
1.我们这边加上squid缓存(14:30)  
856088523	267299	3203	/tracesource/financial/index
功能:财务数据标签
问题:
1.功能使用者较多,很容易触发tip页面
优化:
1.我们这边加上squid缓存
5327568	218959	25	/tracesource/js/showtitle.js
功能:财务数据标签上引用的一个js
问题:没有上传资源平台
优化:上传资源平台
1185320843	60949	19448	/event/api/getharden
功能:涨停分析,请求涨停股列表
问题:
1.功能使用者较多,访问量较大;而且一旦行情好了,返回的股票信息也会增加
优化:
1.我们这边加上squid缓存

效果

以12.08和12.09两天,14:30-15:30区间段的请求作为测试样本:

数据项12.0812.0912.09/12.08
总请求数25872821456283%
/interpretation/index/hasinfo14016712021886%
/event/harden/stockhistory25809277111%
/event/harden/stockreason9789233824%

这几个请求,现在做的处理都是添加squid缓存,/interpretation/index/hasinfo的请求方式是POST,无法被squid缓存,因此没有效果,需要联系客户端进行请求机制上的优化。

其他几个请求,今天数据较少,需要等明天晚上再观察一下。