Büyük Zimbra Kurulumları İçin Performans İyileştirme Mimarisi
Büyük ölçekli Zimbra kurulumlarında donanım, JVM, veritabanı ve disk I/O optimizasyonu

Zimbra Collaboration Suite (ZCS), tüm mesajlaşma ve iş birliği sistemleri gibi yoğun disk I/O bağımlı bir uygulamadır. Java tabanlı mailboxd, metadata tutan MariaDB/MySQL ve OpenLDAP katmanları disk yükünü azaltmak için RAM önbelleğine büyük ölçüde güvenir.

1. Donanım ve İşletim Sistemi (RAM, CPU, Swap)

  • 64-bit Mimari ve Bellek: Büyük kurulumlarda mutlaka 64-bit (x86_64) işletim sistemi kullanılmalıdır. Tüm düğümlerde en az 8 GB RAM önerilir; yoğun posta depolarında 16 GB–64 GB, milyonlarca kullanıcı barındıran LDAP sunucularında 32 GB–128 GB RAM tercih edilir.
  • Hyper-Threading: Performans izleme metriklerinin yanıltıcı olmaması için CPU üzerinde Hyper-Threading özelliğinin devre dışı bırakılması önerilir.
  • Swap Kontrolü: Swap kullanımı Zimbra performansını ciddi biçimde düşürür. /etc/sysctl.conf içine şu satırı ekleyip sysctl -p ile uygulayarak çekirdeğin swap eğilimini minimuma indirebilirsiniz:
vm.swappiness=1

2. Disk Alt Yapısı ve Dosya Sistemi

Mailbox sunucularında en yüksek I/O yükünü sırasıyla Lucene arama indeksi, MariaDB/MySQL ve Blob deposu üretir.

  • Kaçınılması Gerekenler: RAID5 (parite tabanlı RAID yazma performansını düşürür), NFS (OpenLDAP/MariaDB/Lucene için önerilmez) ve yüksek hızlı SAS/NVMe/FC yerine yavaş SATA diskler.
  • Önerilenler: Geniş önbellekli SAN veya BBU (pil destekli önbellek) korumalı disk denetleyicileri kullanın; disklerin kendi yazma önbelleğini (drive write cache) veri bütünlüğü için kapatın.
  • ext3 / ext4 ve Bağlama Seçenekleri: Dosya sistemlerini noatime ile bağlayın. Blob, Lucene indeks ve MTA kuyruk dizinlerinde dizin güncellemelerinin güvenli yazılması için chattr -R +D ile dirsync etkinleştirin (ancak kök dosya sistemine eklemeyin).
  • Açık Dosya Limiti: /etc/security/limits.conf dosyasında zimbra kullanıcısı için limitin 524288 olduğundan emin olun:
zimbra soft nofile 524288
zimbra hard nofile 524288

3. Ağ Yığını (TCP/IP) ve Kritik Portlar

Kısa ömürlü bağlantıların TIME_WAIT durumunda birikmesini önlemek için /etc/sysctl.conf içinde aşağıdaki ayarlar değerlendirilebilir (uygulama sonrası ağ kararlılığı izlenmelidir):

net.ipv4.tcp_fin_timeout=15
net.ipv4.tcp_tw_reuse=1
PortZCS ServisiPortZCS Servisi
25 / 587Postfix MTA / SMTP MSA7025LMTP (Yerel Teslimat)
80 / 443HTTP / HTTPS (Webmail & Proxy)7071ZCS Admin Konsolu (SSL)
143 / 993IMAP / IMAPS7306MariaDB / MySQL
110 / 995POP3 / POPS10024 / 10025Amavisd-new / Postfix Dönüş
389OpenLDAP11211Memcached (Nginx Proxy)

4. Mailbox Sunucusu: İş Parçacığı Havuzları ve NIO

zmprov ms ile sunucu bazında veya zmprov mcf ile global olarak bağlantı havuzlarını yapılandırabilirsiniz:

zmprov ms `zmhostname` zimbraHttpNumThreads 500
zmprov ms `zmhostname` zimbraPop3NumThreads 300
zmprov ms `zmhostname` zimbraImapMaxConnections 40000
zmprov ms `zmhostname` zimbraLmtpNumThreads 40
Not: ZCS 8 ve sonrasında IMAP/POP3 NIO varsayılan olarak etkindir. Tek bir iş parçacığı birden fazla bağlantıyı yönetebilir; bu nedenle zimbraImapNumThreads yerine eşzamanlı bağlantı limiti olan zimbraImapMaxConnections değerinin ölçeklenmesi gerekir.

5. Bellek Dağılımı ve JVM Ayarları (G1GC)

Java Heap (mailboxd_java_heap_size) ile MariaDB innodb_buffer_pool_size toplamı sistem belleğinin %80’ini aşmamalıdır. 16 GB’tan büyük sistemlerde Java Heap için %20 (genellikle 4–6,4 GB bandı) ve kalan bellekten MariaDB InnoDB havuzuna %30–35 ayırmak dengeli performans sağlar.

zmlocalconfig -e mailboxd_java_heap_size=4096
zmlocalconfig -e mailboxd_thread_stack_size=256k
zmlocalconfig -e mailboxd_java_options="-server -Djava.awt.headless=true -XX:+UseG1GC -XX:SoftRefLRUPolicyMSPerMB=1 -XX:+UnlockExperimentalVMOptions -XX:G1NewSizePercent=15 -XX:G1MaxNewSizePercent=45 -XX:-OmitStackTraceInFastThrow -verbose:gc -Xlog:gc*=info,safepoint=info:file=/opt/zimbra/log/gc.log:time:filecount=20,filesize=10m"

6. MariaDB / MySQL ve Lucene İndeks Optimizasyonu

/opt/zimbra/conf/my.cnf dosyasında [mysqld] altına eklenecek temel ayarlar (innodb_log_file_size değerini prosedürsüz değiştirmeyin):

table_open_cache = 1200
innodb_open_files = 2710
innodb_max_dirty_pages_pct = 10
innodb_flush_method = O_DIRECT

Lucene yazma yükünü azaltmak için COS bazında toplu indeksleme (batched indexing) veya gerekirse önbellek devreden çıkarma uygulanabilir:

for cos in `zmprov gac`; do zmprov mc $cos zimbraBatchedIndexingSize 20; done
zmlocalconfig -e ldap_cache_domain_maxsize=30000
zmlocalconfig -e ldap_cache_external_domain_maxsize=10000

7. MTA, SpamAssassin ve Yük Dengeleyici (Load Balancer)

  • MTA & Amavisd: Çoklu MTA ortamlarında OpenLDAP replikaları kullanın, amavisd-new geçici dizini için tmpfs değerlendirin ve SpamAssassin local.cf.in içinde lock_method flock ile bayes_auto_learn 0 ayarlarını gözden geçirin.
  • Load Balancer: Nginx Proxy katmanının önünde Katman-7 yerine Katman-4 (TCP) yük dengeleme kullanın, 5–15 dakikalık oturum sürekliliği (persistence/stickiness) tanımlayın ve kaynak IP NAT (SNAT) yapmayın; aksi halde gerçek istemci IP’si kaybolur ve açık relay / DoS koruması zayıflar.
Bu rehber yardımcı oldu mu?
Paylaş: LinkedIn WhatsApp

Zimbra Sunucunuzda Uzman Desteğe mi İhtiyacınız Var?

Kurulum, migrasyon, SSL/TLS, performans optimizasyonu ve 7/24 SLA bakım hizmetleri için ekibimizle iletişime geçin.

Destek / Teklif Al Paketleri İncele
Bilgi Bankasına Dön