Skip to content

Exim стресс-тест на 100 000 сообщений в очереди

Однажды утром на почтовом сервере Exchange обнаружили более 100 000 сообщений в очереди. Не суть, как они там оказались. Суть в том, что для удаления сообщений из очереди ушло примерно 4-5 часов, средствами PowerShell. Выборка из очереди 20 000 записей - продолжалась более 30 минут... до конца не дождались, уменьшили количество до 1 000 потом 2 000... но запросы все равно выполнялись очень медленно.

Делаю тест, дабы понять - как будет вести себя Exim в подобной ситуации, какие ожидают временные потери.

# uname -a
FreeBSD exim-test.domain.local 10.3-RELEASE-p7 FreeBSD 10.3-RELEASE-p7 #0: Thu Aug 11 18:38:15 UTC 2016     [email protected]:/usr/obj/usr/src/sys/GENERIC  amd64

# df -h
Filesystem    Size    Used   Avail Capacity  Mounted on
/dev/da0p2    8.7G    5.4G    2.6G    67%    /
devfs         1.0K    1.0K      0B   100%    /dev

# exim -bV
Exim version 4.87 #0 (FreeBSD 10.3) built 16-Aug-2016 15:40:34
Copyright (c) University of Cambridge, 1995 - 2016
(c) The Exim Maintainers and contributors in ACKNOWLEDGMENTS file, 2007 - 2016
Probably Berkeley DB version 1.8x (native mode)
Support for: crypteq iconv() use_setclassresources PAM Perl Expand_dlfunc Content_Scanning Old_Demime DNSSEC I18N PRDR Experimental_SPF
Lookups (built-in): lsearch wildlsearch nwildlsearch iplsearch cdb dbm dbmjz dbmnz dnsdb dsearch ldap ldapdn ldapm mysql passwd
Authenticators: cram_md5 dovecot plaintext spa
Routers: accept dnslookup ipliteral manualroute queryprogram redirect
Transports: appendfile/maildir/mailstore/mbx autoreply pipe smtp
Fixed never_users: 0
Size of off_t: 8
Configuration file is /usr/local/etc/exim/configure

Начало:
Начало

20 000 писем в очереди
20 000 писем в очереди

118 000 писем в очереди
118 000 писем в очереди

За весь период тестирования:
all-time

Итоги:
- сервер работоспособен, ssh клиент нормально подключается и адекватно работает. - место на диске не закончилось (хотя наверное зависит от размера писем).
- потребление памяти выросло не критично. - колосально возросла загрузка CPU.

Будем очищать очеред сообщений, при работающем сервере:

exim -bpc # ответ мгновенный
118765

exim -bp | exiqsumm # заняло минут 1:51

Count  Volume  Oldest  Newest  Domain
----- ------ ------ ------ ------

  100    14MB     26h      9h  test.domain.com
    1    2150     25h     25h  exim-test.net
11865  7775KB     25h      8h  exim-test000.net
11866  7775KB     25h      8h  exim-test111.net
11867  7776KB     25h      8h  exim-test222.net
11867  7776KB     25h      8h  exim-test333.net
11867  7776KB     25h      8h  exim-test444.net
11867  7776KB     25h      8h  exim-test555.net
11867  7776KB     25h      8h  exim-test666.net
11866  7775KB     25h      8h  exim-test777.net
11866  7775KB     25h      8h  exim-test888.net
11866  7775KB     25h      8h  exim-test999.net
---------------------------------------------------------------
118765    90MB     26h      8h  TOTAL

# ОТ кого отправляются письма.
exim -bp | awk '{print $4}' | sort | uniq -c | sort -rn
237530
118668 <[email protected]>
  97 <>

#  Удаляем писем от и на ПУСТОГО получателя
exim -bpr |grep "<>" | awk '{print $3}' | xargs exim –Mrm


#  Удаляем писем на КОНКРЕТНОГО получателя 
# Ответ начал выдаваться спустя 2 минуты 24 секунды
exiqgrep -i -r [email protected] | xargs exim -Mrm

# В очереди 83 000 писем:
exiqgrep -i -r [email protected] | xargs exim -Mrm

# Выборка писем заняла 1:15, а само удаление 19 секунд.