欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

记一次网关服务性能测试中遇到的几个问题

程序员文章站 2022-04-28 15:58:52
...

目录

1. 背景

2. 工具

3. 问题

4. 参考资料


1. 背景

对网关服务nginx进行并发测试,分别使用了JMeter和nGrinder工具进行测试。在测试过程中遇到工具本身、参数配置等问题。

2. 工具

JMeter v5.2.1

Kong

nginx

nGrinder-3.4.3

3. 问题

1)JMeter:请求响应中出现类似提示:socket closed。

原因:在JMeter中发送HTTP请求时,缺省选择 HttpClient4 实现。在并发量较大时,可能出现连接数过大导致请求关闭的情况。

解决:

在HTTP请求-》Advanced-》Client implementation中,选择Implementation为Java。

记一次网关服务性能测试中遇到的几个问题

2)JMeter:并发量稍微大一些(约超过50线程数)时,JMeter的控制台中出现类似报错:java.lang.OutOfMemoryError: Java heap space。

原因:由于并发数,监控或者日志记录的原因,导致JMeter内存消耗较大

解决:

打开jmeter.bat文件,修改参数。这里参数大小要根据所在物理机内存进行设置,不能超过物理机内存的一半

默认:HEAP="-Xms512m -Xmx512m"

修改:HEAP="-Xms1024m -Xmx1024m"

也可以参考:https://www.cnblogs.com/hd-test/p/12176579.html

3)改用nGrinder进行测试。并发数较大后,日志中出现报错:ERROR Connection establishment timed out。

原因:并发数并未达到nGrinder单机上限,这里是由于Kong以及nginx的超时参数配置导致。

解决:

  • nGrinder脚本中修改超时参数:

记一次网关服务性能测试中遇到的几个问题

  • 修改Kong的超时参数。60ms(缺省)-》999ms
  • 修改nginx的超时参数:在nginx.conf中修改.
proxy_connect_timeout    999;
proxy_read_timeout       999;
proxy_send_timeout       999;

4)客户端日志报错:ERROR Premature EOF encountered。响应信息被截取

原因:服务端性能瓶颈。通过扩展服务器实例未再出现该问题。但后面发现,并发数达到一定大小后,无论如何扩展实例,服务端的TPS都变化不大,网卡带宽已被沾满(性能瓶颈)。

4. 参考资料

https://blog.csdn.net/qq_24699007/article/details/83892511 -- nginx中的超时参数设置

https://blog.csdn.net/basicworld/article/details/100693547 -- nginx中出现响应被截断的原因和解决方法