Apache使用jmeter进行多个请求
我正在使用Jmeter测试对我的Web应用程序的多个请求。
我NumberOfThread
在Jmeter中使用了50。
我的过程如下:
- 登录页面。
- 使用用户名和密码登录。
- 显示菜单页面。
- 点击搜索页面。
- 转到搜索页面。
- 点击搜索按钮。
- 单击搜索结果链接以转到更新页面。
- 更新数据,然后单击更新按钮。
- 显示更新的结果页面。
- 返回搜索页面。
- 注销按钮单击。
在上面的过程中,我将循环控制器用于5到10的5号循环。
在那种情况下,如果我使用了25个以上的线程来运行Jmeter测试,就会address already in use, the socket binding
exception发生。
我想知道如何解决这个问题。
回答:
看起来您的客户端用尽了临时端口,或者您的客户端环境有问题。
您在使用Windows吗?
您可能至少可以执行以下操作:
- Windows:在本文中查找作为jmeter主机的Windows系统解决方案。
- 使用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套接字。
其他选项包括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服务器)特别有用。重用套接字对于减少服务器负载非常有效。
- 系统同时保留的最大timewait套接字数
/sbin/sysctl -w net.ipv4.tcp_max_tw_buckets=30000
或相同但以另一种方式-将以下行添加到/etc/sysctl.conf
文件中,以便更改在重新启动后仍然有效:
net.ipv4.tcp_max_tw_buckets = 30000net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
同样在服务器方面,请查看的结果ulimit -n
。
最大打开文件数的限制的默认值为1024,它可以解释BindExceptions在1000个连接处的出现。
同样,您可以使用以下方法在测试运行期间监视服务器与jmeter之间的连接数:
netstat -an | grep SERVER_PORT | wc -l
定义连接限制-如果有的话。
以上是 Apache使用jmeter进行多个请求 的全部内容, 来源链接: utcz.com/qa/424489.html