跳到主要内容

supervisor管理redis

supervisor配置文件 /etc/supervisor/supervisord.conf 中定义了include,因此如果想要管理服务,就需要编辑 /etc/supervisor/config.d/*.ini 文件

[include] 
files = /etc/supervisor/config.d/*.ini

supervisor管理redis有一个很奇怪的问题

说明
redis配置文件中如果配置了 daemonize yes 用supervisor管理的时候是会报错如下 redis FATAL Exited too quickly (process log may have details) ,虽然有报错但是redis进程却是正常运行的,进程在端口也能启动!!!如果把 daemonize 改成 no 则没有问题,但是这样就不能把redis以守护进程的方式运行了

daemonize 设置 yes 或者 no 区别

  • yes

    • redis采用的是单进程多线程的模式。当 redis.conf 中选项 daemonize 设置成yes时,代表开启守护进程模式。在该模式下,redis会在后台运行,并将进程pid号写入至redis.conf 选项 pidfile 设置的文件中,此时redis将一直运行,除非手动kill该进程。
  • no

    • daemonize 选项设置成no时,当前界面将进入redis的命令行界面,exit强制退出或者关闭连接工具(putty,xshell等)都会导致redis进程退出。

编辑redis服务配置文件 /etc/supervisor/config.d/redis.ini

[program:redis]
command=/usr/local/redis-5.0.7/src/redis-server /etc/redis/6379/redis.conf
directory=/usr/local/redis-5.0.7/src
autostart=true
stdout_logfile=/var/log/supervisor/redis.log

将redis加入supervisor

$ supervisorctl update redis
redis: added process group

查看状态

$ supervisorctl status redis
redis RUNNING pid 15430, uptime 0:00:06
Right Bottom Gif
Right Top GIF