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 писем в очереди
118 000 писем в очереди
За весь период тестирования:
Итоги:
- сервер работоспособен, 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 секунд.