Performans optimizasyonu serimizin ilk bölümünde donanım ve işletim sistemi ayarlarını ele almıştık. Bu ikinci bölümde, Zimbra Mailbox sunucusunun yazılım seviyesindeki optimizasyonlarına odaklanıyoruz: bağlantı yönetimi, bellek tahsisi, veritabanı ayarları ve indeks optimizasyonu.
Bağlantı Havuzu Yapılandırması
HTTP/HTTPS Bağlantıları
Web posta ve REST API erişimi için HTTP iş parçacığı sayısını ayarlayın:
# ZCS 5.0 ve sonrası için
zmprov ms $(zmhostname) zimbraHttpNumThreads 500
Bu değer, eşzamanlı web posta oturumlarını yönetmek için yeterlidir. Daha düşük değerler yoğun saatlerde yavaşlamaya neden olabilir.
POP3 Bağlantıları
POP3 için 300 iş parçacığı ayarı, 8 dakikada bir posta kontrol eden on binlerce kullanıcıyı destekleyebilir:
zmprov ms $(zmhostname) zimbraPop3NumThreads 300
IMAP Bağlantıları
ZCS 8.0 ve sonrasında NIO (Non-blocking I/O) etkin durumdadır. Varsayılan 100 iş parçacığı ile 2.000-5.000 kullanıcı desteklenir. 10.000 aktif istemci için:
zmprov ms $(zmhostname) zimbraImapNumThreads 200
zmprov ms $(zmhostname) zimbraImapMaxConnections 40000
LMTP (Yerel Posta Teslimi)
Varsayılan 20 iş parçacığı çoğu kurulum için yeterlidir. Bu değeri gereksiz yere artırmak, I/O darboğazlarına ve sunucu yanıtsızlığına yol açabilir. Artırmadan önce disk I/O performansınızı kontrol edin.
Java Bellek (JVM) Ayarları
Zimbra’nın performansı büyük ölçüde Java bellek ayarlarına bağlıdır. RAM miktarına göre önerilen tahsis oranları:
| Toplam RAM | Java Heap | MySQL Buffer Pool | Açıklama |
|---|---|---|---|
| 8 GB | %30 (~2.4 GB) | %25 (~2 GB) | Minimum önerilen |
| 16 GB | %25 (~4 GB) | %30 (~4.8 GB) | Orta ölçek |
| 32 GB | %20 (~6.4 GB) | %35 (~11 GB) | Büyük ölçek |
Önemli: MySQL InnoDB buffer pool’u 10 GB’ın üzerine çıkarmak fayda sağlamaz ve gereksiz bellek tüketimine yol açar.
ZCS 8.0 JVM Ayarları
# /opt/zimbra/conf/localconfig.xml içinde
mailboxd_java_options = "-server -Xms${heap} -Xmx${heap} \
-XX:+UseConcMarkSweepGC -XX:+UseParNewGC \
-XX:NewRatio=2 \
-XX:PermSize=196m -XX:MaxPermSize=350m \
-XX:SoftRefLRUPolicyMSPerMB=1"
ZCS 8.8.12+ JVM Ayarları (G1GC)
Daha yeni sürümlerde G1 çöp toplayıcı önerilir:
mailboxd_java_options = "-server -Xms${heap} -Xmx${heap} \
-XX:+UseG1GC \
-XX:G1NewSizePercent=15 \
-XX:G1MaxNewSizePercent=45"
G1GC, CMS’ye kıyasla daha tahmin edilebilir duraklamalar sağlar ve büyük heap boyutlarında daha iyi performans gösterir.
MariaDB/MySQL Yapılandırması
Zimbra’nın metadata deposu olan MariaDB/MySQL’in doğru yapılandırılması kritiktir:
# /opt/zimbra/conf/my.cnf içinde
[mysqld]
table_open_cache = 1200
innodb_open_files = 2710
innodb_max_dirty_pages_pct = 10
innodb_flush_method = O_DIRECT
Bu ayarların açıklamaları:
- table_open_cache = 1200: Açık tablo önbelleğini artırarak tablo açma/kapama yükünü azaltır
- innodb_open_files = 2710: InnoDB’nin eşzamanlı açık dosya limitini yükseltir
- innodb_max_dirty_pages_pct = 10: Kirli sayfa oranını düşük tutarak ani yazma dalgalanmalarını (write spike) önler
- innodb_flush_method = O_DIRECT: Çift tamponlamayı önleyerek bellek kullanımını optimize eder
Uyarı: innodb_log_file_size değerini DEĞİŞTİRMEYİN. Varsayılan değer Zimbra için optimize edilmiştir.
Lucene İndeks Optimizasyonu
Zimbra, e-posta aramaları için Apache Lucene indekslerini kullanır. İndeks performansını optimize etmek için:
İndeks LRU Önbelleği
# Varsayılan: 100 — dikkatli artırın
zmlocalconfig -e zimbra_index_lru_size=300
Dikkat: 8 GB RAM’li sistemlerde bu değeri 500-1000’in üzerine çıkarmak yüksek çöp toplama süreleri ve bellek yetersizliği hatalarına neden olabilir.
Toplu İndeksleme
İndeksleme işlemini toplu hale getirerek disk I/O yükünü azaltın:
# Web posta + IMAP/POP kullanıcıları için
zmprov ms $(zmhostname) zimbraBatchedIndexingSize 20
# Sadece IMAP/POP kullanıcıları için
zmprov ms $(zmhostname) zimbraBatchedIndexingSize 40
Writer Önbelleği Devre Dışı Bırakma
Yoğun indeksleme sorunları yaşıyorsanız writer önbelleğini devre dışı bırakabilirsiniz:
zmlocalconfig -e zimbra_index_max_uncommitted_operations=0
Mesaj Önbelleği
Sık erişilen e-postaları bellekte tutarak disk okumalarını azaltın:
# ZCS 6+ için (girdi sayısı olarak)
zmprov ms $(zmhostname) zimbraMessageCacheSize 10000
Alan Adı Önbellekleri
Çok sayıda alan adı barındıran kurulumlar (20.000-30.000 domain) için önbellek boyutlarını artırın:
zmlocalconfig -e ldap_cache_domain_maxsize=30000
zmlocalconfig -e ldap_cache_external_domain_maxsize=10000
Sonraki Adımlar
Bu yazıda Mailbox sunucusunun yazılım seviyesindeki tüm kritik optimizasyonları ele aldık. Serinin son bölümünde LDAP, MTA (Postfix) ve yük dengeleyici yapılandırmalarını inceleyeceğiz.
Serinin ilk bölümü olan Donanım ve İşletim Sistemi Ayarları yazısını henüz okumadıysanız, önce oradan başlamanızı öneririz.
Destek ve İletişim
Zimbra performans optimizasyonu konusunda destek almak için zimbra@fzm.com.tr adresinden bize ulaşabilir veya iletişim sayfamız üzerinden iletişime geçebilirsiniz.


