我用jmeter做了一个接口的简单压测,大概跑了5000个请求,我开启了3个节点分布式来处理这个接口的事务(好像是docker),每个节点都分到了1666个请求。最先启动的节点的响应时间相对正常,RT几乎没有大于2s的,越晚开启的节点,响应时间越慢,70%的响应时间都大于5s(我等所有节点正常运行一段时间后才开始的测试),现在不知道什么原因,有谁懂的能帮忙看看吗,下面是响应最快的一个节点和最差的一个节点的监控数据对比:CPU负载和IO数据差别很大,感觉响应慢的那台机器没有调动起来。
从监控数据上看,响应最慢的节点的CPU负载和IO数据都比响应最快的节点高,这可能是导致响应时间慢的原因。我们可以尝试以下几个方案来解决:
http {
upstream myapp1 {
server node1.example.com weight=3;
server node2.example.com;
server node3.example.com;
}
server {
listen 80;
location / {
proxy_pass http://myapp1;
}
}
}
其中,weight表示权重,数字越大,分配到该节点的请求越多。