Skip to content

线上文章压力测试数据

meiqin0407 edited this page Aug 31, 2017 · 16 revisions

测试环境:线上
命令执行时间:22:30以后
执行命令(例):ab -n 50 -c 50 http://www.eefocus.com/consumer-electronics/390268

增加缓存代码后/部署新实例(8月30号):

数据

请求数 并发数 请求url 持续时间 完成的数量 失败的数量 网络传输量(bytes) html传输量(bytes) 每秒事务 事务响应时间 每个请求运行时间 每秒网络流量
100 100 http://www.eefocus.com/consumer-electronics/390268 5.576 100 0 10977000 10928400 17.94 5575.502 55.755 1922.65
500 100 http://www.eefocus.com/consumer-electronics/390268 28.715 500 0 54885000 54642000 17.41 5743.058 57.431 1866.55
1000 50 http://www.eefocus.com/consumer-electronics/390268 56.69 1000 0 109770000 109284000 17.64 2834.5 56.69 1890.94
2400 80 http://www.eefocus.com/consumer-electronics/390268 148.429 2400 0 263448000 262281600 16.17 4947.62 61.845 1733.31
2700 90 http://www.eefocus.com/consumer-electronics/390268 153.08 2700 0 296379000 295066800 17.64 5102.673 56.696 1890.73
1000 100 http://www.eefocus.com/consumer-electronics/390268 37.031 1000 0 78976000 78490000 27 3703.066 37.031 2082.73
100 20 http://www.eefocus.com/consumer-electronics/390268 6.16 100 0 10977000 10928400 16.23 1232.082 61.604 1740.1
1000 100 http://www.eefocus.com/consumer-electronics/ 36.591 1000 0 78976000 78490000 27.33 3659.134 36.591 2107.74
1000 100 http://www.eefocus.com/article/list-news 27.701 1000 0 67250000 66764000 36.1 2770.108 27.701 2370.8
1000 100 http://www.eefocus.com/article 43.487 1000 0 102664000 102178000 23 4348.691 43.487 2305.47
4000 200 http://www.eefocus.com/enewsletter/ 66.878 4000 0 272556000 270816000 59.81 3343.924 16.72 3979.87

总结

  • 没有慢查询。
  • 处理有明显提升的。

测试环境:线上
命令执行时间:22:30以后
执行命令(例):ab -n 50 -c 50 http://www.eefocus.com/consumer-electronics/390268

增加缓存代码后(8月28号):

数据

请求数 并发数 请求url 持续时间 完成的数量 失败的数量 网络传输量(bytes) html传输量(bytes) 每秒事务 事务响应时间(ms) 每个请求运行时间(ms) 每秒网络流量(bytes) 网站服务器Load MySql堆积进程数 MySql Load Mysql慢查询
100 100 http://www.eefocus.com/consumer-electronics/390268 12.003 100 0 11108900 11060900 8.33 12002.966 120.030 903.82
500 100 http://www.eefocus.com/consumer-electronics/390268 60.558 500 0 55544500 55304500 8.26 12111.593 121.116 895.71
500 100 http://www.eefocus.com/consumer-electronics/390268 换服务器后 40.823 500 0 55547500 55304500 12.25 8164.630 81.646 1328.80
1000 50 http://www.eefocus.com/consumer-electronics/390268 129.052 1000 0 111089000 110609000 7.75 6452.595 129.052 840.63 40 0
2400 80 http://www.eefocus.com/consumer-electronics/390268 321.477 2400 0 266613600 265461600 7.47 10715.902 133.949 809.90 75 0
2700 90 http://www.eefocus.com/consumer-electronics/390268 330.632 2700 0 299940300 298644300 8.17 11021.079 122.456 885.91 81 0
1000 100 http://www.eefocus.com/consumer-electronics/390268 118.975 1000 0 111089000 110609000 8.41 11897.537 118.975 911.83
100 20 http://www.eefocus.com/consumer-electronics/390268 10.309 100 0 11108900 11060900 9.70 2061.880 103.094 1052.30
4000 200 http://www.eefocus.com/enewsletter/ 8.523 4000 521 36488087 35760123 469.34 426.131 2.131 4180.98
1000 100 http://www.eefocus.com/consumer-electronics/ 91.045 1000 0 78746000 78266000 10.98 9104.489 91.045 844.64
1000 100 http://www.eefocus.com/article/list-news 50.235 1000 0 67205000 66725000 19.91 5023.539 50.235 1306.45
1000 100 http://www.eefocus.com/article/ 0.273 1000 0 372000 178000 3660.88 27.316 0.273 1329.93

总结

  • 没有慢查询。
  • 处理时间在并发数量不大的时候还是有明显提升的。
  • 并发大了以后,压力逐渐转移到网站服务器,压力增高,处理缓慢。
  • 没有开缓存时,一个请求10s,慢查询3s,剩下都是服务器端处理。也说明了网站服务器也有瓶颈。
  • 多开了一个服务器进行压力测试时,情况好转很多。

开启模块缓存后(8月24):

数据

