spring cloud zuul性能测试全记录


首先写了一个简单的controller

@RestController
public class HiController {
    @Value("${server.port}")
    String port;
    @GetMapping("/hi")
    public String home(@RequestParam String name) {
        return "hi "+name+",i am from port:" +port;
    }
}


server:
  port: 8232
  tomcat:
    max-threads: 800
    max-connections: 1600
  connection-timeout: 30000

经测试发现CPU的影响较大,1U的时候QPS在4K左右 2U的QPS大概在8k左右,4U的时候QPS大概为11K。

ZUUL受CPU的影响更多,1U只有1k左右,2U大概是2k,4U的时候超过了4k,此时zuul的JVM大小为1G.

将JVM大小修改为2G后4U对应的QPS在4.5k-5k之间,性能大概增长了10%,很奇怪的一点是在打了个电话之后同样的参数测试了一下,居然跑出超过7.5k的QPS,但是第二次就又讲到5k左右的了

调整参数后QPS稳定在5k以上,参数如下:

server:
  port: 5000
  tomcat:
    max-threads: 16 # 最大worker线程
    min-spare-threads: 8 # 最小worker线程
  undertow:
    io-threads: 4 # IO线程数,默认为CPU核心数,最小为2
    worker-threads: 24 # 阻塞任务线程池,值设置取决于系统的负载,默认为io-threads * 8
    buffer-size: 512 # 每块buffer的空间大小
zuul:
  host:
    max-per-route-connections: 50
    max-total-connections: 500

尝试修改参数对比

server:
  port: 5000
  tomcat:
    max-threads: 64 # 最大worker线程
    min-spare-threads: 32 # 最小worker线程

将线程数调大后实际QPS反而降低了,在4k-4.5k之间,也就是说线程数不是越大越好。

server:
  port: 5000
  tomcat:
    max-threads: 8 # 最大worker线程
    min-spare-threads: 4 # 最小worker线程
此时的QPS首次低于了4k。

以上测试均是在电脑的虚拟机上进行的测试,电脑只有4核,而分给虚拟机了4核,实际的性能应该比此次测试的性能更高。

http://tech.lede.com/2017/05/16/rd/server/SpringCloudZuul/


-Xmx1024m -Xms1024m -Xss256k -XX:-PrintGC -XX:-PrintGCDetails -Xloggc:E:/logs/gc5.log -XX:+PrintGCTimeStamps

你可能感兴趣的:(spring cloud zuul性能测试全记录)