Múltiplas falhas de segmentação no host Linux

3

Eu tenho um antigo servidor de correio do Slackware 9.0 em uma VM no Linode.com. Ele tem cerca de 130 GB de correio hospedado nele, no formato Maildir, em sistemas de arquivos Ext3 separados e particionados (o maior deles é 92 GB). Eu estou no processo de planejar uma atualização de servidor (instalação completamente nova com o Slackware mais recente) dentro de 2 semanas, mais ou menos, mas não é trivial, portanto, desejando resolver o problema atual antes que a situação se agrave.

Nos últimos meses vários utilitários começaram a segmentar e alguns processos foram esporadicamente desligados. Os principais aplicativos em execução no servidor são qpsmtpd, qmail, Dovecot, ClamAV e bogofilter, e o servidor normalmente tem uma carga de sistema muito baixa, embora cerca de 300 usuários IMAP ativos com aproximadamente 1 e-mail por segundo entrando ou saindo do sistema.

A VM foi transferida para um Linode de 8GB há cerca de 3 semanas e o problema parece ter piorado. Eu tenho um palpite de que o problema está relacionado à execução de um sistema operacional de 32 bits com mais memória do que o sistema operacional pode usar. Tenho experiência limitada com o kernel e como ele lida com a memória.

ClamAV reinicia 2-3 vezes por dia e qpsmptpd (escrito em Perl, mas pré-procurado) a cada poucas horas.

Além disso, execute 'ls' em Maildirs com um grande número de segfaults de mensagens (arquivos), com um exemplo de log strace encontrado aqui:

link

Mais informações:

kernel do Linux = 3.9.3-x86

Memória = 8 GB

$ free

total used free shared buffers cached
Mem: 8286016 3672400 4613616 0 266632 2442144
-/+ buffers/cache: 963624 7322392
Swap: 1048572 0 1048572

Eu agradeceria muito alguns indicadores e fornecerá mais detalhes para um diagnóstico.

    
por zoot 10.07.2013 / 10:19

1 resposta

0

Aqui é onde parou:

mremap(0xb7504000, 3075489792, 745472, MREMAP_MAYMOVE) = -1 EINVAL (Invalid argument)

Vamos ver como o mremap funciona:

mremap(old_address, old_size, new_size, int flags);

E a descrição do erro EINVAL:

EINVAL An invalid argument was given.  Possible causes are:
              old_address was not page aligned; a value other than
              MREMAP_MAYMOVE or MREMAP_FIXED was specified in flags;
              new_size was zero; new_size or new_address was invalid; or the
              new address range specified by new_address and new_size
              overlapped the old address range specified by old_address and
              old_size; or MREMAP_FIXED was specified without also
              specifying MREMAP_MAYMOVE.

Parece um bug SW. A solução alternativa é usar o SO de 64 bits para expandir o endereçamento da memória virtual.

Qual versão do clamav você usa?

    
por 10.07.2013 / 11:07