-
Bug
-
Resolution: Unresolved
-
Undefined
-
None
-
None
-
None
-
False
-
-
False
-
-
The Test
----------------------------------------------
This is an endurance test for a two-router network using ApacheBench and NGINX. ApacheBench makes HTTP requests for 1-megabyte images (through its router's TCP Listener). On the other end of the two-router chain, NGINX serves the images.
The network looks like this:
ApacheBench — Router_1 — Router_2 — NGINX
ApacheBench allows different levels of 'concurrency' to be used. It is not multi-threaded. If the user requests a concurrency level of N, it just sends N requests one after the other, and then waits for all the responses.
If they do not all arrive within 30 seconds (by default), the test times out.
The Bug
-----------------------------------------------------
I ran a test in which ApacheBench, using a concurrency level of 10, requested 1 million images of 1 mb each through the two-router network. None of the five tests ran to completion. All of them ended with a message similar to this:
apr_pollset_poll: The timeout specified has expired (70007)
Total of 242500 requests completed
When I ran the same test, except with no routers in between ApacheBench and NGINX, all five iterations ran to completion.
The Code
-----------------------------------------------------
I used Main code on both the Router and Proton as of a few days ago.
The Setup
-----------------------------------------------------
The two router configuration files are attached.
Also attached is my config file for NGINX, which I put in /etc/nginx/nginx.conf
The image that got served was at: /var/www/html/images/launch_1M.tif
And the ApacheBench command that I used was:
ab -n 1000000 -c 10 http://localhost:5801/images/launch_1M.tif
For the version of the test with no routers involved, the ApacheBench command is:
ab -n 1000000 -c 10 http://localhost/images/launch_1M.tif
By the way, the image that I used was of a rocket launch.
I have no idea what might happen if you show it an image of a rocket exploding!