Многочисленные ошибки сегментации на хосте Linux

У меня есть старый почтовый сервер Slackware 9.0 на виртуальной машине на Linode.com. На нем размещено около 130 ГБ почты в формате Maildir на разделенных отдельных файловых системах Ext3 (самая большая - 92 ГБ). Я планирую обновить сервер (полностью новую установку с самой последней версией Slackware) в течение 2 недель или около того, но это нетривиально, поэтому я хочу решить текущую проблему до того, как ситуация ухудшится.

За последние несколько месяцев различные утилиты начали работать с ошибками, а некоторые процессы время от времени останавливались. Основными приложениями, работающими на сервере, являются qpsmtpd, qmail, Dovecot, ClamAV и bogofilter, а сервер обычно имеет очень низкую нагрузку на систему, хотя около 300 активных пользователей IMAP получают около 1 почты в секунду или выходят из системы.

Около 3 недель назад виртуальная машина была перенесена в Linode на 8 ГБ, и проблема, похоже, обострилась. Я догадываюсь, что проблема связана с запуском 32-битной ОС с большим объемом памяти, чем может использовать ОС. У меня ограниченный опыт работы с ядром и с тем, как оно обрабатывает память.

ClamAV перезапускается 2-3 раза в день и qpsmptpd (написанный на Perl, но предварительно разветвленный) каждые несколько часов.

Кроме того, запуск "ls" в Maildirs с большим количеством ошибок в сообщениях (файлах), с примером журнала strace, найденным здесь:

http://pastie.org/8127239

Больше информации:

Ядро Linux = 3.9.3-x86

Память = 8 ГБ

$ free

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

Я был бы очень признателен за некоторые советы и с удовольствием предоставлю более подробную информацию для диагностики.

1 ответ

Вот где это остановилось:

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

Давайте посмотрим, как работает mremap:

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

И описание ошибки 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.

Похоже, ошибка SW. Обходной путь - использовать 64-битную ОС для расширения адресации виртуальной памяти.

Какую версию clamav вы используете?

Другие вопросы по тегам