Java 使用jmeter的Apache多请求

Java 使用jmeter的Apache多请求,java,apache,jmeter,jboss5.x,Java,Apache,Jmeter,Jboss5.x,我正在使用Jmeter测试对web应用程序的多个请求。 我在Jmeter中使用NumberOfThread作为50 我的过程如下: 登录页面 使用用户名和密码登录 显示菜单页面 单击搜索页面 转到搜索页面 单击搜索按钮 单击搜索结果链接转到更新页面 更新数据并单击更新按钮 显示更新的结果页面 返回搜索页面 “注销”按钮单击 在上面的过程中,我使用了5到10号过程的循环控制器,其中有5个循环。 在这种情况下,如果我使用了超过25个线程来运行Jmeter测试,地址已经在使用,那么套接字绑定异常就会发

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

我的过程如下:

  • 登录页面
  • 使用用户名和密码登录
  • 显示菜单页面
  • 单击搜索页面
  • 转到搜索页面
  • 单击搜索按钮
  • 单击搜索结果链接转到更新页面
  • 更新数据并单击更新按钮
  • 显示更新的结果页面
  • 返回搜索页面
  • “注销”按钮单击
  • 在上面的过程中,我使用了5到10号过程的循环控制器,其中有5个循环。
    在这种情况下,如果我使用了超过25个线程来运行Jmeter测试,
    地址已经在使用,那么套接字绑定异常就会发生


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

    看起来您的客户端的临时端口用完了,或者您的客户端环境出现了一些问题。
    你在用Windows吗

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

  • Windows:寻找Windows系统作为jmeter主机的解决方案
  • 使用Linux系统作为主机来运行Jmeter加载场景

  • 此外,您可能会发现对您的测试活动很有用(我在标签中看到了Jboss)


    更新:

    再次来自:

    当发出HTTP请求时,会为 TCP/IP连接。临时端口范围为32678–61000。之后 客户端关闭连接,连接被放置在 等待状态为60秒

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

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

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

    解决方案是启用快速回收时间和等待套接字

    echo 1>/proc/sys/net/ipv4/tcp\u tw\u recycle

    其他选项包括TCP\u FIN\u超时以缩短连接时间 处于TIME_WAIT状态,TCP_TW_重用以允许系统 重新使用处于TIME_WAIT状态的连接

    在服务器端:

    • 这样可以快速回收等待时间套接字

      /sbin/sysctl-w net.ipv4.tcp\u tw\u recycle=1

    • 这允许在时间等待状态下为新连接重用套接字,这是tcp\u tw\u循环的更安全的替代方案

      /sbin/sysctl-w net.ipv4.tcp\u tw\u reuse=1

      tcp_tw_重用设置在许多短连接处于打开状态并处于等待状态的环境(如web服务器)中特别有用。重用套接字可以非常有效地降低服务器负载

    • 系统同时持有的最大timewait套接字数

      /sbin/sysctl-w net.ipv4.tcp\u max\u tw\u bucket=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个连接时出现BindException的原因

    此外,您还可以在测试运行期间使用以下命令监视服务器和jmeter之间的连接数:

    netstat -an | grep SERVER_PORT | wc -l
    

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

    谢谢Belik,你的回答对我很有帮助。但是,它仍然没有通过尝试解决。那么,有什么新的细节吗?如果Windows操作系统:应用所有说明后出现相同的行为?我正在使用CentOS 5 for Apache Server,并在Windows XP客户端PC上进行测试。我已按照引用链接的详细过程进行了操作。然而,它没有起作用。但我发现,如果我在CentOS服务器的httpd.conf文件中将KeepAliveTimeout改为15,问题就解决了。老实说,我不清楚为什么这样做可以解决这个问题。您对此有什么想法吗?如果您编辑了/etc/sysctl.conf,您需要重新启动计算机以获得更改。至少在Ubuntu18.04上出现了这种行为。这篇针对Windows的文章救了我一命。我不知道为什么这个问题突然出现在我Azure上的机器上,因为根本没有任何变化。但是regedit确实解决了这个问题。