<div dir="ltr"><div>Hi,</div><div><br></div><div>First of all, my environment:</div><div><br></div><div>- About 1.6 GB RAM, which doesn't seem to be a bottleneck because actually I'm barely using it.</div><div>- CPU fast enough (I guess)</div>
<div>- Ubuntu 12.0.4 (32 bits, probably thats irrelevant here)</div><div>- My users make requests using port 80 (actually not specifyng the port) to call a service I'm running on my server.</div><div>- Nginx 1.4.3 receives the requests, and then derives them to Tomcat 7.0.33</div>
<div>- Tomcat 7.0.33 is running on port 8080.</div><div><br></div><div>My website/service has been always running fine. I'm making stress tests in order to see if I can handle about 1000 queries per second, and I'm getting this error message in Nginx's log:</div>
<div><br></div><div><br></div><div>2014/02/12 09:59:42 [crit] 806#0: *595361 connect() to <a href="http://127.0.0.1:8080/" target="_blank">127.0.0.1:8080</a> failed (99: Cannot assign requested address) while connecting to upstream, client: 58.81.5.31, server: <a href="http://api.acme.com/" target="_blank">api.acme.com</a>, request: "GET /iplocate/locate?key=UZ6FD8747F76VZ&ip=61.157.194.46 HTTP/1.1", upstream: "<a href="http://127.0.0.1:8080/iplocate/locate?key=UZ6FD8747F76VZ&ip=61.157.194.46" target="_blank">http://127.0.0.1:8080/iplocate/locate?key=UZ6FD8747F76VZ&ip=61.157.194.46</a>", host: "<a href="http://services.acme.com/" target="_blank">services.acme.com</a>"</div>
<div><br></div><div>My users are geting a "BAD GATEWAY" error status, which they are getting in their Java clients with an exception. My interpretation is that Nginx is suddenly unable to communicate with Tomcat, so it delivers an HTTP error status code "BAD GATEWAY".</div>
<div><br></div><div>It starts running fine, but after 1-2 minutes I start geting this error. Obviously I'm running out of some kind of resource (ports?). If I wait for a few minutes to let the system "rest", then it works again for a while (1 minute maybe) and then it fails again.</div>
<div><br></div><div>If I run this command (which I suspect is relevant):</div><div><br></div><div>           sysctl net.ipv4.ip_local_port_range</div><div><br></div><div>I get this response, which I think its standard in Ubuntu (I haven't messed with it):</div>
<div><br></div><div>      root@ip-10-41-156-142:~# sysctl net.ipv4.ip_local_port_range<br>      net.ipv4.ip_local_port_range = 32768    61000</div><div><br></div><div>I have read some postings about configuring ports in order to get rid of this error message, but I don't know if that is my problem.</div>
<div><br></div><div>Could somebody please help me?</div><div><br></div><div>Brian</div><div><br></div><div><br></div><div>============================== NGINX CONFIGURATION FOLLOWS===========</div><div>user www-data;<br>worker_processes 4; <br>
 pid /var/run/nginx.pid;</div><div>events {<br> worker_connections 768; <br> # multi_accept on; <br>}</div><div>http {</div><div> limit_req_status 429; </div><div> map $arg_capacity $1X_key{~*^1X$ $http_x_forwarded_for;default "";}</div>
<div> limit_req_zone $1X_key zone=1X:1m rate=180r/m;</div><div><br> ##<br> # Basic Settings<br> ##</div><div> client_max_body_size 0m;  <br> sendfile on; <br> tcp_nopush on; <br> tcp_nodelay on; <br> keepalive_timeout 65;  <br>
  types_hash_max_size 2048;  <br> # server_tokens off;  </div><div> # server_names_hash_bucket_size 64;  <br> # server_name_in_redirect off; </div><div> include /etc/nginx/mime.types; <br> default_type application/octet-stream;  </div>
<div> ##<br> # Logging Settings<br> ##</div><div><br>log_format  formato_especial '$remote_addr - $remote_user [$time_local] "$request" '<br>                  '$status $body_bytes_sent "$http_referer" '<br>
                   '"$http_user_agent" "$http_x_real_ip" "$http_x_forwarded_for"';</div><div><br> access_log off;<br> error_log /var/log/nginx/error.log;</div><div><br> ##<br> # Virtual Host Configs<br>
  ##</div><div> include /etc/nginx/conf.d/*.conf;</div><div><br></div><div>server {</div><div> limit_req zone=1X burst=300;</div><div><br>    limit_req_log_level error;</div><div>    listen 80; <br>    server_name <a href="http://api.acme.com/" target="_blank">api.acme.com</a> <a href="http://https-api.acme.com/" target="_blank">https-api.acme.com</a> <a href="http://services.acme.com/" target="_blank">services.acme.com</a> <a href="http://https-services.acme.com/" target="_blank">https-services.acme.com</a>;<br>
     location / {<br>        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;<br>        proxy_set_header Host $http_host;<br>        proxy_pass <a href="http://127.0.0.1:8080/" target="_blank">http://127.0.0.1:8080/</a>;<br>
    }</div><div>}</div><div><br></div><div>}</div></div>