Nginx can not use more than 1024 log?

Hello everyone,
I think the open file problem already mentioned.

Here is the error

2016/06/28 21:12:41 [emerg] 1539#1539: open()
“/var/log/nginx/xxx-xxx-xx_error.log” failed (24: Too many open files)

I use 531 virtual host, each one of the virtual host uses 2 log files
(access_log and error_log). Nginx uses 1062 logs.

Here is my system configuration :

/etc/sysctl.conf

fs.file-max = 2097152

/etc/security/limits.conf (I use net user)

net soft nofile 800000
net hard nofile 1000000
net soft locks unlimited
net hard locks unlimited
net soft nproc unlimited
net hard nproc unlimited
net soft core unlimited
net hard core unlimited
net soft data unlimited
net hard data unlimited
net soft cpu unlimited
net hard cpu unlimited

/etc/default/nginx

NGINX_ULIMIT="-n 1000000"

/etc/nginx/nginx.conf

worker_rlimit_nofile 100000;

ulimit info for user net

ulimit -a
core file size (blocks, -c) unlimited
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 15793
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 800000
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) unlimited
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited

I use an debian 8 with nginx 1.10.1-1~jessie

Here are the compilation options en debian 8

nginx -V
nginx version: nginx/1.10.1
built by gcc 4.9.2 (Debian 4.9.2-10)
built with OpenSSL 1.0.1k 8 Jan 2015 (running with OpenSSL 1.0.1t 3 May
2016)
TLS SNI support enabled
configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx
–modules-path=/usr/lib/nginx/modules --conf-path=/etc/nginx/nginx.conf
–error-log-path=/var/log/nginx/error.log
–http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid
–lock-path=/var/run/nginx.lock
–http-client-body-temp-path=/var/cache/nginx/client_temp
–http-proxy-temp-path=/var/cache/nginx/proxy_temp
–http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp
–http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp
–http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx
–group=nginx --with-http_ssl_module --with-http_realip_module
–with-http_addition_module --with-http_sub_module
–with-http_dav_module --with-http_flv_module --with-http_mp4_module
–with-http_gunzip_module --with-http_gzip_static_module
–with-http_random_index_module --with-http_secure_link_module
–with-http_stub_status_module --with-http_auth_request_module
–with-http_xslt_module=dynamic --with-http_image_filter_module=dynamic
–with-http_geoip_module=dynamic --with-http_perl_module=dynamic
–add-dynamic-module=debian/extra/njs-1c50334fbea6/nginx --with-threads
–with-stream --with-stream_ssl_module --with-http_slice_module
–with-mail --with-mail_ssl_module --with-file-aio --with-ipv6
–with-http_v2_module --with-cc-opt=’-g -O2 -fstack-protector-strong
-Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2’
–with-ld-opt=’-Wl,-z,relro -Wl,–as-needed’

I do not understand why it does not work. The same configuration on a
debian 7 with the same version of nginx working properly.

Here are the compilation options en debian 7

nginx -V
nginx version: nginx/1.10.1
built by gcc 4.7.2 (Debian 4.7.2-5)
built with OpenSSL 1.0.1e 11 Feb 2013
TLS SNI support enabled
configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx
–modules-path=/usr/lib/nginx/modules --conf-path=/etc/nginx/nginx.conf
–error-log-path=/var/log/nginx/error.log
–http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid
–lock-path=/var/run/nginx.lock
–http-client-body-temp-path=/var/cache/nginx/client_temp
–http-proxy-temp-path=/var/cache/nginx/proxy_temp
–http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp
–http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp
–http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx
–group=nginx --with-http_ssl_module --with-http_realip_module
–with-http_addition_module --with-http_sub_module
–with-http_dav_module --with-http_flv_module --with-http_mp4_module
–with-http_gunzip_module --with-http_gzip_static_module
–with-http_random_index_module --with-http_secure_link_module
–with-http_stub_status_module --with-http_auth_request_module
–with-http_xslt_module=dynamic --with-http_image_filter_module=dynamic
–with-http_geoip_module=dynamic --with-http_perl_module=dynamic
–add-dynamic-module=debian/extra/njs-1c50334fbea6/nginx --with-threads
–with-stream --with-stream_ssl_module --with-http_slice_module
–with-mail --with-mail_ssl_module --with-file-aio --with-ipv6
–with-http_v2_module --with-cc-opt=’-g -O2 -fstack-protector
–param=ssp-buffer-size=4 -Wformat -Werror=format-security
-Wp,-D_FORTIFY_SOURCE=2’ --with-ld-opt=’-Wl,-z,relro -Wl,–as-needed’

