Apache用jmeter多次请求

Pyi*_*Maw 5 java apache jmeter jboss5.x

我正在使用Jmeter来测试对我的Web应用程序的多个请求.
我用NumberOfThreadJmeter作为50.

我的流程如下:

  1. 登录页面.
  2. 使用用户标识和密码登录.
  3. 显示菜单页面.
  4. 单击搜索页面.
  5. 转到搜索页面.
  6. 单击搜索按钮.
  7. 单击搜索结果链接转到更新页面.
  8. 更新数据并单击"更新"按钮.
  9. 显示更新的结果页面.
  10. 返回搜索页面.
  11. 注销按钮单击.

在上面的过程中,我使用循环控制器进行5到10的进程,循环为5.
在那种情况下,如果我使用超过25个线程来运行Jmeter测试,就会address already in use, the socket binding exception发生.

我想知道如何解决这个问题.

Ali*_*lik 22

看起来您的客户端用尽了短暂的端口,或者您的客户端环境存在一些问题.
你在使用Windows吗?

你至少可以做到以下几点:

  1. Windows:查看本文以获取Windows系统作为jmeter主机的解决方案.
  2. 使用Linux系统作为主机来运行Jmeter加载方案.


同样,您可能会发现本文对您的测试活动很有用(我在标签中看到了Jboss).


更新:

再次来自上面的链接文章:

发出HTTP请求时,会为TCP/IP连接分配一个临时端口.临时端口范围是32678 - 61000.客户端关闭连接后,连接将处于TIME-WAIT状态60秒.

如果JMeter(HttpClient)每秒发送数千个HTTP请求并创建新的TCP/IP连接,则系统将耗尽可用的临时端口进行分配.

...

否则,JMeter JTL文件中可能会显示以下消息:

非HTTP响应代码:java.net.BindException
非HTTP响应消息:已在使用的地址

解决方案是启用快速回收TIME_WAIT套接字.

echo 1>/proc/sys/net/ipv4/tcp_tw_recycle

其他选项包括TCP_FIN_TIMEOUT以减少连接在TIME_WAIT状态下的时间,TCP_TW_REUSE允许系统重用处于TIME_WAIT状态的连接.

在服务器端:

  • 这样可以快速回收TIME_WAIT套接字

    /sbin/sysctl -w net.ipv4.tcp_tw_recycle=1

  • 这允许在TIME_WAIT状态下重用套接字用于新连接 - 这是tcp_tw_recycle的更安全的替代方案

    /sbin/sysctl -w net.ipv4.tcp_tw_reuse=1

    tcp_tw_reuse设置在打开许多短连接并处于TIME_WAIT状态的环境(如Web服务器)时特别有用.重用套接字可以非常有效地减少服务器负载.

  • 系统同时保留的最大时间等待套接字数

    /sbin/sysctl -w net.ipv4.tcp_max_tw_buckets=30000

或者相同但以另一种方式 - 将下面的行添加到/etc/sysctl.conf文件中,以便更改能够在重新启动后继续存在:

net.ipv4.tcp_max_tw_buckets = 30000
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
Run Code Online (Sandbox Code Playgroud)

同样在服务器端查看结果ulimit -n.
对于最大打开文件的限制,默认值为1024,这可以解释1000个连接处的BindExceptions的外观.

您还可以使用例如监视测试期间监视服务器和jmeter之间的连接数

netstat -an | grep SERVER_PORT | wc -l
Run Code Online (Sandbox Code Playgroud)

定义连接限制 - 如果有的话.