Назад | Перейти на главную страницу

Быстрый сервер imap для больших папок

Я ищу сервер imap, который работает быстро с большими папками. Скажем, 20 000–100 000 писем в папке.

В настоящее время я использую dovecot, и открытие папки может занять 10 секунд, а индикатор HD на сервере imap мигает как сумасшедший.

Я использую alpine в качестве клиента, и по умолчанию он перечисляет только самые новые сообщения, поэтому мой клиент не пытается передать все при открытии почтового ящика. Это можно увидеть в том, что когда я прокручиваю, он должен загружать строки темы для следующей страницы (когда я прокручиваю ее в первый раз).

Я использую maildir на XFS.

Редактировать: Я спрашиваю, поскольку данных по большому счету не так уж и много. Если бы это было в базе данных SQL, то получение строк темы последних 40 сообщений было бы не займет 10 секунд для папки из 40 000 писем. Единственные необходимые данные:

SELECT date, from, subject FROM emails ORDER BY date DESC LIMIT 40;

Любые идеи?

Dovecot на самом деле довольно хорош с точки зрения производительности. Dovecot's Вики-страница по настройке производительности есть несколько советов и приемов для дальнейшего повышения производительности. Хранение индексов и maildirs на отдельных дисках - это хорошо для начала, если это вообще возможно для вас. Вы также можете оценить переход на Dovecot's формат хранения dbox.

Возможно, вы могли бы попробовать использовать ядро ​​базы данных для хранения сообщений вместо почтовых ящиков Maildir / Maildir ++. Это можно сделать с помощью dbmail.

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

Вот обзор архитектуры dbmail:


(источник: dbmail.org)

Вы не упоминаете спецификации сервера ... сколько памяти вы используете, процессор, сетевая карта / коммутаторы гигабитные? А если вы посмотрите на сервер, то сможете ли вы сказать, что уже исчерпано? Если дело в пропускной способности диска, вы далеко не уйдете с заменой серверного ПО.

Я клонировал системы по сети и был озадачен тем, что две системы на гигабитном коммутаторе потребляют всего около 15 МБ / с, когда я знал, что моя система способна создавать пакеты в диапазоне 50 МБ / с. Оказалось, что это узкие места в конечных системах из-за дисков (я подключил диск ко второму каналу IDE и выполнил прямой DD, получил те же скорости передачи).

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

Поскольку вы используете dovecot, я полагаю, вы уже используете его функции индексации? Я ничего не знаю (по крайней мере, ничего бесплатного), это быстрее, чем dovecot.