在Jmeter服务器的终端上,java.net.connectionException/太多打开的文件意味着什么?

在Jmeter服务器的终端上,java.net.connectionException/太多打开的文件意味着什么?,jmeter,tomcat8,Jmeter,Tomcat8,我想用Jmeter做一个加载测试。在google计算引擎上,我创建了5个虚拟机,一个运行tomcat服务器,一个运行jmeter master,三个运行jmeter服务器。 我的测试计划只是对tomcat初始页面(即默认主页,HTTP://***.*.*.*.**/8080)的HTTP请求。 每个从机中有5000个用户,计划将在5分钟内执行 jmeter主机终端上的消息如下: Writing log file to: /opt/apache-jmeter-3.1/bin/jmeter.log C

我想用Jmeter做一个加载测试。在google计算引擎上,我创建了5个虚拟机,一个运行tomcat服务器,一个运行jmeter master,三个运行jmeter服务器。 我的测试计划只是对tomcat初始页面(即默认主页,
HTTP://***.*.*.*.**/8080
)的HTTP请求。 每个从机中有5000个用户,计划将在5分钟内执行

jmeter主机终端上的消息如下:

Writing log file to: /opt/apache-jmeter-3.1/bin/jmeter.log
Creating summariser <summary>
Created the tree successfully using aggregate_report.jmx
Configuring remote engine: 10.138.0.4:1099
Configuring remote engine:  10.138.0.5:1099
Configuring remote engine:  10.138.0.7:1099
Starting remote engines
Starting the test @ Wed Jan 11 08:38:17 UTC 2017 (1484123897799)
Remote engines have been started
Waiting for possible Shutdown/StopTestNow/Heapdump message on port 4445
summary + 106604 in 00:00:12 = 9252.2/s Avg:   131 Min:    66 Max:  1439 Err:     0 (0.00%) Active: 2638 Started: 2638 Finished: 0
summary + 359500 in 00:00:30 = 11982.5/s Avg:   441 Min:    66 Max: 17390 Err:     0 (0.00%) Active: 9658 Started: 9658 Finished: 0
summary = 466104 in 00:00:42 = 11224.9/s Avg:   370 Min:    66 Max: 17390 Err:     0 (0.00%)
summary + 326600 in 00:00:30 = 10888.1/s Avg:   735 Min:     0 Max: 43081 Err: 127205 (38.95%) Active: 12167 Started: 12167 Finished: 0
summary = 792704 in 00:01:12 = 11083.7/s Avg:   521 Min:     0 Max: 43081 Err: 127205 (16.05%)
2017/01/11 08:39:39 ERROR - jmeter.samplers.BatchSampleSender: sampleOccurred java.rmi.ConnectIOException: Exception creating connection to: 10.138.0.6; nested exception is: 
        java.net.SocketException: Too many open files
        at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:631)
        at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:216)
        at sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:202)
        at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:130)
        at java.rmi.server.RemoteObjectInvocationHandler.invokeRemoteMethod(RemoteObjectInvocationHandler.java:194)
        at java.rmi.server.RemoteObjectInvocationHandler.invoke(RemoteObjectInvocationHandler.java:148)
        at com.sun.proxy.$Proxy2.processBatch(Unknown Source)
        at org.apache.jmeter.samplers.BatchSampleSender.sampleOccurred(BatchSampleSender.java:184)
        at org.apache.jmeter.samplers.DataStrippingSampleSender.sampleOccurred(DataStrippingSampleSender.java:111)
        at org.apache.jmeter.samplers.RemoteListenerWrapper.sampleOccurred(RemoteListenerWrapper.java:104)
        at org.apache.jmeter.threads.ListenerNotifier.notifyListeners(ListenerNotifier.java:67)
        at org.apache.jmeter.threads.JMeterThread.notifyListeners(JMeterThread.java:852)
        at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:505)
        at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:418)
        at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:249)
        at java.lang.Thread.run(Thread.java:745)
Caused by: java.net.SocketException: Too many open files
        at java.net.Socket.createImpl(Socket.java:460)
        at java.net.Socket.<init>(Socket.java:431)
        at java.net.Socket.<init>(Socket.java:211)
        at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(RMIDirectSocketFactory.java:40)
        at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(RMIMasterSocketFactory.java:148)
        at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:613)
        ... 15 more
Tomcat服务器端:
tomcat服务器端的catalina.out文件中有错误消息:

12-Jan-2017 01:41:20.132 SEVERE [http-nio-8080-Acceptor-0] org.apache.tomcat.util.net.NioEndpoint$Acceptor.run Socket accept failed
 java.io.IOException: Too many open files
        at sun.nio.ch.ServerSocketChannelImpl.accept0(Native Method)
        at sun.nio.ch.ServerSocketChannelImpl.accept(ServerSocketChannelImpl.java:250)
        at org.apache.tomcat.util.net.NioEndpoint$Acceptor.run(NioEndpoint.java:444)
        at java.lang.Thread.run(Thread.java:745)

我还配置了
limits.conf
文件,但它仍然不起作用。

您能检查目标服务器日志中是否有任何错误吗。似乎更多的是目标服务器问题,无法处理传入的连接并导致错误或连接未关闭。出现了类似的错误,打开的文件太多。这意味着您的服务器无法处理传入的请求。您可以将ulimit设置为无限并运行测试吗?我应该如何使用ulimit-n命令?我试过了,但没用。我建议你检查一下服务器的CPU利用率和内存使用情况。以较少的用户数(比如2000)运行测试,查看是否遇到相同的问题,并根据该结果增加/减少负载。是否可以检查目标服务器日志中是否存在任何错误。似乎更多的是目标服务器问题,无法处理传入的连接并导致错误或连接未关闭。出现了类似的错误,打开的文件太多。这意味着您的服务器无法处理传入的请求。您可以将ulimit设置为无限并运行测试吗?我应该如何使用ulimit-n命令?我试过了,但没用。我建议你检查一下服务器的CPU利用率和内存使用情况。使用较少的用户(比如2000)运行测试,看看是否遇到相同的问题,并根据该结果增加/减少负载。
* soft nofile 10240 
* hard nofile 20480