Служба Redis зависает с systemctl и Type = notify

Я следил за этим ответом: https://serverfault.com/a/893075/210494 . У меня CentOS 7.8.

redis.service

[Service]
Type=notify
ExecStart=/opt/redis/bin/redis-server /opt/redis/conf/redis-master.conf
TimeoutStartSec=60
TimeoutStopSec=60
TimeOutSec=90
RestartSec=5s
Restart=on-success

redis-master.conf

daemonize no
supervised systemd

Когда я запускаю эту службу, запускается процесс Redis, но systemctl зависает, и мне приходится нажимать Ctrl-C чтобы вернуться в оболочку.

Это в журналах:

69486:C 28 Aug 2020 17:31:14.545 # Redis version=6.0.6, bits=64, commit=00000000, modified=0, pid=69486, just started
69486:C 28 Aug 2020 17:31:14.545 # Configuration loaded
69486:C 28 Aug 2020 17:31:14.545 # WARNING supervised by systemd - you MUST set appropriate values for TimeoutStartSec and TimeoutStopSec in your service unit.
69486:M 28 Aug 2020 17:31:14.546 * Increased maximum number of open files to 4096 (it was originally set to 1024).
69486:M 28 Aug 2020 17:31:14.547 * Running mode=standalone, port=6380.
69486:M 28 Aug 2020 17:31:14.547 # Server initialized

Если я закомментирую Type = notify , то systemctl завершится немедленно, но это будет в журналах.

68629:C 28 Aug 2020 17:29:58.933 # Redis version=6.0.6, bits=64, commit=00000000, modified=0, pid=68629, just started
68629:C 28 Aug 2020 17:29:58.933 # Configuration loaded
68629:C 28 Aug 2020 17:29:58.933 # WARNING supervised by systemd - you MUST set appropriate values for TimeoutStartSec and TimeoutStopSec in your service unit.
68629:C 28 Aug 2020 17:29:58.933 # systemd supervision requested, but NOTIFY_SOCKET not found
68629:M 28 Aug 2020 17:29:58.933 * Increased maximum number of open files to 4096 (it was originally set to 1024).
68629:M 28 Aug 2020 17:29:58.934 * Running mode=standalone, port=6380.
68629:M 28 Aug 2020 17:29:58.934 # Server initialized

В чем проблема ? Я нашел учебник DigitalOcean, в котором нет Type = notify , и обнаружил проблемы с Redis, когда они успешно рекомендовали Type = notify .

Обновление

Job for redis.service failed because a timeout was exceeded. See "systemctl status redis.service" and "journalctl -xe" for details.
[root@DB dev]# systemctl status redis
● redis.service - Redis
   Loaded: loaded (/etc/systemd/system/redis.service; enabled; vendor preset: disabled)
   Active: failed (Result: timeout) since Sun 2020-08-30 12:06:58 CEST; 46min ago
  Process: 11134 ExecStart=/opt/app/redis/default/bin/redis-server /opt/app/redis/default/conf/redis-master.conf (code=exited, status=0/SUCCESS)
 Main PID: 11134 (code=exited, status=0/SUCCESS)
Aug 30 12:05:57 DB systemd[1]: Starting Redis...
Aug 30 12:06:58 DB systemd[1]: redis.service start operation timed out. Terminating.
Aug 30 12:06:58 DB systemd[1]: Failed to start Redis.
Aug 30 12:06:58 DB systemd[1]: Unit redis.service entered failed state.
Aug 30 12:06:58 DB systemd[1]: redis.service failed.
2
задан 30 August 2020 в 14:01
1 ответ

Хорошо, проблема была в том, что поддержка systemd не скомпилирована по умолчанию. Вам нужно скомпилировать его явно. Я напишу PR для обновления README.md в источниках, потому что это не объяснено.

Этот коммит отвечает за такое поведение. Я нашел это в этом выпуске: https://github.com/redis/redis/issues/7217

yum install systemd-devel
make BUILD_WITH_SYSTEMD=yes USE_SYSTEMD=yes
9
ответ дан 31 August 2020 в 09:26

Теги

Похожие вопросы