我正在使用一个小型服务器nginx和一条蟒蛇烧瓶AWS 上的应用程序,以及uwsgi。服务器瘫痪已经发生过两次了错误 500,并且 nginx 没有日志。我不是专家,您能帮我找出为什么会发生以下情况吗?
看起来服务器“随机”(?) 因此错误而停止:(我在 nginx.conf 文件debug
中激活了error_log /pathtomylog/error.log debug
它以便能够看到它):
2015/12/02 22:05:12 [debug] 19006#0: *1 http upstream process header
2015/12/02 22:05:12 [debug] 19006#0: *1 malloc: 0000000001D24CE0:4096
2015/12/02 22:05:12 [debug] 19006#0: *1 recv: fd:11 104 of 4096
2015/12/02 22:05:12 [debug] 19006#0: *1 http uwsgi status 500 "500 Internal Serv
er Error"
2015/12/02 22:05:12 [debug] 19006#0: *1 http uwsgi header: "Connection: close"
2015/12/02 22:05:12 [debug] 19006#0: *1 http uwsgi header: "Content-Type: text/p
lain"
2015/12/02 22:05:12 [debug] 19006#0: *1 http uwsgi header done
2015/12/02 22:05:12 [debug] 19006#0: *1 xslt filter header
2015/12/02 22:05:12 [debug] 19006#0: *1 HTTP/1.1 500 Internal Server Error
我尝试杀死 uswgi 的所有工作进程。我尝试重新启动 nginx。RAM 内存看起来仍然正常,并且为了 ElasticSearch 而停用了交换(是的,我在 1GB RAM 上使用它,但对于我的索引的大小,它还没有抱怨)。
您还可以指出如何设置警报之类的参考吗?由于错误发生了两次,而没有修改 conf 文件,应用程序、静态文件都无法正常使用,API 终点却无法正常使用,我认为这与 uswgi 有关,但无法弄清楚。
我不是服务器配置方面的专家,这确实是一个充满技术细节的世界!请帮忙在丛林中分区 :)
答案1
[解决了]uswgi 无法解析 python 模块。
我做了以下操作并发现了错误,它可能对其他人的调试有用。
检查了 uswgi 的日志:如果没有,请在 .ini 文件中设置它,告诉 uwsgi 启动你的应用程序:
logto = /var/log/uwsgi/%n.log
(如果你是新手,请参考本教程:https://www.digitalocean.com/community/tutorials/how-to-serve-flask-applications-with-uwsgi-and-nginx-on-ubuntu-14-04)
然后在上述文件夹中找到您的日志文件,然后:
tail -f myapp.log
我发现找不到 python 应用程序。经过一番思考,我发现错误不是在标题中,而只是因为我将应用程序的备份模块命名为 [name.version.py] 符号(命名 Python 模块时不应该做的事情.. 哦,我做到了)。
因此不知道要启动哪个模块。
例如,将备份重命名为:mv oldname.version.py newname_version.py
并再次工作。
但是,由于我在应用程序正常运行时将备份文件上传到服务器,并且一直工作到两天前,我理解服务器关闭并重新启动,然后无法解决哪个模块:如何监控服务器重启?这是正常的吗?如您所理解,我想体面地配置,尽管服务器设置不是我的事,并且对评论更清楚地了解如何预防或处理错误 500(设置警报)非常感谢!