Apache用jmeter多次请求

时间:2013-01-07 11:15:28

标签: java apache jmeter jboss5.x

我正在使用Jmeter测试对我的Web应用程序的多个请求 我在Jmeter中使用NumberOfThread作为50。

我的流程如下:

  1. 登录页面。
  2. 使用用户ID和密码登录。
  3. 显示菜单页面。
  4. 点击搜索页面。
  5. 转到搜索页面。
  6. 点击搜索按钮。
  7. 点击搜索结果链接转到更新页面。
  8. 更新数据并单击“更新”按钮。
  9. 显示更新的结果页面。
  10. 返回搜索页面。
  11. 点击按钮。
  12. 在上面的过程中,我使用循环控制器进行5到10的进程,循环为5 在那种情况下,如果我使用超过25个线程来运行Jmeter测试,则会发生address already in use, the socket binding exception

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

1 个答案:

答案 0 :(得分:20)

看起来您的客户端用完了短暂的端口,或者您的客户端环境出现了问题 你在使用Windows吗?

您至少可以执行以下操作:

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

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


    <强>更新

    再次来自linked article above

      

    发出HTTP请求时,会为其分配一个临时端口   TCP / IP连接。短暂的端口范围是32678 - 61000.之后   客户端关闭连接,连接放在   TIME-WAIT状态持续60秒。

         

    如果JMeter(HttpClient)每个发送数千个HTTP请求   第二,并创建新的TCP / IP连接,系统将用完   可用的临时端口用于分配。

         

    。 。

         

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

         

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

         

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

         

    echo 1&gt;的/ proc / SYS /净/的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
    

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

    您也可以使用例如

    监控测试期间服务器和jmeter之间的连接数
    netstat -an | grep SERVER_PORT | wc -l
    

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