O servidor trava na reinicialização quando o clam está em execução

0

Em poucas palavras

A reinicialização normalmente leva menos de um minuto, mas se clamav-daemon estiver em execução, a reinicialização levará exatamente 30 minutos.

Visão geral

Eu tenho um servidor de e-mail "nuvem" do Ubuntu 15.10: postfix, dovecot, mysql, acessado via SSH. Isso vem funcionando há semanas e é reinicializado em menos de um minuto. Tudo estava bem, até que eu instalei Amavis , através dos pacotes apt-get install do Ubuntu - agora um reboot leva exatamente 30 minutos, tempo.

Ao correr, tudo funciona. Eu verifiquei logs e não há problemas gritantes. Clamav está funcionando, e-mail envia & recebe e o uso da CPU flutua entre 0% e 0,5%.

Minha teoria

Eu reduzi o problema ao clamav-daemon pelo processo de eliminação. A única nova instalação foi o Amavis, que adicionou novos daemons. Se eu pará-los todos ( amavis , clamav-daemon e clamav-freshclam ), a reinicialização será instantânea. Se eu parar apenas de clamav-daemon , a reinicialização será instantânea. Mas se eu continuar funcionando e parar todos os outros, reinicie 30 minutos novamente.

Isso é totalmente repetível, e a espera é sempre exatamente de 30 minutos. Isso me faz pensar que o Clamav está aguardando a entrada do usuário, com um tempo limite de 30 minutos.

Eu posso ver os processos para o Clamav sendo executados com " --foreground=true ". Isso me faz pensar que o Amavis intencionalmente faz isso para capturar a saída, mas não está esperando um prompt durante a reinicialização.

De htop:

Meuslogs

Observação:/etc/init.d/sendsigstemreport_unkillableativadoparacapturarprocessosinutilizáveise/etc/default/apportestáativado.Osregistrosem/var/crashnãotêmnadarecente.

(Reiniciadoporvoltade14:51,eoservidornãoestavaprontoparaSSHaté15:23-30minutosdepois,semerrosentreeles).

/var/log/clamav/clamav.log

...14:52:452016->---StoppedatFri14:52:45201615:23:042016->+++StartedatFri15:23:04201615:23:042016->Received1filedescriptor(s)fromsystemd.15:23:042016->clamddaemon0.98.7(OS:linux-gnu,ARCH:x86_64,CPU:x86_64)15:23:042016->Runningasuserclamav(UID119,GID127)...

/var/log/mail.log

...14:51:15mailamavis[1578]:UsingprimaryinternalavscannercodeforClamAV-clamd14:51:15mailamavis[1578]:FoundsecondaryavscannerClamAV-clamscanat/usr/bin/clamscan14:51:15mailamavis[1578]:Deletingdbfiles__db.001,nanny.db,__db.003,snmp.db,__db.002in/var/lib/amavis/db14:51:15mailamavis[1578]:Creatingdbin/var/lib/amavis/db/;BerkeleyDB0.55,libdb5.315:23:05mailpostgrey[820]:ProcessBackgrounded15:23:05mailpostgrey[820]:2016/02/12-15:23:05postgrey(typeNet::Server::Multiplex)starting!pid(820)15:23:05mailpostgrey[820]:Resolved[localhost]:10023to[::1]:10023,IPv615:23:05mailpostgrey[820]:Resolved[localhost]:10023to[127.0.0.1]:10023,IPv4...

/var/log/syslog

