У моего приложения проблемы с остановкой memcached.
Я использую php, и срок действия определенных ключей истекает через каждый час. Однако эти ключи и значения больше не обновляются.
Когда я бегу:
/etc/init.d/memcached restart
Получаю следующее:
Stopping memcached: [FAILED]
Starting memcached: [ OK ]
Я должен запустить killall memcached
для остановки memcached. Затем я запускаю перезапуск, и все в порядке.
Я не совсем уверен, что вызывает это, но мне нужно, чтобы memcached перезапускался каждый час. Где мне искать, чтобы узнать, что вызывает это?
Честно говоря, я бы предположил, что что-то вызывает сбой memcached. И если memcached не запускается, когда вы пытаетесь его остановить, он потерпит неудачу (потому что он уже остановлен). Так это объяснило бы, почему /etc/init.d/memcached stop
(или первая часть /etc/init.d/memcached restart
) терпит неудачу.
Но потом вы говорите, что вам нужно бежать killall memcached
чтобы заставить его остановиться. Это наводит на мысль о том, что ваша система инициализации теряет отслеживание процесса. Поскольку я не знаю, какую систему инициализации вы используете, трудно сказать наверняка.
Большинство дистрибутивов в наши дни используют SystemD, и у меня были некоторые проблемы с Debian из-за проблем, вызванных обратной совместимостью со старыми скриптами SysVinit.
Глядя на команды, которые вы используете для управления своей службой, вы напрямую вызываете сценарий SysVinit, поэтому я предполагаю, что либо вы используете SysVinit, либо SystemD с совместимостью с SysVinit.
Если у вас нет SystemD, то почти наверняка что-то не так с вашей конфигурацией initscript и / или memcached.
Если у вас есть SystemD, то это, вероятно, вызвано некоторыми проблемами связи между вашим initscript и SystemD (и все еще могут быть проблемы с конфигурацией memcached). IMO, лучший путь вперед - это написать правильный служебный файл SystemD и напрямую использовать команды SystemD; т.е. systemctl COMMAND SERVICE_NAME.service
. Их очень легко написать, Google поможет вам (попробуйте что-нибудь вроде «как написать файл службы systemd»)
Для меня это было потому, что я изначально бегал memcached -d
вручную.
Позже, когда я пытался бежать service memcached restart/stop
, команда остановки завершится ошибкой. После убийства процесса вручную service memcached restart/stop
работал как положено.