我使用nginx作为前端服务器,使用uwsgi作为python应用程序。每天大约一次我的一个应用程序开始下降。在日志中我可以看到不同的mysql错误。例如:
sqlalchemy.exc.OperationalError: (OperationalError) (2006, 'MySQL server has gone away')
或
sqlalchemy.exc.OperationalError: (OperationalError) (2002, "Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)") None None
还有一些关于can't locate row column for column ...
的内容。也许更有趣:
--- no python application found, check your startup logs for errors ---
有什么帮助 - 我正在杀死我的uwsgi进程并再次运行它。有趣的是其他应用程序(他们也使用mysql)可以继续工作。
如果我只是杀死叉子没有任何反应。我必须杀死主进程。
我的uwsgi配置是:
module = stulyev
callable = app
pp = /home/krasulya/apps/stulyev.net
logto = /var/log/stulyev.net.log
touch-reload = /tmp/stulyev.net.sock
socket = /tmp/stulyev.net.sock
uid = krasulya
gid = www-data
daemonize = /var/log/stulyev.net.daemon.log
reload-on-exception = true
harakiri = 30
max-requests = 10000
harakiri-verbose = 1
buffer-size = 65535
我该怎么办?感谢。
答案 0 :(得分:5)
不要在主服务器中打开数据库连接。并非所有sqlalchemy适配器都支持它。每个工作人员打开一次连接,或者在uWSGI中添加lazy-apps = true,以便在每个分支上加载整个应用程序:http://uwsgi-docs.readthedocs.org/en/latest/ThingsToKnow.html