网关性能测试

    测试环境

    • 测试工具:wrk
    • 服务器:CentOS7(虚拟机,宿主机:macbookpro),内存:2G,CPU:1,核数:2核
    • 运行环境:Java8、Mysql-5.7、Nacos-1.1.3
    • 网关启动参数:
    • zuul配置(仅针对zuul,Spring Cloud Gateway没有做优化配置):
    1. sop.api-config.timeout-seconds=0
    2. sop.restful.enable=true
    3. logging.level.com.gitee=info
    4. # zuul调优
    5. zuul.host.max-per-route-connections=5000
    6. zuul.host.max-total-connections=5000
    7. zuul.semaphore.max-semaphores=5000
    8. ribbon.ReadTimeout=5000
    9. hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=13000
    10. logging.file=sop-gateway.log
    1. 65535
    • wrk命令:
    • Spring Cloud Gateway测试结果
    1. 8 threads and 200 connections
    2. Latency 139.74ms 69.39ms 617.14ms 69.82%
    3. Req/Sec 182.12 55.74 343.00 66.24%
    4. 43391 requests in 30.09s, 11.96MB read
    5. Requests/sec: 1441.96
    6. Transfer/sec: 406.96KB

    结果说明,下同:

    1. 8 threads and 200 connections (共8个测试线程,200个连接)
    2. (平均值) (标准差) (最大值)(正负一个标准差所占比例)
    3. Thread Stats Avg Stdev Max +/- Stdev
    4. (延迟)
    5. Latency 139.74ms 69.39ms 617.14ms 69.82%
    6. (每秒请求数)
    7. Req/Sec 182.12 55.74 343.00 66.24%
    8. 43391 requests in 30.09s, 11.96MB read (30.09秒内处理了43391个请求,耗费流量11.96MB)
    9. Requests/sec: 1441.96 (QPS 1441.96,即平均每秒处理请求数为1441.96)
    10. Transfer/sec: 406.96KB (平均每秒流量406.96KB)
    • Spring Cloud Zuul测试结果

    调用restful请求

    • wrk命令:
      • Spring Cloud Gateway测试结果
      1. 8 threads and 200 connections
      2. Latency 120.14ms 58.30ms 513.85ms 67.47%
      3. Req/Sec 210.47 54.26 770.00 69.37%
      4. 50301 requests in 30.10s, 7.53MB read
      5. Requests/sec: 1670.97
      6. Transfer/sec: 256.21KB
      • Spring Cloud Zuul测试结果

      综上所述,Spring Cloud Gateway在没有优化的情况下,压测表现比zuul好,但zuul的数据表现也不差,但是出现超时现象,总的来说还是Spring Cloud Gateway具有优势。

      restart.sh

      1. echo "Stopping sop-gateway-1.0.0-SNAPSHOT.jar"
      2. pid=`ps -ef | grep sop-gateway-1.0.0-SNAPSHOT.jar | grep -v grep | awk '{print $2}'`
      3. if [ -n "$pid" ]
      4. then
      5. echo "kill -9 的id:" $pid
      6. kill -9 $pid
      7. fi
      8. nohup java -jar -verbose:gc -XX:+PrintGCDetails -XX:+PrintHeapAtGC -Xloggc:gc.log \
      9. -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m -Xms1024m -Xmx1024m -Xmn256m -Xss256k -XX:SurvivorRatio=8\
      10. -XX:+UseConcMarkSweepGC sop-gateway-1.0.0-SNAPSHOT.jar\
      11. --spring.profiles.active=dev --server.port=8081 &
      12. tail -f nohup.out