现象:nginx域名配置合并之后,发现consul-template无法完成nginx重载,然后发现需要重启nginx,才能让配置生效。

注意:下次哪个服务有报错,就看重启时所有日志输出,各种情况日志输出。不要忽略细节。很多时候其实已经看到了问题,却没有深入查看问题。

查看进程最大打开文件个数

#cat /proc/31146/limits|grep "Max open files"

Max open files            1024                 4096                 files

# cat /usr/lib/systemd/system/openresty.service
[Unit]

[Service]
LimitNOFILE=655350

[Install]

#

consul-template无法重载,是因为进程本身无法重载,进程无法打开文件了

[root@vm-nginx003.mm.machangwei.com mcw]# ps -ef|grep nginx
root 3114 1 0 02:19 ? 00:00:00 nginx: master process /usr/local/openresty/nginx/sbin/nginx
nobody 3115 3114 0 02:19 ? 00:00:00 nginx: worker process
nobody 3116 3114 0 02:19 ? 00:00:00 nginx: worker process
root 3132 9036 0 02:19 pts/1 00:00:00 grep --color=auto nginx
[root@vm-nginx003.mm.machangwei.com mcw]#
[root@vm-nginx003.mm.machangwei.com mcw]# systemctl reload openresty
[root@vm-nginx003.mm.machangwei.com mcw]# ps -ef|grep nginx
root 3114 1 2 02:19 ? 00:00:00 nginx: master process /usr/local/openresty/nginx/sbin/nginx
nobody 3115 3114 0 02:19 ? 00:00:00 nginx: worker process is shutting down
nobody 3116 3114 0 02:19 ? 00:00:00 nginx: worker process is shutting down
nobody 3171 3114 4 02:20 ? 00:00:00 nginx: worker process
nobody 3172 3114 4 02:20 ? 00:00:00 nginx: worker process
root 3175 9036 0 02:20 pts/1 00:00:00 grep --color=auto nginx
[root@vm-nginx003.mm.machangwei.com mcw]#

查看日志报错:有打开太多文件数

