Typically NL-NETWORK-01 errors occur when your server fails to respond with the expected result that NeoLoad awaits. The following article serves as a best practice guide for you to attempt to resolve on your own. Since there are several reasons for NL-NETWORK-01 errors, we need to focus on examples like:
- Network device overload
- Backend server issues (like database or resource server)
- Front-end server issues with the number of connections (IIS/Apache) or thread pool limits (Tomcat)
Using one or a combination of the solutions provided will help you troubleshoot in hopes that you achieve a quick resolution.
Typical Error Messages
- java.net.NoRouteToHostException: No route to host: connect
- Signals that an error occurred while attempting to connect a socket to a remote address and port. Typically, the remote host cannot be reached because of an intervening firewall or if an intermediate router is down. So, in essence, your load generator sent the request(s), and something got in the way of the traffic.
- java.net.SocketException: Connection reset
- This error most likely indicates that your target server or network device has become overloaded.
The closer to 100% – this is a sign that it’s your network (e.g., firewall issue). In contrast, if the percentage of errors is lower and happens at different times in your test, this is more likely your server’s inability to handle the amount of load.
- So how can you tell if it’s a server or a network issue?
- If all of the user load is getting this error, especially if the load generators are not in the same location in the network, then the issue might be the server or some resource it’s using, such as a database server.
- If only some of the user load is getting this error at different times, it might indicate some network device that is overloaded/misconfigured, like a router or switch.
The Best Solutions for you to Consider
- Increase the number of load generators for your test: Your test could be exceeding the total number of requests that are possible on a given load generator, so increasing to more load generators will spread the load out more evenly.
- Run your test using less virtual users: To identify if your servers are genuinely overloaded, try using a smaller number of virtual users to rule out other issues.
- Disable antivirus or your computer’s firewall: Run the test after disabling the antivirus/firewall in an attempt to get to the root cause of the error(s). To use a controller and load generator either side of a firewall, it is necessary to open a TCP port on the LG’s interface (in the controller-to-load generator direction)(https://www.neotys.com/documents/doc/neoload/latest/en/html/#660.htm#o661)
- Change NeoLoad’s settings: There are some settings that could help with containing these types of errors that we have seen from our customers.
- Uncheck the option for using HTTP2: The focus of HTTP/2 protocol is on performance. Specifically, end-user perceived latency, network, and server resource usage. One primary goal is to allow the use of a single connection from browsers to a web site. (https://www.neotys.com/documents/doc/neoload/latest/en/html/#1050.htm#o27143).
- Change the number of open connections: NeoLoad defaults this setting to 6, but you can increase the amount to 15, for instance. (https://www.neotys.com/documents/doc/neoload/latest/en/html/#1050.htm#o27143).
- Increase the number of concurrent connections: During the load test, the load generators will open a large number of network connections against your application server. The default number of port/connections that can be opened at the same time is limited, and not enough for high load testing. When you reach those limits, you can have these NL-NETWORK-01 errors on Windows 2008 or Windows 7. In that case, you have to increase these values to get a larger range of port availability. To do that, open a command prompt as administrator and run the following commands:
- netsh int ipv4 set dynamicport tcp start=10000 num=50000
- netsh int ipv6 set dynamicport tcp start=10000 num=50000
- This will allow for 60,000 concurrent connections.
- Increase the connection timeout of the load generator(s): You can define two types of timeout in NeoLoad:
- Connection Timeout: Waiting time when establishing a connection
- Socket Timeout: waiting time when receiving data
These settings may be edited in the <NeoLoad>/conf/Controller.properties, file in the Runtime section. You need to change the values for the runtime.connection.timeout and runtime.so.timeout keys. The values are expressed in milliseconds (for example, 30000 for 30 sec.). Settings these key values to 0 will create infinite timeouts (default behavior if no values inserted).
- Tune your Load Generator(s): The NeoLoad load generator code is optimized for multi-core and multi-processor environments. For example, with a machine with four cores, it is vital to make sure the rest of the machine is adequately dimensioned in order to use the available CPU capacity properly. Regarding memory, 1 Gb per core is a good compromise; in this case, 4 Gb of allocated memory is ideal. It is necessary to add to that a 64-bit operating system (to be able to use more than 1.5 Gb of memory), which makes 6 Gb of physical memory. In the case of network adapters, a good compromise is to have one adapter for two cores. (https://www.neotys.com/documents/doc/neoload/latest/en/html/#6537.htm)
Next Steps: Review Documentation or Talk to Us
- Check out all of the content included within NeoLoad documentation.
- Want to discuss further, contact support.