[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