[root@vm-nginx003.mm.machangwei.com mcw]# ls /data/logs/nginx/nginx_error.log
/data/logs/nginx/nginx_error.log
[root@vm-nginx003.mm.machangwei.com mcw]# vim /data/logs/nginx/nginx_error.log
2024/05/18 00:59:57 [notice] 15124#15124: exit
2024/05/18 00:59:57 [notice] 1586#1586: signal 17 (SIGCHLD) received from 15123
2024/05/18 00:59:57 [notice] 1586#1586: signal 14 (SIGALRM) received
2024/05/18 00:59:57 [notice] 1586#1586: worker process 15123 exited with code 0
2024/05/18 00:59:57 [notice] 1586#1586: worker process 15124 exited with code 0
2024/05/18 00:59:57 [notice] 1586#1586: exit
2024/05/18 01:00:15 [notice] 15493#15493: using the "epoll" event method
2024/05/18 01:00:15 [notice] 15493#15493: openresty/1.19.3.1
2024/05/18 01:00:15 [notice] 15493#15493: built by gcc 8.3.1 20190311 (Red Hat 8.3.1-3) (GCC)
2024/05/18 01:00:15 [notice] 15493#15493: OS: Linux 5.4.65-200.el7.x86_64
2024/05/18 01:00:15 [notice] 15493#15493: getrlimit(RLIMIT_NOFILE): 1024:4096
2024/05/18 01:00:15 [notice] 15496#15496: start worker processes
2024/05/18 01:00:15 [notice] 15496#15496: start worker process 15497
2024/05/18 01:00:15 [notice] 15496#15496: start worker process 15498
2024/05/18 01:00:29 [notice] 15496#15496: signal 1 (SIGHUP) received from 15545, reconfiguring
2024/05/18 01:00:29 [notice] 15496#15496: reconfiguring
2024/05/18 01:00:29 [warn] 15496#15496: conflicting server name "test-content-review.mcwcn.com" on 0.0.0.0:80, ignored
2024/05/18 01:00:29 [warn] 15496#15496: could not build optimal server_names_hash, you should increase either server_names_hash_max_size: 51
2 or server_names_hash_bucket_size: 128; ignoring server_names_hash_bucket_size
2024/05/18 01:00:29 [emerg] 15496#15496: open() "/data/logs/nginx/dev-account-mcwapps_error.log" failed (24: Too many open files)
2024/05/18 01:01:03 [notice] 15496#15496: signal 1 (SIGHUP) received from 15723, reconfiguring
2024/05/18 01:01:03 [notice] 15496#15496: reconfiguring
2024/05/18 01:01:03 [warn] 15496#15496: conflicting server name "test-content-review.mcwcn.com" on 0.0.0.0:80, ignored
2024/05/18 01:01:03 [warn] 15496#15496: could not build optimal server_names_hash, you should increase either server_names_hash_max_size: 51
2 or server_names_hash_bucket_size: 128; ignoring server_names_hash_bucket_size
2024/05/18 01:01:03 [emerg] 15496#15496: open() "/data/logs/nginx/dev-account-mcwapps_error.log" failed (24: Too many open files)
2024/05/18 01:01:14 [notice] 15496#15496: signal 1 (SIGHUP) received from 15750, reconfiguring
2024/05/18 01:01:14 [notice] 15496#15496: reconfiguring
2024/05/18 01:00:29 [warn] 15496#15496: conflicting server name "test-content-review.mcwcn.com" on 0.0.0.0:80, ignored
2024/05/18 01:00:29 [warn] 15496#15496: could not build optimal server_names_hash, you should increase either server_names_hash_max_size: 51
2 or server_names_hash_bucket_size: 128; ignoring server_names_hash_bucket_size
2024/05/18 01:00:29 [emerg] 15496#15496: open() "/data/logs/nginx/dev-account-mcwapps_error.log" failed (24: Too many open files)
2024/05/18 01:01:03 [notice] 15496#15496: signal 1 (SIGHUP) received from 15723, reconfiguring
2024/05/18 01:01:03 [notice] 15496#15496: reconfiguring
2024/05/18 01:01:03 [warn] 15496#15496: conflicting server name "test-content-review.mcwcn.com" on 0.0.0.0:80, ignored
2024/05/18 01:01:03 [warn] 15496#15496: could not build optimal server_names_hash, you should increase either server_names_hash_max_size: 51
2 or server_names_hash_bucket_size: 128; ignoring server_names_hash_bucket_size
2024/05/18 01:01:03 [emerg] 15496#15496: open() "/data/logs/nginx/dev-account-mcwapps_error.log" failed (24: Too many open files)
2024/05/18 01:01:14 [notice] 15496#15496: signal 1 (SIGHUP) received from 15750, reconfiguring
2024/05/18 01:01:14 [notice] 15496#15496: reconfiguring
2024/05/18 01:01:14 [warn] 15496#15496: conflicting server name "test-content-review.mcwcn.com" on 0.0.0.0:80, ignored
2024/05/18 01:01:14 [warn] 15496#15496: could not build optimal server_names_hash, you should increase either server_names_hash_max_size: 51
2 or server_names_hash_bucket_size: 128; ignoring server_names_hash_bucket_size
2024/05/18 01:01:14 [emerg] 15496#15496: open() "/data/logs/nginx/dev-account-mcwapps_error.log" failed (24: Too many open files)
2024/05/18 01:02:46 [notice] 15496#15496: signal 1 (SIGHUP) received from 16163, reconfiguring
2024/05/18 01:02:46 [notice] 15496#15496: reconfiguring
2024/05/18 01:02:46 [warn] 15496#15496: conflicting server name "test-content-review.mcwcn.com" on 0.0.0.0:80, ignored
2024/05/18 01:02:46 [warn] 15496#15496: could not build optimal server_names_hash, you should increase either server_names_hash_max_size: 51
2 or server_names_hash_bucket_size: 128; ignoring server_names_hash_bucket_size
2024/05/18 01:02:46 [emerg] 15496#15496: open() "/data/logs/nginx/dev-account-mcwapps_error.log" failed (24: Too many open files)
2024/05/18 01:03:54 [notice] 15496#15496: signal 3 (SIGQUIT) received from 16526, shutting down
2024/05/18 01:03:54 [notice] 15498#15498: gracefully shutting down
2024/05/18 01:03:54 [notice] 15498#15498: signal 15 (SIGTERM) received from 1, exiting
2024/05/18 01:03:54 [notice] 15496#15496: signal 15 (SIGTERM) received from 1, exiting
2024/05/18 01:03:54 [notice] 15497#15497: signal 15 (SIGTERM) received from 1, exiting

