[sisyphus] samba: уменьшение сна на 2 часа , появление морщин , истребление кофе
Alexander Bokovoy
=?iso-8859-1?q?ab_=CE=C1_altlinux=2Eorg?=
Вт Дек 25 13:19:38 MSK 2007
Gennady Kovalev пишет:
> По сути.
>
> Баг проявляется периодически, не ритмично на серверах с разным
> железом, разной нагрузкой, разной производительностью.
>
> Есть сети, где самба не стартует примерно раз в неделю, в разные дни.
>
>
> Падает все это из-за logrotate в 4 часа утра:
>
> 12:49:26 root на rat /etc/logrotate.d
>> grep -A 1 postrotate /etc/logrotate.d/samba
> postrotate /sbin/service smb condrestart > /dev/null 2>&1
>
> 12:51:08 root на rat /etc/logrotate.d
>> grep -A 3 condrestart\) /etc/init.d/smb
> condrestart) if [ -e "$LOCKFILE" ]; then restart fi
>
> Собственно самба рестартует достаточно жестким методом в 4 утра. Надо
> заметить, что если руками запускать service smb restart, то
> срабатывает оно не всегда. Иногда, судя по всему, не успевают
> сдохнуть старые процессы, и самба не старнует.
Скорее всего. Sleep с конкретным указанием времени тут не спасет, потому
что всегда может быть система с нагрузкой, приводящей к более длительным
задержкам. Надо посмотреть внутренности. В Debian спят секунду между
действиями, но я не думаю, что это хороший вариант.
> Получается две разные проблемы:
>
> 1. Действительно ли для logrotate надо так жестко рестартовать? Вроде
> бы многие по -HUP умеют закрывать-открывать файлы, перечитывать
> конфиги. Для этого не обязательно дропать открытые файлы и т.д.
В RHEL делают следующее:
/var/log/samba/*.log /var/log/samba/log.smbd /var/log/samba/log.nmbd {
notifempty
missingok
sharedscripts
copytruncate
postrotate
/bin/kill -HUP `cat /var/run/smbd.pid /var/run/nmbd.pid \
/var/run/winbindd.pid 2> /dev/null` 2> /dev/null || true
endscript
}
Думаю, что и нам надо также поступить.
>
> 2. Может все-таки модифицировать initscript? Что-нибудь типа
> wait_for_pid_shutdown_15_seconds_then_kill_it(), или
> wait_for_lockfile_to_be_removed_15_seconds_then start() ?
>
Я подумаю. Вообще, надо скорее всего написать скрипт, который будет по
набору pid-файлов следить за наличием процессов и ждать, пока они все
помрут либо pid-файлы исчезнут. Там есть несколько потенциальных
проблем, но в целом задача решаемая.
--
/ Alexander Bokovoy
Samba Team http://www.samba.org/
ALT Linux Team http://www.altlinux.org/
Midgard Project Ry http://www.midgard-project.org/
Подробная информация о списке рассылки Sisyphus