nGinx 不断关闭

nGinx 不断关闭

nginx 进程不断自行关闭,错误如下

2023/04/18 11:47:29 [alert] 11073#0: worker process 11312 exited on signal 9
2023/04/18 11:47:29 [alert] 11073#0: fork() failed while spawning "worker process" (12: Cannot allocate memory)
2023/04/18 11:47:29 [alert] 11073#0: could not respawn worker process

我知道它有足够的内存,它是我控制的 VPS,我已将其内存提升至 4GB,但情况仍然相同。它是一款非常轻量级的 nginx 服务器,没有 PHP,提供简单的图像服务。运行 nginx 1.0.15,我知道它很旧,但它运行了很多年都没有问题。多年来,这台 VPS 没有任何变化。

答案1

fork() failed while spawning "worker process" (12: Cannot allocate memory) 是线索。

如果你观察一下,man 2 fork你就会发现是什么条件导致了这一结果。

ENOMEM fork()由于内存紧张,无法分配必要的内核结构。

ENOMEM尝试在“init”进程已终止的 PID 命名空间中创建子进程。请参阅 pid_namespaces(7)。

应该是这两种情况之一。整个 VPS 是否在同一时间重新启动?如果是,这就是你的答案。

ps -o lstart 1如果您无法通过在容器中执行并检查init进程的启动时间来判断,则可以进行测试。

否则,如果在显示“内存紧张”时您仍收到此信息,则可能是因为整个系统内存紧张。您可能无法在容器中了解这些信息,因此您需要向托管提供商请求更多信息。

答案2

根据您提供的错误消息,似乎工作进程由于 而退出signal 9,这表示SIGKILL信号。此外,错误消息表明fork() system call is failing,这意味着该进程无法创建新的子进程。

错误消息“无法分配内存”表明系统可能内存不足,这可能导致 fork() 系统调用失败。解决此问题的一个可能方法是增加系统可用的内存量。

您可以尝试使用“free -tm”命令检查服务器上的可用内存,该命令将显示有关可用内存和交换空间的信息。如果系统内存不足,您可能需要向服务器添加更多内存或调整 nginx 配置以使用更少的内存。

另一个可能的解决方案是减少 nginx 配置中的工作进程数量。您可以通过调整 nginx.conf 文件中的“worker_processes”设置来实现此目的。通过减少工作进程的数量,您可以减少 nginx 服务器的内存使用量。

答案3

添加交换。另外,确保不存在任何凭证/权限问题。

此外,参考问题是某些应用程序可以使用的 RAM 受到限制。这些工作人员做什么?这可能是您的答案。

另外,你有没有尝试过更新一切?

相关内容