这里查看的,不是那个进程所能打开的最大个数

[root@vm-nginx003.mm.machangwei.com mcw]# cat /etc/security/limits.conf
# End of file
* soft nproc 655350
* hard nproc 655350
* soft nofile 655350
* hard nofile 655350
[root@vm-nginx003.mm.machangwei.com mcw]#
[root@vm-nginx003.mm.machangwei.com mcw]# sysctl -a|grep fs.file-max
fs.file-max = 7930900
[root@vm-nginx003.mm.machangwei.com mcw]#

找到进程id,查看进程可以打开的最大个数,虽然nginx配置了worker可以打开很多个文件,但是也没有设置master进程打开文件个数

[root@vm-nginx003.mm.machangwei.com mcw]# ps -ef|grep nginx
root 31146 1 0 02:01 ? 00:00:00 nginx: master process /usr/local/openresty/nginx/sbin/nginx
nobody 31147 31146 0 02:01 ? 00:00:00 nginx: worker process
nobody 31148 31146 0 02:01 ? 00:00:00 nginx: worker process
root 32633 9036 0 02:07 pts/1 00:00:00 grep --color=auto nginx
[root@vm-nginx003.mm.machangwei.com mcw]# [root@vm-nginx003.mm.machangwei.com mcw]# cat /proc/31146/limits|grep "Max open files"
Max open files 1024 4096 files
[root@vm-nginx003.mm.machangwei.com mcw]#

master进程是systemd启动,systemd启动的进程需要设置打开文件大小个数,新增配置项LimitNOFILE=655350,把数弄大点

[root@vm-nginx003.mm.machangwei.com mcw]# cat /usr/lib/systemd/system/openresty.service
[Unit]
Description=The OpenResty Application Platform
After=syslog.target network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target [Service]
LimitNOFILE=655350
Type=forking
PIDFile=/usr/local/openresty/nginx/logs/nginx.pid
ExecStartPre=/usr/local/openresty/nginx/sbin/nginx -t
ExecStart=/usr/local/openresty/nginx/sbin/nginx
#ExecStart=/bin/openresty
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true [Install]
WantedBy=multi-user.target
[root@vm-nginx003.mm.machangwei.com mcw]#

重启之后,查看进程最大支持打开文件个数,已经被修改了

[root@vm-nginx003.mm.machangwei.com mcw]# ps -ef|grep nginx
root 3114 1 0 02:19 ? 00:00:00 nginx: master process /usr/local/openresty/nginx/sbin/nginx
nobody 3223 3114 0 02:20 ? 00:00:00 nginx: worker process
nobody 3224 3114 0 02:20 ? 00:00:00 nginx: worker process
root 3618 9036 0 02:21 pts/1 00:00:00 grep --color=auto nginx
[root@vm-nginx003.mm.machangwei.com mcw]#
[root@vm-nginx003.mm.machangwei.com mcw]# cat /proc/3114/limits|grep "Max open files"
Max open files 655350 655350 files
[root@vm-nginx003.mm.machangwei.com mcw]#

