YOLO813

Apache JMeter的高并发测试(二)

    上一篇文章里测试了服务器经过负载均衡之后的静态页面(准确的说也不完全是静态页面,因为里面也包含了数据库请求,只是没有数据所以看着像是一个静态页面),今天来做下请求动态数据页面压力测试。

    先使用Navicat将每个数据库里面的展示表插入100条数据,为了保证数据的一致性,2-4-2到2-4-3三台业务服务器的数据库用的同一个sql文件

#表名news_newsmodel
# 字段title,content,create_time
delimiter $$
DROP PROCEDURE IF EXISTS proc_batch_insert;
CREATE PROCEDURE proc_batch_insert()
BEGIN
DECLARE pre_name BIGINT;
DECLARE ageVal INT;
DECLARE i INT;
SET pre_name=1;
SET ageVal=100;
SET i=1;
WHILE i < 100 DO
    INSERT INTO news_newsmodel(`title`,content,create_time) VALUES(CONCAT(pre_name,'-zhangxiaofei'),(ageVal+i)%30,NOW());
SET pre_name=pre_name+100;
SET i=i+1;
END WHILE;
END $$
delimiter ;
call proc_batch_insert();

示例页面如下


    我将使用jmeter来测试get请求,由于目前还没搞懂jmeter如何设置get路径的参数变量,也不想在测试上花费太多时间,所以我就随机来写链接进行测试了。因为没有缓存,影响应该不大。类似下面这种

http://202.182.107.126/article/99/


    测试一:100用户/秒并发访问,持续10秒。
    2核4G集群。215ms。

    6核16G内存。196ms。


    8核32G。基本差不多。


    测试二:300用户/秒并发访问,持续10秒。


    2核4G集群。565ms,错误率1%-6%之间。


    6核16G内存。552,但错误率在9%-15%之间。


    8核32G。错误率基本在7%左右。

 


    测试三:500用户/秒并发访问,持续10秒。
    2核4G集群。12%-24%左右的错误率,基本3台业务服务器的cpu都跑满了。


    6核16G内存。错误率在16%-30%。


    8核32G。错误率在20%-36%。


    说明:在网站对抗高并发访问的情况下,负载均衡的效果还是有效的,但并不是说负载均衡就是加速网站访问的神器,从上一篇和这一篇的测试可以看到,即使做了nginx的负载均衡,在每秒100模拟用户访问的情况下,2核4G集群的平均访问时长并没有比6核和8核的服务器响应速度快,这个也好理解,因为在服务器资源完全充足的情况下,高配置服务器肯定是比低配置服务器处理请求的速度更快的,通过nginx配置负载均衡的优势在于应对高并发,降低服务器内部错误的概率,返回正确的数据给客户。


    以上结论仅供参考。