Многочисленные ошибки сегментации на хосте 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, найденным здесь:
Больше информации:
Ядро 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 вы используете?