多次重载nginx,可以看到旧的子进程在关闭,新的子进程在启动代替它

[root@vm-nginx003.mm.machangwei.com mcw]# ps -ef|grep nginx
root 3114 1 0 02:19 ? 00:00:00 nginx: master process /usr/local/openresty/nginx/sbin/nginx
nobody 3115 3114 0 02:19 ? 00:00:00 nginx: worker process
nobody 3116 3114 0 02:19 ? 00:00:00 nginx: worker process
root 3132 9036 0 02:19 pts/1 00:00:00 grep --color=auto nginx
[root@vm-nginx003.mm.machangwei.com mcw]#
[root@vm-nginx003.mm.machangwei.com mcw]# systemctl reload openresty
[root@vm-nginx003.mm.machangwei.com mcw]# ps -ef|grep nginx
root 3114 1 2 02:19 ? 00:00:00 nginx: master process /usr/local/openresty/nginx/sbin/nginx
nobody 3115 3114 0 02:19 ? 00:00:00 nginx: worker process is shutting down
nobody 3116 3114 0 02:19 ? 00:00:00 nginx: worker process is shutting down
nobody 3171 3114 4 02:20 ? 00:00:00 nginx: worker process
nobody 3172 3114 4 02:20 ? 00:00:00 nginx: worker process
root 3175 9036 0 02:20 pts/1 00:00:00 grep --color=auto nginx
[root@vm-nginx003.mm.machangwei.com mcw]#

=====

参考信息如下:

nginx重载,/bin/kill -s HUP 不生效

在Nginx中,/bin/kill -s HUP 命令通常用于重新加载Nginx的配置文件,而不是挂起(suspend)Nginx进程。如果你发现这个命令没有生效,可能是由以下几个原因造成的:

  1. 错误的进程ID:确保你发送HUP信号的进程ID(PID)是正确的。你可以通过 ps 命令查找Nginx的主进程ID。

    bash复制代码
      ps aux | grep nginx

    通常,你会看到类似 nginx master process 的行,后面跟着的就是主进程的PID。

  2. 权限问题:你可能没有足够的权限来发送信号给Nginx进程。确保你具有发送信号到该进程的权限,或者使用root用户来执行该命令。

  3. Nginx进程未运行:确保Nginx服务正在运行。你可以使用 systemctl status nginx(对于使用systemd的系统)或 service nginx status(对于使用SysVinit的系统)来检查Nginx的状态。

  4. Nginx配置文件有错误:如果Nginx的配置文件存在语法错误,nginx -s reload 或 /bin/kill -s HUP [nginx_pid] 可能不会生效,因为Nginx无法重新加载一个无效的配置。你可以使用 nginx -t 来测试配置文件的语法是否正确。

  5. Nginx不是通过init系统启动的:如果Nginx不是通过init系统(如systemd或SysVinit)启动的,那么它可能不会响应HUP信号。确保Nginx是通过标准的init系统服务来管理的。

  6. SELinux或AppArmor安全策略:如果你的系统启用了SELinux或AppArmor这样的安全模块,它们可能会阻止进程之间的信号传递。检查相关的安全策略或日志文件以确认是否有相关的限制。

  7. 其他系统级限制:有些系统级的限制(如cgroups、资源限制等)可能会阻止进程接收或处理信号。

为了解决这个问题,你可以尝试以下步骤:

  • 使用正确的Nginx进程ID重新发送HUP信号。
  • 确保你具有发送信号所需的权限。
  • 检查Nginx的状态和日志文件,确认它是否正在运行且没有错误。
  • 使用 nginx -t 测试Nginx配置文件的语法是否正确。
  • 如果可能的话,尝试通过init系统(如 systemctl reload nginx)来重新加载Nginx配置。
  • 检查SELinux或AppArmor的安全策略,确保它们没有阻止信号传递。
  • 如果以上步骤都无法解决问题,考虑重启Nginx服务(但请注意,这会导致短暂的服务中断)。

