Supervisor 同时管理 Django(Gunicorn), Celery, Redis 时,导致 Mysql 问题

2019-07-26 22:20:17 +08:00
 AllenBigBear

自己用 Django 做了个小站,在 Debian 上面部署 Django:2.2 Python:3.5

部署完以后想用 supervisor 来管理 Django (通过 Gunicorn ),celery 和 redis 单独管理 Django 的时候,一切问题没有。

然后在 supervisor 的配置文件里面加入了 celery 和 redis 的管理 program,如下方的配置。 但是运行 supervisorctl start all 之后,网站就再也跑步起来了,而且最奇怪的是,原因是 MYSQL 无法连接本地服务器 报警为: (2003, "Can't connect to MySQL server on '127.0.0.1' ([Errno 111] Connection refused)")

百思不得其解,网上搜了几天了,没解决,请问大侠们有没有能帮忙的。。谢谢 PS:目前已经测试过:supervisor 中去掉 redis 的 program 去掉,留下 gunicorn 和 celery 的,也不行。

[program:celery] directory = /home/allen/NBAsite/NBAsite command = /home/allen/NBAsite/env/bin/celery -A NBAsite worker -B -l info autostart = true startsecs = 5 autorestart = true startretries = 3 user = allen redirect_stderr = true stdout_logfile_maxbytes = 20MB stdout_logfile_backups = 20 stdout_logfile = /home/allen/NBAsite/celery_log/allenbigbear_celery.log

[program:redis] directory = /usr/bin command = /usr/bin/redis-server autostart = true startsecs = 5 autorestart = true startretries = 3 user = root redirect_stderr = true stdout_logfile_maxbytes = 20MB stdout_logfile_backups = 20 stdout_logfile = /home/allen/NBAsite/redis_log/allenbigbear_redis.log

[program:NBAsite] directory = /home/allen/NBAsite/NBAsite command = /home/allen/NBAsite/env/bin/gunicorn NBAsite.wsgi:application -b 0.0.0.0:8000 autostart = true startsecs = 5 autorestart = true startretries = 3 user = allen redirect_stderr = true stdout_logfile_maxbytes = 20MB stdout_logfile_backups = 20 stdout_logfile = /home/allen/NBAsite/supervisor_log/allenbigbear.log

1851 次点击
所在节点    程序员
14 条回复
SmiteChow
2019-07-27 18:17:44 +08:00
不建议使用 supervisor 你可以自己写 shell 脚本监控 或者 crontab 都行
julyclyde
2019-07-27 19:40:24 +08:00
@SmiteChow 你这种回答根本毫无信息量
julyclyde
2019-07-27 19:41:51 +08:00
你这根本就是 mysql 服务没启动,但是你自己强行联想到和 supervisor 有关
时间上的相关关系 不等于因果关系!!
wzwwzw
2019-07-28 01:13:43 +08:00
这个是 mysql 服务没有启动起来吧。
cz5424
2019-07-28 10:40:21 +08:00
专注 MySQL 为啥没起来,跟 supervisor 没啥关系
AllenBigBear
2019-07-29 08:56:01 +08:00
@julyclyde 嗯,我双休日都在搞这个问题,我觉得不是 MYSQL 没有起来,因为打个比方,我单独运行 GUNICORN,MYSQL 数据返回没问题的。
如果我再运行 CELERY 命令,马上就出现问题了

导致问题的原因是,在 /var/run/下面,原本有 mysqld 的文件夹,里面是放着 sock 文件
但是一旦我运行了 celery 以后,这个 mysqld 文件夹马上消失了,只有重启我的 VPS 以后才能出现。
AllenBigBear
2019-07-29 08:56:52 +08:00
@wzwwzw 我觉得 MYSQL 是起来了。。因为我单独运行 GUNICORN,网站是起得来的,MYSQL 返回数据也都正常。如上一层我的描述
AllenBigBear
2019-07-29 08:57:17 +08:00
@cz5424 但是问题是我单独运行 GUNICORN 是可以的。。。请见 6 楼描述。。。
julyclyde
2019-07-30 13:07:39 +08:00
@AllenBigBear 这一定是幻觉!
AllenBigBear
2019-08-07 13:38:56 +08:00
@julyclyde 总算找到问题了。。。。MySQL 占用内存太高了。。。我把 performance_schema=OFF 设置成关闭了,MYSQL 占用内存马上下来了,才 100 多 MB,另外还把 innoDB_pool_size 的数值也改小了,现在流畅了。。。。
julyclyde
2019-08-07 15:57:22 +08:00
@AllenBigBear 那你看看系统日志,可能有 oom killer 的记录
AllenBigBear
2019-08-07 20:50:28 +08:00
@julyclyde 好的,请教一下,我用的是 debian,这个系统日志可以在哪里看?
julyclyde
2019-08-08 18:31:50 +08:00
@AllenBigBear /var/log/syslog 吧
AllenBigBear
2019-08-08 21:05:07 +08:00
@julyclyde 好的,谢谢

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/586585

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX