j'ai un loadbalancer et je reçois cette erreur de genre:nginx LoadBalancer Trop de fichiers ouverts
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"
version nginx: nginx/1.10.1
Os: Debian GNU/Linux 8 (Jessie)
La chose intéressante n'est pas toujours obtenir une erreur. La plupart du temps je reçois 30-50 lignes d'erreurs puis rien en 5-10 minutes. Et puis une fois que les erreurs arrivent encore ...
Voici mon nginx.conf:
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;
}
Et aussi quelques informations:
$ ulimit -Hn
65536
$ ulimit -Sn
65536
$ sysctl fs.file-nr
fs.file-nr = 2848 0 70000
Je ne sais pas si cela vaut la peine mais ce loadbalancer est derrière cloudflare.
Le 'ulimit' que vous vérifiez est probablement pour l'utilisateur root. Vous exécutez les opérateurs 'nginx' comme' www-data', vous devez donc vérifier les ulimits pour cet utilisateur. Essayez d'utiliser 'sudo -u www-data bash -c" ulimit "' –
@TarunLalwani Il est dit: 'unlimited' – MrRP