Bug 27334 - redis.service for redis
Summary: redis.service for redis
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: redis (show other bugs)
Version: unstable
Hardware: all Linux
: P3 normal
Assignee: Vitaly Lipatov
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks: 28008
  Show dependency tree
 
Reported: 2012-05-14 20:34 MSK by Igor Zubkov
Modified: 2013-04-29 22:27 MSK (History)
9 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Igor Zubkov 2012-05-14 20:34:53 MSK
Нужна нативная поддержка systemd в пакете redis.
Comment 1 Vitaly Kuznetsov 2012-05-15 16:06:33 MSK
Approve [#71552] EPERM redis.git=2.4.7-alt2 please
Comment 2 Igor Zubkov 2012-05-15 17:38:49 MSK
(В ответ на комментарий №1)
> Approve [#71552] EPERM redis.git=2.4.7-alt2 please

Done.
Comment 3 Repository Robot 2012-05-15 18:03:58 MSK
redis-2.4.7-alt2 -> sisyphus:

* Tue May 15 2012 Vitaly Kuznetsov <vitty@altlinux> 2.4.7-alt2
- add systemd unit file (ALT #27334)
Comment 4 Nikolay A. Fetisov 2012-06-15 15:36:19 MSK
Текущий вариант redis.service - существенно хуже, чем его отсутствие и использование init-скрипта в режиме совместимости.


systemd для остановки процесса посылает SIGTERM, и, если процесс через TimeoutSec=90 секунд не завершился, посылает SIGKILL.

redis при получении SIGTERM сохраняет базу на диск, далее останавливается. Если базу сохранить не удалось - он отказывается останавливаться и продолжает работать. Для больших баз, сохранение на диск может занять достаточно длительное время. Кроме того, вопрос о необходимости сохранения данных зависит от решаемых задач.

init-скрипт сейчас поддерживает три варианта остановки сервиса - см. описание в redis.sysconfig.

Предложенный redis.service, фактически, реализует только один из них, и с существенно уменьшенным timeout'ом на сохранение базы. Итого, при переходе на
systemd сейчас возможна потеря данных в базе Redis.
Comment 5 Dmitriy Kulik 2013-02-28 17:35:27 MSK
1) SIGKILL - прибить не сохраняя. Настраивается конфигом.
2) SIGTERM (default, systemd)
3) SHUTDOWN - почти тот же SIGTERM, не гарантирован при изменении конфигурации

остается вариант 2.

TimeoutStopSec=300
SendSIGKILL=no # Вдруг что - смотрим сами...

А также:
старайтесь следовать правилу: unit поставляемый из "коробки" обеспечивает дефолтный запуск сервиса, все отличные варианты запуска обеспечиваются самим пользователем, перенеся unit в /etc/systemd/system и изменив по желанию. Соответственно не надо в дефолтном юните обеспечивать все возможные варианты запуска
Comment 6 Dmitriy Kulik 2013-04-29 22:27:47 MSK
Ну если возражений нету...