Как минимизировать SpamAssassin (spamd) использование памяти

Я недавно наблюдаю пару эпизодов Systm на Revision3, который показал методы для потребностей питания.

Первое создает 48-часовой UPS с помощью автомобильных батарей. Взломанный UPS

Второе забавно, но в то же время показывает то, что могло быть сделано с человеческой силой. Человек привел в действие колесо хомяка

Объедините питание с маршрутизатором Wi-Fi, и Вы находитесь в бизнесе. Для доступа в Интернет существует несколько маршрутизаторов Wi-Fi, которые могут соединиться через Ретрансляционные станции.

Если у Вас есть телефон Windows Mobile с высокой скоростью и Wi-Fi, можно использовать WMWifiRouter для создания LAN.

15
задан 4 May 2009 в 13:49
5 ответов

Я думаю, что Вы неправильно понимаете способ, которым Linux сообщает об использовании памяти. Когда процесс разветвляется, он приводит к второму процессу, который совместно использует много ресурсов с исходным процессом. Включенный в это память. Однако Linux использует технику, известную как Копия на записи (COW) для этого. То, что это означает, - то, что каждый разветвленный дочерний процесс будет видеть те же данные в памяти как исходный процесс, но каждый раз, когда те данные изменяются (ребенком или родителем), изменения копируются и только затем указывают на новое местоположение.

, Пока один из процессов не вносит изменения в те данные, они совместно используют ту же копию. В результате у меня мог быть процесс, который использует 100 МБ RAM, и разветвите ее 10 раз. Каждый из тех разветвленных процессов показал бы 100 МБ используемой RAM, но если бы Вы посмотрели на полное использование памяти на поле, то это могло бы только показать, что 130 МБ RAM используются (100 МБ, совместно использованных процессами, плюс некоторые МБ издержек, плюс еще дюжина МБ или два для остальной части системы).

Как заключительный пример, у меня есть поле прямо сейчас с 30 апачскими выполнениями процессов. Каждый процесс показывает использование 22 МБ RAM. Однако, когда я работаю свободный-m для показа моего полного Использования оперативной памяти, я добираюсь:

topher@crucible:/tmp$ free -m
             total       used       free     shared    buffers     cached
Mem:           349        310         39          0         24         73
-/+ buffers/cache:        212        136
Swap:          511         51        460

, Как Вы видите, это поле даже не имеет достаточного количества RAM для выполнения 30 процессов, которые каждый использовали 18 МБ "реальной" RAM. Если у Вас буквально не заканчивается RAM, или Ваши приложения подкачивают в большой степени, я не волновался бы о вещах.

ОБНОВЛЕНИЕ: Кроме того, проверьте этот инструмент, названный smem, упомянутый jldugger в ответе на другой вопрос на использовании памяти Linux здесь .

5
ответ дан 20 November 2019 в 23:01
  • 1
    У меня буквально заканчивается RAM, таким образом, я действительно должен волноваться об этом. Однако это могло быть это it' s другие процессы, которые используют RAM и SA isn' t использующий так. –  Tony Meyer 4 May 2009 в 13:56

Используя sa-компиляция Вы смогли улучшать скорость соответствия многих правил.

1
ответ дан 20 November 2019 в 23:01
  • 1
    Извините, я должен был упомянуть в вопросе это I' m уже с помощью sa-компиляции. Хорошее предложение, все же. –  Tony Meyer 4 May 2009 в 13:33

Вот то, что я сделал.

у меня есть установка, где много сообщений имеет тенденцию быть переданным примерно одновременно; для ряда экспериментов я выполняю SA на сообщениях, которые копируются во временную шпульку и затем поставляются заданием крона каждые пять минут.

spamd продолжил бы печатать, "возможно, необходимо увеличить параметр макс. детей", и у меня был он, повысил до 40 однажды, но у меня был сервер, использующий всю его область подкачки и катастрофический отказ.

Теперь я реализовал другой режим, где доставкой управляет файл блокировки Procmail. Поскольку было просто сделать, я просто использую последнюю цифру идентификатора процесса и работаю с 10 детьми. Я нисколько не уверен, что это оптимально, но это уже помогло избежать безумных пиков загрузки я, wouled время от времени испытывают.

LINEBUF=10240

# Grab last digit of PID for lockfile
PID=$
:0
* PID ?? ()\/[0-9]$
{ D=$MATCH }
:0
* > 512000
{ SA="(too large)" }
:0Ew:/tmp/20spamc.$D
SA=| spamc -p 38783 -l -y

, Кроме того, я запускаю spamd со многими ulimit ограничения. Числа были вынуты из http://svn.apache.org/repos/asf/spamassassin/trunk/contrib/run-masses кроме, я удалил ulimit -u ограничение. (Не уверенный, что продолжается. 32 является слишком маленьким в любом случае. С чем-то как 500 я мог сохранить spamd выполнение некоторое время, но в конечном счете столкновение с пределом.)

ulimit -v 204800
ulimit -m 204800
ulimit -n 256
#ulimit -u 32

perl -T -I lib -w spamd --min-children 2 --max-children 10 --max-spare 5 etc etc

я предполагаю, что закончу с ошибками отправки, если загрузка будет слишком высока в течение расширенного времени, но до сих пор, кажется, что мне удалось уменьшить загрузку в управляемые уровни с этим; и набор неудавшихся доставок еще намного лучше, чем машина, исчерпывающая подкачку.

1
ответ дан 20 November 2019 в 23:01

Высокие средние числа загрузки являются (иногда) косвенным признаком, что Ваша машина исчерпывает RAM (и использует много процессов свопинга ЦП назад и вперед от виртуальной памяти), таким образом, Вы могли попытаться настроить свой почтовый сервер для не передачи почты через SpamAssassin, если средние числа загрузки слишком высоки.

Вы не упоминаете, который MTA Вы выполняете, но если Вы называете SA из списка управления доступом в exim4, затем предложение у основания , это сообщение является эффективным.

кроме того, можно уменьшить нагрузку на SA и таким образом уменьшить его использование памяти, путем помещения некоторого другого, меньшего количества ресурсоемких методов фильтрации спама перед ним (т.е. таким образом, они обрабатывают и отклоняют некоторый спам, прежде чем это доберется до SA) - например, greylisting и отправитель проверяют, что выноски используют относительно мало RAM.

0
ответ дан 20 November 2019 в 23:01
  • 1
    На связанной ноте я серьезно считаю отказ SA в пользу dspam на нескольких серверах, которые я выполняю, поскольку dspam предположительно менее голоден RAM. –  David North 29 July 2009 в 12:22

Мы были в аналогичной ситуации несколько месяцев назад. SpamAssassin и ClamAV использовали большую память на размещенном сервере. У нас была опция добавления большей памяти к серверу, но это оказалось более стоимостью - и эффективный при времени для переключений на Postini. YMMV.

0
ответ дан 20 November 2019 в 23:01

Теги

Похожие вопросы