Я давно скрывался на сайте, но это мой первый вопрос. Пожалуйста, дайте мне знать, если есть какие-либо проблемы с моим сообщением.
Два сервера в нашей серверной ферме Ubuntu (25+ машин) требуют много времени (10+ минут) для перезапуска службы syslog-ng. На всех машинах установлена одинаковая версия syslog-ng (3.5.3). После выполнения strace в сервисе следующий системный вызов зависает (строки до и после добавлены для контекста):
опрос ([{fd = 4, events = POLLIN}, {fd = 3, events = POLLIN}], 2, 4294967295) = 1 ([{fd = 3, revents = POLLIN | POLLHUP}]) <0.000248>
recvfrom (3, "", 8, MSG_WAITALL, NULL, NULL) = 0 <0,000005>
опрос ([{fd = 4, events = POLLIN}], 1, 4294967295 * Запуск системного журнала syslog-ng [OK]) =? ERESTART_RESTARTBLOCK (прервано сигналом) <841.792219>
--- SIGCHLD {si_signo = SIGCHLD, si_code = CLD_EXITED, si_pid = 24591, si_status = 0, si_utime = 0, si_stime = 0} --- write (5, "\ 21", 1) = 1 <0.000008>
rt_sigreturn () = -1 EINTR (прерванный системный вызов) <0,000005>
опрос ([{fd = 4, events = POLLIN}], 1, 4294967295) = 1 ([{fd = 4, revents = POLLIN}]) <0,000008>
Это результат простого "sudo service syslog-ng restart", никаких других флагов или параметров. Не уверен, какой сигнал прерывает опрос (). Все остальные машины перезапускают службу в считанные секунды.
Я не могу понять, проблема ли это в syslog-ng или в конфигурации этих машин. Обычный гугл-фу ни к чему не привел. Может ли кто-нибудь пролить свет на то, как устранить эту проблему?
Заранее спасибо!
К сожалению, я не могу помочь в отслеживании вашей исходной проблемы (может быть, проблема с AppArmor? Неясное предположение ...). Но я столкнулся с другой, но связанной проблемой с Syslog-ng в прошлом - он случайно вылетал ночью по очень трудно исправить.
Первоначально пакет Ubuntu содержал классический, SysV-type сценарий инициализации, который не может перезапустить аварийные службы. Я написал и успешно использую родная работа Upstart для этого. Поскольку это полностью меняет способ запуска демона, скорее всего, это решит вашу проблему с добавлением бонуса автозапуска при сбое.
Если вы хотите использовать это, полностью остановите службу (убедитесь, что не работает отдельно и использовать kill -s TERM ...
если это так), сохраните файл проекта в /etc/init/syslog-ng.conf, делать /etc/init.d/syslog-ng символическая ссылка на / lib / init / выскочка-задание. затем sudo initctl reload-configuration
, и наконец service syslog-ng start
.
Я считаю, что только нехватка "рабочей силы" помешала Ubuntu включить надлежащую работу Upstart практически для любой службы.