nginx报错 open() "_error.log" failed (24: Too many open files)

Nginx 报错 "open() "_error.log" failed (24: Too many open files)" 意味着 Nginx 进程尝试打开的文件数量超过了系统或用户级别的限制。在 Linux 系统中,每个进程和每个用户都有打开文件数量的限制。

要解决这个问题,你可以采取以下几个步骤:

  1. 检查当前限制:
    你可以使用 ulimit -n 命令来查看当前 shell 会话中打开文件的数量限制。然而,Nginx 进程的限制可能由系统或用户级别的限制设置,而不是由 shell 会话设置。

    为了查看 Nginx 进程的实际限制,你可以查看 /proc/[nginx_pid]/limits 目录中的文件,其中 [nginx_pid] 是 Nginx 主进程的 PID。或者,你可以使用 cat /proc/[nginx_pid]/limits | grep 'Max open files' 命令。

  2. 增加用户级别的限制:
    如果你确定问题是用户级别的限制,你可以修改 /etc/security/limits.conf 文件,添加或修改类似下面的行来增加打开文件的限制:

    复制代码
      * soft nofile 4096
      * hard nofile 65535

    或者,只为运行 Nginx 的用户(如 www-data)设置限制:

    复制代码
      www-data soft nofile 4096
      www-data hard nofile 65535

    注意:修改这些限制后,需要重启 Nginx 或重新登录用户才能生效。

  3. 增加系统级别的限制:
    如果你发现系统级别的限制也很低,你可能需要修改 /etc/sysctl.conf 文件(或相应的 sysctl 配置位置),增加 fs.file-max 的值。例如:

    复制代码
      fs.file-max = 100000

    修改后,需要运行 sysctl -p 或重启系统来应用新的设置。

  4. 优化 Nginx 配置:
    确保你的 Nginx 配置中没有导致打开过多文件的设置。例如,避免不必要的日志记录、优化缓存设置等。

  5. 检查文件描述符泄漏:
    如果 Nginx 进程持续打开新的文件描述符而没有关闭它们,这可能是资源泄漏的迹象。使用工具如 lsoft 或 strace 可以帮助你诊断这种情况。

  6. 重启 Nginx:
    在修改限制或修复潜在的问题后,重启 Nginx 以确保更改生效。

  7. 监控和日志:
    监控 Nginx 进程的文件描述符使用情况,并定期检查日志文件以获取可能的线索。

请注意,在修改系统或用户级别的限制之前,最好先了解你的系统环境和需求,以避免意外的问题。如果你不确定如何操作,最好咨询系统管理员或有经验的开发人员。

查看进程最大打开文件个数

要查看Linux系统中进程的最大打开文件个数限制,你可以使用ulimit命令(针对当前shell会话)或查看/proc文件系统下的特定进程信息。但是,ulimit通常显示的是当前shell会话的限制,而不是特定进程的限制。

要查看特定进程(例如Nginx的主进程)的最大打开文件数限制,你可以直接读取/proc/[pid]/limits文件,其中[pid]是进程的PID。但是,这个文件的内容可能不太容易直接读取,因为它包含了多个字段和限制。

一个更简单的方法是使用cat命令结合grep来提取与打开文件数(nofile)相关的行:

bash复制代码
  cat /proc/[pid]/limits | grep 'Max open files'

[pid]替换为你要查询的进程的PID。这将显示类似以下内容的输出:

复制代码
  Max open files 1024 4096 files

这里,1024是软限制(soft limit),表示进程在达到这个限制时会收到警告,但可以继续运行;4096是硬限制(hard limit),表示进程不能打开超过这个数量的文件。

如果你只是想快速查看某个用户的默认打开文件数限制(这通常也是新进程的默认限制),你可以使用ulimit -n命令(在用户的shell中执行):

bash复制代码
  ulimit -n

这将显示当前shell会话的打开文件数软限制。请注意,这不一定反映Nginx或其他进程的实际限制,除非这些进程在当前shell会话中启动。

