Для Zimbra рекомендуется минимум 8 ГБ оперативной памяти. Если требуется установить программное обеспечение на слабые сервера, то рекомендуется сделать оптимизацию настроек.
Оптимизация памяти
1. Изменим параметры innodb_buffer_pool_size и mailboxd_java_heap_size.
mailboxd_java_heap_size устанавливается в /opt/zimbra/conf/my.cnf
. Изменим до разумного 1GB:
innodb_buffer_pool_size = 1073741824
mailboxd_java_heap_size задается с помощью zmlocalconfig и также настраивается до 1 ГБ:
zmlocalconfig -e mailboxd_java_heap_size=1024
zmlocalconfig -e mailboxd_java_heap_new_size_percent=15
2. Установим использование памяти MySQL до 15% от системной памяти:
zmlocalconfig -e mysql_memory_percent=15
3. Настроим количество серверов Amavis и потоков ClamAV, которые были развернуты (по умолчанию 10). Следует отметить, что число потоков Amavis и ClamAV должно совпадать.
Эти значения могут быть скорректированы в zmprov:
zmprov ms `zmhostname` zimbraAmavisMaxServers 1
zmprov ms `zmhostname` zimbraClamAVMaxThreads 1
4. Установим количество потоков LMTP от значения по умолчанию 20. Установим на 4:
zmprov ms `zmhostname` zimbraLmtpNumThreads 4
5. Скорректируем количество потоков для http. Оно должно примерно равняться количеству пользователей, которые одновременно регистрируются в веб-клиенте * 1.5.
В более новых версиях Zimbra zimbraHttpNumThreads управляет потоками HTTP и HTTPS.
zmprov ms `zmhostname` zimbraHttpNumThreads 30
6. Изменим количество потоков и открытых соединений для POP и IMAP. Можно даже отключить POP, если он не нужен. Грубый расчет количества необходимых соединений — это число пользователей * 4 * num устройств на пользователя. Потоки IMAP объединены, а неиспользуемые потоки не занимают ресурсы, поэтому это значение может быть установлено выше, чем требуется.
zmprov ms `zmhostname` zimbraPop3ServerEnabled FALSE
zmprov ms `zmhostname` zimbraImapNumThreads 20
zmprov ms `zmhostname` zimbraImapMaxConnections 200
7. Наконец, настроем количество заголовков сообщений, хранящихся в кеше сервера, с 10 000 до более разумного значения.
zmprov ms `zmhostname` zimbraMessageCacheSize 2000
Оптимизация процессора
1. Процесс zmconfigd контролирует ключи конфигурации Zimbra и перезапускает соответствующие службы Zimbra, когда их значения изменяются. По умолчанию этот процесс проверяет значения конфигурации каждые 60 секунд и потребляет много CPU. Скорректируем время, чтобы он работал один раз в час, что значительно сократит использование ЦП.
zmlocalconfig -e zmconfigd_interval=3600
2. По умолчанию Zimbra сохраняет файлы журнала событий на срок до двух лет. Скорректируем до 1 месяца, чтобы освободить место на диске.
zmprov mcf zimbraLogRawLifetime 7d
zmprov mcf zimbraLogSummaryLifetime 30d
3. Процесс регистрации состояний zimbra выполняется каждые две минуты. Изменим до более разумных 60 минут. Это можно скорректировать в файле zimbra cron, набрав crontab -e при входе в систему как пользователь zimbra. Найдите строку /opt/zimbra/libexec/zmstatuslog
и изменим время cron от * / 2 до * / 60
*/60 * * * * /opt/zimbra/libexec/zmstatuslog > /dev/null 2>&1
Перезапуск сервера
Перезапускаем процесс
zmcontrol restart
Для проверки использования памяти наберите
ps aux | grep zimbra | awk '{memory +=$4}; END {print memory }'
Существуют и другие параметры, которые можно настроить для оптимизации работы на слабых серверах. Всю дополнительную информацию об этих параметрах производительности можно найти здесь: https://wiki.zimbra.com/wiki/Performance_Tuning_Guidelines_for_Large_Deployments