title: nginx loadbalancer Too many open files
body: <p>I've a loadbalancer and I get this kind errors:</p>
  
  <pre><code>2017/09/12 11:18:38 [crit] 22348#22348: accept4() failed (24: Too many open files)
  2017/09/12 11:18:38 [alert] 22348#22348: *4288962 socket() failed (24: Too many open files) while connecting to upstream, client: x.x.x.x, server: example.com, request: "GET /xxx.jpg HTTP/1.1", upstream: "http://y.y.y.y:80/xxx.jpg", host: "example.com", referrer: "https://example.com/some-page"
  2017/09/12 11:18:38 [crit] 22348#22348: *4288962 open() "/usr/local/nginx/html/50x.html" failed (24: Too many open files), client: x.x.x.x, server: example.com, request: "GET /xxx.jpg HTTP/1.1", upstream: "http://y.y.y.y:80/xxx.jpg", host: "example.com", referrer: "https://example.com/some-page"
  </code></pre>
  
  <p><strong>nginx version</strong>: nginx/1.10.1</p>
  
  <p><strong>Os</strong>: Debian GNU/Linux 8 (jessie)</p>
  
  <p>The interesting thing is not always get error. Mostly I get a 30-50 lines of errors then nothing in 5-10 minutes. And then once the errors are coming again...</p>
  
  <p>Here is my nginx.conf:</p>
  
  <pre><code>user                    www-data;
  pid                     /usr/local/nginx/nginx.pid;
  worker_processes        auto;
  
  error_log               /var/log/nginx/error.log;
  
  events {
      worker_connections  30000;
  }
  
  http {
      include             mime.types;
      default_type        application/octet-stream;
  
      fastcgi_buffers 16 16k;
      fastcgi_buffer_size 32k;
  
      proxy_buffer_size   128k;
      proxy_buffers   4 256k;
      proxy_busy_buffers_size   256k;
      client_max_body_size 500m;
      rewrite_log on;
  
      log_format          main    '$remote_addr - "$proxy_add_x_forwarded_for" -  [$time_local] "$request" '
                                  '$status $body_bytes_sent "$http_referer" '
                                  '"$http_user_agent" "$backend" '
                                  'rt=$request_time uct="$upstream_connect_time" '
                                  'uht="$upstream_header_time" urt="$upstream_response_time"';
  
      access_log          /var/log/nginx/access.log main;
  
      sendfile            on;
      tcp_nopush          on;
      tcp_nodelay         on;
      keepalive_timeout   65;
  
      geoip_country    /etc/nginx/geodb/GeoIP.dat;
      geoip_city       /etc/nginx/geodb/GeoLiteCity.dat;
  
      include             /etc/nginx/loadbalancer/loadbalancer.conf;
  
  }
  </code></pre>
  
  <p>And also some info:</p>
  
  <pre><code>$ ulimit -Hn
  65536
  $ ulimit -Sn
  65536
  $ sysctl fs.file-nr
  fs.file-nr = 2848   0   70000
  </code></pre>
  
  <p>I don't know if it is worth but this loadbalancer is behind cloudflare.</p>