最后,如果你想要修改这些限制,你可能需要编辑/etc/security/limits.conf文件(对于用户级别的限制)或使用sysctl命令修改系统级别的fs.file-max参数(这控制整个系统的文件描述符数量上限)。但是,在修改这些设置之前,请确保你了解它们的影响,并在可能的情况下先在测试环境中进行验证。

ulimit生效命令

在Linux系统中,ulimit 命令用于设置或报告当前shell会话的资源限制。这些限制包括打开文件的最大数量、进程可以创建的最大数量、栈大小、CPU时间等。然而,ulimit 的设置仅对当前shell会话及其子进程有效,不会影响已经运行的进程或其他用户的shell会话。

查看当前限制

要查看当前shell会话的打开文件数限制,可以使用:

bash复制代码
  ulimit -n

设置资源限制

要设置打开文件的最大数量限制(例如,设置为4096),可以使用:

bash复制代码
  ulimit -n 4096

这将对当前shell会话及其所有后续启动的子进程生效。但是,它不会影响已经运行的进程或其他用户的shell会话。

持久化ulimit设置

由于ulimit的设置仅对当前shell会话有效,因此如果你希望在系统启动时或在新的shell会话中自动应用这些设置,你需要将它们添加到用户的shell配置文件(如.bashrc.bash_profile.zshrc等)中。

例如,在Bash shell中,你可以将ulimit命令添加到~/.bashrc文件的末尾:

bash复制代码
  echo 'ulimit -n 4096' >> ~/.bashrc

然后,为了使更改生效,你需要重新加载.bashrc文件或启动一个新的shell会话:

bash复制代码
  source ~/.bashrc

或者,你可以简单地关闭并重新打开终端。

注意事项

  • 修改ulimit设置可能会影响程序的正常运行,特别是如果设置的限制低于程序所需的值。因此,在修改这些设置之前,请确保你了解它们的影响。
  • 如果你想要修改系统级别的资源限制(例如,fs.file-max),你需要使用sysctl命令或编辑相应的系统配置文件(如/etc/sysctl.conf),并可能需要重启系统或重新加载内核参数才能使更改生效。
  • 对于Nginx等长时间运行的服务,通常建议在系统启动脚本或init.d脚本中设置适当的资源限制,以确保服务在启动时具有正确的限制。这可以通过在启动脚本中添加ulimit命令或使用其他机制(如systemd的LimitNOFILE指令)来实现。

修改nginx进程 Max open files

要修改Nginx进程的最大打开文件数(Max open files),你需要做的是调整Nginx运行用户的文件描述符(file descriptor)限制。这通常涉及到修改系统级别的设置和用户级别的限制。

1. 修改系统级别的文件描述符限制

首先,你可能需要修改系统级别的文件描述符限制,这可以通过编辑/etc/sysctl.conf文件来实现。在文件中添加或修改以下行:

bash复制代码
  fs.file-max = 100000 # 这是一个例子,你可以根据需要调整这个值

然后,运行sysctl -p来使更改生效,或者重启系统。

2. 修改用户级别的文件描述符限制

Nginx通常以特定的用户身份运行(如nginxwww-data等)。你需要为这个用户设置文件描述符的限制。这可以通过修改/etc/security/limits.conf文件来实现。在文件中添加或修改类似以下行:

bash复制代码
  * soft nofile 4096
  * hard nofile 65535
  # 或者为特定的Nginx用户设置
  nginx soft nofile 4096
  nginx hard nofile 65535

这里的*表示所有用户,但你也可以为特定的Nginx用户(如nginx)设置限制。soft是警告限制,当达到这个限制时,系统会给用户一个警告,但仍然允许其继续运行。hard是硬限制,当达到这个限制时,系统将不允许用户打开更多的文件。

3. 使用systemd管理Nginx服务

