Aqui está minha configuração do Varnish:
/usr/sbin/varnishd \
-a 127.0.0.1:6081 \
-T 127.0.0.1:6082 \
-f /varnish/default.vcl \
-P %t/%N/varnishd.pid \
-s malloc,4G \
-p thread_pools=12 -p thread_pool_min=250 -p default_ttl=1 -p default_grace=0 -p timeout_idle=1800
Então 12 * 250 = 3000 threads. Com essa configuração, acabo com mais de 400k arquivos abertos.
Reduzir o número de threads ao mínimo realmente reduz muito o número de arquivos abertos.
A questão é: como isso é possível? É normal que cada thread do Varnish ocupe tantos arquivos abertos?
EDIT: Aqui está meu arquivo VCL:
vcl 4.1;
backend someBackend {
.host = "someBackend.net";
.connect_timeout = 2s;
.first_byte_timeout = 5s;
.between_bytes_timeout = 5s;
}
sub vcl_recv {
# Remove Varnish from X-Forwarded-For (set by Nginx)
set req.http.X-Forwarded-For = regsub(req.http.X-Forwarded-For, ",[^,]+$", "");
}
sub vcl_backend_fetch {
# Hide Varnish token
unset bereq.http.X-Varnish;
}
sub vcl_backend_response {
unset beresp.http.Vary;
}
sub vcl_deliver {
unset resp.http.Via;
unset resp.http.X-Varnish;
}