迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 网络 >

Nginx 如何修复 Reponse Status 0 Worker Process Exited on Signal 11

作者:迹忆客 最近更新:2022/05/14 浏览次数:

实际上,让我们首先澄清一下:HTTP 没有状态码 0(零)。 问题是 nginx 工作进程在处理请求时死亡,因此连接中断,导致没有任何响应数据的错误。

问题

我们在各种情况下都遇到了这个问题:

  • Github Webhooks :webhook 请求未成功完成,响应码始终为 0
  • Piwik :我们无法在 Safari 浏览器中打开 Piwik 网络控制面板,也无法在 Android 上添加连接详细信息。 两种情况下的请求都会导致状态为 0 的错误响应(Reponse Status 0)

由于我们在 Strider 和 Piwik 日志中找不到任何应用程序错误,因此问题应该是出在下面的层:nginx。

我们检查了 nginx 的错误日志文件,终于找到了线索。

这是 Ubuntu 上默认的 nginx 错误日志文件位置:/var/log/nginx/error.log

错误日志文件数据:

2022/05/10 09:37:34 [alert] 7955#0: worker process 9835 exited on signal 11 (core dumped)  
2022/05/10 09:37:36 [alert] 7955#0: worker process 9853 exited on signal 11 (core dumped)  
2022/05/10 09:37:36 [alert] 7955#0: worker process 9855 exited on signal 11 (core dumped)  
2022/05/106 09:42:34 [alert] 7955#0: worker process 9857 exited on signal 11 (core dumped)  

如果大家有兴趣,我们使用 nginx 版本 1.8.0


解决方法

要解决此问题,需要修改 nginx 的配置,在 http 块中添加以下行。

Ubuntu上 nginx 的配置文件默认位置是 /etc/nginx/nginx.conf

http {  
    …
    ssl_session_cache    shared:SSL:10m;
    …
}

Nginx 使用多个工作进程来处理接收到的请求。 ssl_session_cache shared:SSL:10m 使 nginx 在所有工作进程之间共享会话信息。 从现在开始,每个工作进程都有可用的会话信息,并且不会因为缺少请求数据而停止执行请求。

不要忘记重启 nginx 服务。

$ sudo service nginx restart  

就是这样。 我们的请求将通过 nginx 流向应用程序,反之亦然,不会出现问题!

除非注明转载,本站文章均为原创或翻译,欢迎转载,转载请以链接形式注明出处

本文地址:

迹忆客

专注技术分享,项目实战分享!

技术宅 乐于分享 7年编程经验
社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

热门文章

教程更新

热门标签

扫码一下
查看教程更方便