如果你的系统使用systemd来管理Nginx服务,你也可以在Nginx的systemd服务单元文件中设置资源限制。编辑Nginx的service文件(通常位于/etc/systemd/system//lib/systemd/system/目录下),添加或修改LimitNOFILE选项:

ini复制代码
  [Service]
  User=nginx
  Group=nginx
  LimitNOFILE=65535
  ExecStart=/usr/sbin/nginx -g 'daemon off;'
  ...

修改后,重新加载systemd配置并重启Nginx服务:

bash复制代码
  sudo systemctl daemon-reload
  sudo systemctl restart nginx

4. 验证设置

要验证设置是否生效,你可以检查Nginx进程的/proc/[pid]/limits文件(将[pid]替换为Nginx主进程的PID),或者运行以下命令来查看Nginx用户的限制:

bash复制代码
  sudo -u nginx bash -c 'ulimit -n'

如果输出与你在limits.conf或systemd服务单元文件中设置的限制相匹配,那么设置就已经生效了。

worker_rlimit_nofile 51200

在Nginx的配置文件中,worker_rlimit_nofile 指令用于设置工作进程(worker process)可以打开的最大文件描述符数量。这个设置对于Nginx服务器来说非常重要,因为它直接关联到Nginx能够处理的并发连接数。

在Nginx的配置文件(通常是nginx.conf或者包含在nginx.conf中的某个include文件)中,你可以设置 worker_rlimit_nofile 的值,例如:

nginx复制代码
  worker_rlimit_nofile 51200;

这条指令告诉Nginx,每个工作进程最多可以打开51200个文件描述符。

请注意,worker_rlimit_nofile 的设置值应该根据你的系统资源和Nginx的使用情况进行调整。如果你设置的值太高,可能会导致系统资源耗尽;如果设置得太低,可能会限制Nginx的性能。

此外,你还应该确保系统级别的限制(通过sysctl/etc/sysctl.conf设置)和用户级别的限制(通过/etc/security/limits.conf设置)允许Nginx达到这个值。如果系统或用户级别的限制低于你在Nginx配置中设置的值,那么Nginx将无法使用超过这些限制的文件描述符数量。

最后,在修改这些设置后,你需要重新加载或重启Nginx以使更改生效。如果你使用的是systemd管理Nginx服务,可以使用以下命令来重新加载Nginx配置:

bash复制代码
  sudo systemctl reload nginx

或者重启Nginx服务:

bash复制代码
  sudo systemctl restart nginx

一次nginx文件打开数的问题排查处理的更多相关文章

  1. 调整Linux的最大文件打开数

    要调整一下Linux的最大文件打开数,否则squid在高负载时执行性能将会很低.另外,在Linux下面部署应用时,有时候会遇上 Socket/File:Can’t open so many files ...

  2. Linux下设置最大文件打开数nofile及nr_open、file-max

    在开发运维的时候我们常常会遇到类似“Socket/File: Can’t open so many files”,“无法打开更多进程”,或是coredump过大等问题,这些都可以设置资源限制来解决.今 ...

  3. Centos7修改默认最大文件打开数

    方法一: [root@bogon ~]# vi /etc/systemd/system.conf [root@bogon ~]# cat /etc/systemd/system.conf # This ...

  4. mysql 系统用户最大文件打开数限制

    纸上得来终觉浅,绝知此事多宕机...记录一下自己很蠢的一次故障处理过程. 上周的时候,一个刚上线的系统又开始反映登不上了,因为最近这个系统也老是出现这个问题,开发也一直在找问题中,所以也没太在意.于是 ...

  5. 【Linux命令】ulimit设置最大文件打开数

    一.简介 在Linux下有时会遇到Socket/File : Can't open so many files的问题.其实Linux是有文件句柄限制的,而且Linux默认一般都是1024(阿里云主机默 ...

  6. ulimit 命令详解 socket查看linux最大文件打开数

    ulimit 命令详解     Linux对于每个用户,系统限制其最大进程数.为提高性能,可以根据设备资源情况,设置各linux 用户的最大进程数 可以用ulimit -a 来显示当前的各种用户进程限 ...

  7. [转帖]备忘:CentOS-7 使用systemctl 管理的服务,文件打开数上限1024要改

    备忘:CentOS-7 使用systemctl 管理的服务,文件打开数上限1024要改 https://blog.csdn.net/toontong/article/details/50440272 ...

  8. linux 最大文件打开数

    配置文件 vim /etc/security/limits.conf   # /etc/security/limits.conf##This file sets the resource limits ...

  9. linux最大文件打开数和swap限制

    linux最大文件打开数和swap限制   逑熙 关注 2017.07.24 15:39* 字数 388 阅读 314评论 0喜欢 0 linux 2.6+的核心会使用硬盘的一部分做为SWAP分区,用 ...

  10. Centos修改文件打开数限制

    一.查看系统限制最大打开数 cat /proc/sys/fs/file-max 还有一个问题是file-max最大能设置多大呢?一个经验算法是 256个fd 需4M内存.例如8G内存,8*1024/4 ...

随机推荐

  1. Grafana 系列-统一展示-1-开篇

    系列文章 Grafana 系列文章 Grafana 简介 Grafana 是 Grafana Labs 的第一款也是最重要的产品.它的定位是可视化, 用于监控展示 和 可观察性. 是当前最为完善.流行 ...

  2. 给你安利一款鲁班大叔开发的maven依赖搜索神器

    写在前面 一款好的插件往往能提高我们的开发效率.今天就给大家安利一款maven 依赖搜索插件. 插件是自己一直关注的鲁班大叔开发的,用了几天真的好用 废话不多说,我们就来看看这是一款什么插件 一.ma ...

  3. 报表如何集成 echarts 官网示例图

    Echarts,江湖人称一个纯 Javascript 的图表库,图形种类星罗棋布且个个颜值爆表,可以轻松驾驭 PC 和移动设备,与绝大部分浏览器都可称兄道弟,而且已然众多拥趸,还有不少报表对它采取了嫁 ...

  4. springboot 整合webservice 相关说明

    1.环境依赖 jdk8, springboot 2.3.12.release,cxf版本需要根据springboot版本修改,方法:查看springboot版本的发布日期,然后根据日期找相近的两个版本 ...

  5. shell脚本中的运算符和条件判断

    shell脚本中的运算符和条件判断: 一.算术运算符 在Shell脚本中,你可以使用各种运算符来执行数学运算.比较和逻辑操作. 计算方式: $[ ] $(( )) 例: a=$[(9+5)90] 打印 ...

  6. javascript:eval()的用法

    eval() 是 JavaScript 中的一个全局函数,它可以计算或执行参数.如果参数是表达式,则 eval() 计算表达式:如果参数是一个或多个 JavaScript 语句,则 eval() 执行 ...

  7. mock数据模拟和使用

    安装mock,和案axios npm i mockjs npm i axios 后再vue组件中使用 <script>import axios from 'axios'import Moc ...

  8. react中<link>和<navlink>区别

    两者都是实现路由的跳转.但 点击<Link>时,url会更新,组件会被重新渲染,但是页面不会重新加载...使用to链接组件时,它的值既可是字符串,也可以是location对象(包含path ...

  9. 【SQL】将日期时间转换成年月日的日期形式

    [SQL]将日期时间转换成年月日的日期形式 这段时间写力扣的SQL题,发现了各式各样的转换时间的方法,正好记录一下 TO_CHAR(XXX,'YYYY-MM-DD') 这个在Oracle应该是很常用的 ...

  10. 百万TPS高吞吐、秒级低延迟,阿里​搜索离线平台如何实现?

    导读:阿里主搜(淘宝天猫搜索)是搜索离线平台非常重要的一个业务,具有数据量大.一对多的表很多.源表的总数多和热点数据等特性.对于将主搜这种逻辑复杂的大数据量应用迁移到搜索离线平台总是不缺少性能的挑战, ...