微服务架构性能问题排查

2017-10-10  本文已影响518人  alfredking12

A. 测试条件说明

B. 压力测试时需要关注的指标

C. 测试场景

1. 独立运行/容器运行

wrk -> A

wrk -c 50 -t 2 -d 20 http://10.51.40.211:8001/api/values

Running 20s test @ http://10.51.40.211:8001/api/values
  2 threads and 50 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     2.64ms    2.44ms  46.23ms   91.63%
    Req/Sec    11.25k     1.18k   14.32k    70.75%
  447718 requests in 20.00s, 76.00MB read
Requests/sec:  22382.06
Transfer/sec:  3.80MB
wrk -c 50 -t 2 -d 20 http://10.51.40.211:8002/api/values

Running 20s test @ http://10.51.40.211:8002/api/values
  2 threads and 50 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     2.63ms    2.36ms  44.67ms   91.00%
    Req/Sec    11.15k     1.20k   23.01k    80.05%
  445152 requests in 20.10s, 75.57MB read
Requests/sec:  22147.72
Transfer/sec:  3.76MB

2. 独立运行/容器运行 + 反向代理

wrk -> nginx -> A

wrk -c 50 -t 2 -d 20 http://10.117.75.102:8001/api/values

Running 20s test @ http://10.117.75.102:8001/api/values
  2 threads and 50 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    11.81ms   55.34ms   1.01s    98.86%
    Req/Sec     3.79k   532.76     6.30k    82.00%
  150684 requests in 20.00s, 29.60MB read
Requests/sec:   7532.78
Transfer/sec:   1.48MB
wrk -c 50 -t 2 -d 20 http://10.117.75.102:8002/api/values

Running 20s test @ http://10.117.75.102:8002/api/values
  2 threads and 50 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency   124.49ms  260.32ms   1.02s    86.81%
    Req/Sec     1.00k     1.21k    3.49k    72.60%
  7653 requests in 20.03s, 1.50MB read
  Socket errors: connect 0, read 0, write 0, timeout 90
Requests/sec:    382.15
Transfer/sec:    76.86KB

3. 独立运行/容器运行 + 2级服务

wrk -> A2 -> A

wrk -c 100 -t 2 -d 20 http://10.51.40.211:8101/api/values

Running 20s test @ http://10.51.40.211:8101/api/values
  2 threads and 100 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     0.00us    0.00us   0.00us    -nan%
    Req/Sec     0.00      0.00     0.00      -nan%
  0 requests in 20.03s, 0.00B read
Requests/sec:      0.00
Transfer/sec:      0.00B
wrk -c 100 -t 2 -d 20 http://10.51.40.211:8101/api/values

Running 20s test @ http://10.51.40.211:8101/api/values
  2 threads and 100 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    72.98ms  149.66ms   1.07s    93.49%
    Req/Sec     1.42k   351.50     2.07k    69.84%
  52194 requests in 20.01s, 9.31MB read
Requests/sec:   2608.12
Transfer/sec:   476.30KB

4. 独立运行/容器运行 + 3级服务

wrk -> A3 -> A2 -> A

wrk -c 50 -t 2 -d 20 http://10.51.40.211:8201/api/values

Running 20s test @ http://10.51.40.211:8201/api/values
  2 threads and 50 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    32.63ms   12.58ms 128.48ms   76.19%
    Req/Sec   776.58    149.07     1.14k    68.00%
  30932 requests in 20.01s, 5.52MB read
Requests/sec:   1545.60
Transfer/sec:   282.25KB

5. 独立运行/容器运行 + 2级服务 + 反向代理

wrk -> A2 -> nginx -> A

wrk -c 50 -t 2 -d 20 http://10.51.40.211:8101/api/values

Running 20s test @ http://10.51.40.211:8101/api/values
  2 threads and 50 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    26.81ms   38.27ms   1.05s    99.29%
    Req/Sec     1.02k   159.05     1.38k    68.75%
  40515 requests in 20.01s, 6.88MB read
Requests/sec:   2024.54
Transfer/sec:   351.92KB

6. 独立运行/容器运行 + 3级服务 + 反向代理

wrk -> A3 -> nginx -> A2 -> nginx -> A

wrk -c 50 -t 2 -d 20 http://10.51.40.211:8201/api/values

Running 20s test @ http://10.51.40.211:8201/api/values
  2 threads and 50 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    93.94ms  218.56ms   1.51s    94.42%
    Req/Sec   579.89     97.77   840.00     75.00%
  21489 requests in 20.01s, 3.83MB read
Requests/sec:   1073.76
Transfer/sec:    196.09KB

D. 立运行/容器运行 + 2级服务 + 反向代理 + 数据库连接

问题:因优化后的代码应用到项目中后,在并发100的情况下仍然出现性能问题,后经过排查发现是因为数据库连接与HttpClient调用同时存在时会出现问题,也就是说单独压测数据库连接或者单独压测 HttpClient 都性能OK
解决:后来将数据库连接改为异步方式后,问题解决

E. 结论

根据上述多个场景的测试,发现我们的微服务架构中,对性能影响较大的因素:

上一篇 下一篇

猜你喜欢

热点阅读