...14:52:18mailsystemd[1]:StoppingClamAVvirusdatabaseupdater...14:52:18mailfreshclam[760]:Updateprocessterminated14:52:18mailsystemd[1]:StoppedClamAVvirusdatabaseupdater.14:52:42mailsystemd[1]:StoppedSetupVirtualConsole.14:52:42mailsystemd[1]:StoppingLVM2PVscanondevice202:2...14:52:42mailsystemd[1]:Deactivatingswap/dev/disk/by-uuid/758b48d5-df40-4ca8-af0d-a482044d21dd...14:52:42mailsystemd[1]:StoppingAuthenticateandAuthorizeUserstoRunPrivilegedTasks...14:52:42mailsystemd[1]:StoppingUserManagerforUID1000...14:52:42mailsystemd[1907]:ReachedtargetShutdown.14:52:42mailswapoff[2140]:swapoff:/dev/mapper/ubuntu-swap:swapofffailed:Cannotallocatememory14:52:42mailsystemd[1907]:StartingExittheSession...14:52:42mailsystemd[1907]:StoppedtargetDefault.14:52:42mailsystemd[1]:StoppingSession1ofusergavannon.14:52:42mailsystemd[1907]:StoppedtargetBasicSystem.14:52:42mailsystemd[1907]:StoppedtargetSockets.14:52:42mailsystemd[1]:StoppedtargetGraphicalInterface.14:52:42mailsystemd[1907]:StoppedtargetPaths.14:52:42mailsystemd[1907]:StoppedtargetTimers.14:52:42mailsystemd[1]:Removedslicesystem-ifup.slice.14:52:42mailsystemd[1]:Removedslicesystem-systemd\x2dfsck.slice.14:52:42mailsystemd[1]:StoppedtargetTimers.14:52:42mailsystemd[1]:StoppingAccountsService...14:52:42mailsystemd[1]:StoppedtargetMulti-UserSystem.14:52:42mailsystemd[1]:StoppedSetCloudPassword.14:52:42mailsystemd[1]:StoppingLSB:RecordsuccessfulbootforGRUB...14:52:42mailsystemd[1]:StoppingLSB:Startsamavisd-newmailfilter...14:52:42mailsystemd[1]:StoppingOpenBSDSecureShellserver...14:52:42mailsystemd[1]:StoppedtargetLoginPrompts.14:52:42mailsystemd[1]:StoppingGettyontty1...14:52:42mailsystemd[1]:StoppingLSB:XenServerVirtualMachinedaemonprovidinghostintegrationservices...14:52:42mailrsyslogd:[originsoftware="rsyslogd" swVersion="8.12.0" x-pid="729" x-info="http://www.rsyslog.com"] exiting on signal 15.

(Something must be happening here, because the next line isn't for 30 minutes)

15:23:04 mail rsyslogd: [origin software="rsyslogd" swVersion="8.12.0" x-pid="770" x-info="http://www.rsyslog.com"] start
15:23:04 mail rsyslogd-2222: command 'KLogPermitNonKernelFacility' is currently not permitted - did you already set it via a RainerScript command (v6+ $
15:23:04 mail rsyslogd: rsyslogd's groupid changed to 109

A última coisa que acontece às 14:52 é o logging ser desligado ( rsyslogd says exiting ). A próxima linha é o log inicial novamente na inicialização, mas isso é 30 minutos depois!

    
por gavanon 12.02.2016 / 20:50

1 resposta

0

Eu tenho um problema semelhante em um servidor do CentOS 7 (também demora ~ 30 minutos para reiniciar) e o que meus logs têm em comum com o seu problema é a entrada swapoff failed: Cannot allocate memory . Aparentemente, o espaço de troca é desativado em um ponto durante a seqüência de desligamento quando não há RAM livre suficiente para carregar os dados restantes do espaço de troca de volta para a RAM. Executar menos serviços (ou seja, não executar clamav-daemon ) provavelmente evita essa situação, e é por isso que você não vê o problema.

O

link explica porque o espaço de troca está desativado durante o desligamento. A solução é provavelmente certificar-se de que as coisas que levam mais memória tenham parado antes que o espaço de troca seja desativado durante o desligamento. Isso provavelmente pode ser resolvido especificando dependências em unidades systemd, mas ainda não descobri isso.

Outra solução seria, claro, adicionar mais RAM, de modo que a troca não seja muito usada. :)

    
por Nils Breunese 21.02.2016 / 18:19