请求数 并发数 请求url 持续时间 完成的数量 失败的数量 网络传输量(bytes) html传输量(bytes) 每秒事务 事务响应时间(ms) 每个请求运行时间(ms) 每秒网络流量(bytes) 网站服务器Load MySql堆积进程数 MySql Load Mysql慢查询
100 100 http://www.eefocus.com/consumer-electronics/390268 14.635 100 0 11117200 11069200 6.83 14634.585 146.346 741.85 20 0 3 基本没有
500 100 http://www.eefocus.com/consumer-electronics/390268 66.355 500 0 55586000 55346000 7.54 13271.003 132.71 818.07 55 0 6 基本没有
1000 50 http://www.eefocus.com/consumer-electronics/390268 136.132 1000 0 111172000 110692000 7.35 6806.619 136.132 797.51 40 60 8 有少量
2400 80 http://www.eefocus.com/consumer-electronics/390268 317.23 2400 0 266812800 265660800 7.57 10574.346 132.179 821.36 63 103 9 有中量
2700 90 http://www.eefocus.com/consumer-electronics/390268 356.809 2700 0 300164400 298868400 7.57 11893.639 132.152 821.53 70 110 12 有中量
1000 100 http://www.eefocus.com/consumer-electronics/390268 125.111 1000 0 111172000 110692000 7.99 12511.106 125.111 867.76 64 120 8 有中量
100 20 http://www.eefocus.com/consumer-electronics/390268 16.504 100 0 11117200 11069200 6.06 3300.824 165.041 657.81 5 0 3 基本没有
4000 200 http://www.eefocus.com/enewsletter/ 43.249 4000 2923 199300634 197890502 92.49 2162.448 10.812 4500.21 6 0 3 没有
1000 100 http://www.eefocus.com/consumer-electronics/ 109.378 1000 0 80643000 80163000 9.14 10937.789 109.378 720.01 50 12 12 有少量
1000 100 http://www.eefocus.com/article 0.276 1000 0 372000 178000 3626.14 27.578 0.276 1317.31 4 0 3 没有

总结

  • 测试完之后看了下数据,大概巅峰每分钟400次请求,不像前几天ab会压到每分钟1000多次,说明这次测试单次请求耗时更久。
  • 当并发不高的时候数据库没有慢查询,压力全在服务器端,服务器压力很高导致请求处理不过来。
  • 提高并发以后出现慢查询,还是之前的那个query
SELECT `eef_article_visit`.`article` AS `article`, sum(count) AS `total` FROM `eef_article_visit` INNER JOIN `eef_article_article` AS `a` ON `eef_article_visit`.`article` = `a`.`id` WHERE date >= '20170807' AND date <= '20170814' AND `a`.`channel` = '9' AND `status` = '11' AND `active` = '1' GROUP BY `eef_article_visit`.`article` ORDER BY `total` DESC LIMIT 10
  • 但是慢查询耗时3秒,处理请求总共9-10秒,大部分时间还是在服务器端,这个情况下mysql似乎不是瓶颈了。
  • 非文章页表现稳定,服务器压力有,但是处理很快,完全没有慢查询。

优化前(8月22):

从数据上来看,当一次请求的次数在200左右的时候,就开始有502。请求数在50左右时,网页可以正常打开(3s-4s),再增加一次的请求数打开就比较慢。
测试样本:http://www.eefocus.com/consumer-electronics/390268

数据

请求数 并发数 持续时间 完成的数量 失败的数量 网络传输量(bytes) html传输量(bytes) 每秒事务 事务响应时间(ms) 每个请求运行时间(ms) 每秒网络流量(bytes) MySql进程数 MySqlLoad
50 50 7.24 50 0 5516400 5492100 6.91 7240.033 144.801 744.07 N/A/ N/A
100 100 7.162 100 0 11032800 10984200 13.96 7161.711 71.617 1504.42 N/A/ N/A
200 200 17.863 200 0 22065600 21968400 11.2 17863.205 89.316 1206.3 N/A/ N/A
300 300 19.045 300 23 30568147 30430052 15.75 19045.142 63.484 1567.42 N/A/ N/A
400 400 27.366 400 144 28289616 28143456 14.62 27365.649 68.414 1009.53 N/A/ N/A
350 350 12.496 350 205 22663205 22541680 28.01 12495.71 35.702 1771.17 N/A/ N/A
1000 250 61.206 1000 291 78314799 77926284 16.34 15301.486 61.206 1249.54 N/A/ N/A
500 100 40.567 500 0 55164000 54921000 12.33 8113.313 81.133 1327.97 N/A/ N/A
800 200 54.147 800 562 62079782 61770712 14.77 13536.642 67.683 1119.64 N/A/ N/A
1000 50 101.095 1000 0 110328000 109842000 9.89 5054.756 101.095 1065.75 N/A/ N/A
4200 70 452.438 4200 0 463377600 461336400 9.28 7540.637 107.723 1000.17 90 20-30
2400 80 248.538 2400 0 264787200 263620800 9.66 8284.586 103.557 1040.41 100 30
2700 90 287.867 2700 0 297885600 296573400 9.38 9595.567 106.617 1010.55 110 40
3000 200 320.511 3000 44 326143516 324700256 9.36 21367.42 106.837 993.72 200 50+
1000 100 119.679 1000 0 110322000 109842000 8.36 11967.921 119.679 900.21 110 30
100 20 13.152 100 0 11032200 10984200 7.6 2630.426 131.521 819.15 N/A N/A

总结

  • 测试完之后看了下数据,大概巅峰每分钟1000次请求。这个时候已经承受不住了。
  • 其实当网页打开速度大于7-8s的时候已经属于不能接受了,没人会等一个网页打开这么久。
  • ab的并发在100的时候平均响应时间是8s,但是最开始几个还是快的,2-3s。
  • 这么看来并发在50是能保持可以接受的打开速度,到100还是可以撑住,但是打开会慢,不过不会出现卡死。
  • 大部分时间还是在MySql的这条语句,不知道能不能缓存那个模块:
SELECT `eef_article_visit`.`article` AS `article`, sum(count) AS `total` FROM `eef_article_visit` INNER JOIN `eef_article_article` AS `a` ON `eef_article_visit`.`article` = `a`.`id` WHERE date >= '20170807' AND date <= '20170814' AND `a`.`channel` = '9' AND `status` = '11' AND `active` = '1' GROUP BY `eef_article_visit`.`article` ORDER BY `total` DESC LIMIT 10
Clone this wiki locally