Difference between the compiler options :
debian 7

built by gcc 4.7.2 (Debian 4.7.2-5)
built with OpenSSL 1.0.1e 11 Feb 2013
–with-cc-opt=’-g -O2 -fstack-protector --param=ssp-buffer-size=4
-Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2’
–with-ld-opt=’-Wl,-z,relro -Wl,–as-needed’

debian 8

built by gcc 4.9.2 (Debian 4.9.2-10)
built with OpenSSL 1.0.1k 8 Jan 2015 (running with OpenSSL 1.0.1t 3 May
2016)
–with-cc-opt=’-g -O2 -fstack-protector-strong -Wformat
-Werror=format-security -Wp,-D_FORTIFY_SOURCE=2’
–with-ld-opt=’-Wl,-z,relro -Wl,–as-needed’

Would you have a solution?

Thank you.

Regards,
Alexandre

Hi,

What does a ‘cat /proc/PID/limits’ (replace PID with the NGINX PID
number)
show you ?

The limits.conf file does not apply to systemd services.
Edit the file /lib/systemd/system/nginx.service and within the
‘[Service]’
section the following: LimitNOFILE=65536
After that run: systemctl daemon-reload && systemctl restart nginx

Wesley

Posted at Nginx Forum:

Hi Wesley,

I can not get information because the nginx service does not start.

You’re right, actually have to use the file
/lib/systemd/system/nginx.service. However, the file does not exist. I
find this file on debian 8 : /run/systemd/generator.late/nginx.service


[Unit]
SourcePath=/etc/init.d/nginx
Description=LSB: Stop/start nginx
Before=runlevel2.target runlevel3.target runlevel4.target
runlevel5.target shutdown.target
After=network-online.target remote-fs.target local-fs.target
Wants=network-online.target
Conflicts=shutdown.target

[Service]
Type=forking
Restart=no
TimeoutSec=5min
IgnoreSIGPIPE=no
KillMode=process
GuessMainPID=no
RemainAfterExit=yes
SysVStartPriority=1
ExecStart=/etc/init.d/nginx start
ExecStop=/etc/init.d/nginx stop
ExecReload=/etc/init.d/nginx reload

I followed your instructions :

  • I create the nginx.service in /lib/systemd/system/nginx.service
  • I add “LimitNOFILE=65536”

[Unit]
SourcePath=/etc/init.d/nginx
Description=LSB: Stop/start nginx
Before=runlevel2.target runlevel3.target runlevel4.target
runlevel5.target shutdown.target
After=network-online.target remote-fs.target local-fs.target
Wants=network-online.target
Conflicts=shutdown.target

[Service]
Type=forking
Restart=no
TimeoutSec=5min
IgnoreSIGPIPE=no
KillMode=process
GuessMainPID=no
RemainAfterExit=yes
SysVStartPriority=1
ExecStart=/etc/init.d/nginx start
ExecStop=/etc/init.d/nginx stop
ExecReload=/etc/init.d/nginx reload
LimitNOFILE=65536

* systemctl daemon-reload && systemctl restart nginx

Now it works perfectly !

Thank you very much Wesley.

I have a question, I use the official repository nginx.

deb Index of /packages/debian/ jessie nginx
deb-src Index of /packages/debian/ jessie nginx

Would it be possible to create the nginx.service file during
installation of nginx?

Thank you the nginx community.

Regards,
Alexandre.