Teknoloji

Moodle ve Diğer LMS’ler İçin Hosting Performans Rehberi

İçindekiler

Moodle ve LMS Hosting Performansını Doğru Kurmak Neden Zor Geliyor?

Bir e-öğrenme platformu kurarken çoğu ekip önce müfredatı, içerik üretimini ve kullanıcı arayüzünü planlıyor. Teknik tarafta ise genellikle tek soru soruluyor: “Sunucu kaç GB RAM olsun?” Performans problemleri ise ancak ilk dönem sonu sınavında, yüzlerce öğrencinin aynı anda sınava girmeye çalıştığı anda fark ediliyor. Aslında Moodle ve benzeri tüm LMS’ler (Canvas, Open edX, Sakai, kurumsal LMS’ler vb.) için performansı belirleyen şey, yalnızca CPU ve RAM değil; PHP ayarları, veritabanı yapılandırması ve doğru önbellek stratejisi.

Biz DCHost olarak eğitim platformlarıyla çalışan çok sayıda kurumun ortamını yönetirken şunu gördük: Aynı donanım üzerinde, doğru yapılandırılmış bir Moodle ortamı, yanlış ayarlı bir ortama göre 2–3 kat daha fazla eşzamanlı kullanıcıyı rahatlıkla kaldırabiliyor. Üstelik bu fark çoğu zaman sadece birkaç php.ini, my.cnf ve Redis ayarıyla ortaya çıkıyor. Bu rehberde, Moodle ve diğer PHP tabanlı LMS’ler için hosting tarafında yapmanız gereken kritik ayarları; PHP, veritabanı ve önbellek katmanlarına odaklanarak adım adım anlatacağız.

Eğer genel mimari ve LMS seçimleri tarafında daha geniş bir çerçeve görmek isterseniz, daha önce hazırladığımız eğitim platformları için LMS hosting çözümleri rehberimizi de mutlaka inceleyin. Bu yazıda ise doğrudan performansın kalbine, yani sunucu ayarlarına odaklanacağız.

Moodle ve Diğer LMS’ler: Performansı Asıl Ne Belirliyor?

Moodle gibi LMS’ler klasik bir blog sitesinden farklıdır. Basit sayfa görüntüleme yerine şu tip yüklerle uğraşırsınız:

  • Onlarca – yüzlerce öğrencinin aynı anda sınava başlaması
  • Büyük boyutlu PDF, video ve sunum dosyalarının aynı anda indirilmesi
  • Sürekli çalışan cron görevleri (not hesaplama, raporlar, bildirim e-postaları)
  • Yoğun veritabanı yazma trafiği (soru cevapları, loglar, oturum kayıtları)

Dolayısıyla performans için şu üç katmana özellikle dikkat etmelisiniz:

  • PHP katmanı: PHP sürümü, PHP-FPM havuz ayarları, bellek ve zaman limitleri, OPcache.
  • Veritabanı katmanı: MySQL/MariaDB/PostgreSQL yapılandırması, indeksler, bağlantı limiti, buffer boyutları.
  • Önbellek katmanı: OPcache, Redis/Memcached, sayfa/nesne önbelleği, oturum (session) depolama.

Doğru tasarlanmış bir LMS hosting ortamında bu üç katman uyumlu çalışır. Örneğin PHP tarafında her istek hızlı çalışırken, veritabanı gereksiz yere şişmez, Redis oturum kilitlenmelerini azaltır, dosya sistemi de yedek ve güvenlik tarafında sorun çıkarmaz.

Doğru Altyapıyı Seçmek: paylaşımlı hosting mi, VPS mi, Dedicated mi?

Performans ayarlarına girmeden önce, altyapı tipini netleştirmek gerekiyor. Moodle ve LMS dünyasında genel rehber şu şekilde:

  • Küçük ölçek (50–100 aktif kullanıcı, kurum içi kurslar): İyi yapılandırılmış bir VPS veya kaynakları güçlü bir paylaşımlı hosting iş görebilir.
  • Orta ölçek (100–500 eşzamanlı kullanıcı, yoğun sınavlar): Önerimiz, en az 4 vCPU, 8–16 GB RAM, NVMe diskli bir VPS veya ayrılmış kaynaklı çözüm.
  • Büyük ölçek (500+ eşzamanlı kullanıcı, kampüs ölçeği ya da ulusal projeler): Ayrı uygulama ve veritabanı sunucuları, ayrı Redis, hatta gerektiğinde dedicated sunucu ya da çoklu VPS mimarisi.

Özellikle paylaşımlı hosting kullanıyorsanız, cPanel tarafındaki CPU, IO, EP, RAM limitleri sık sık tavan yapabilir. Bu konuda detaylı sinyalleri cPanel kaynak limitleri ve ‘Resource Limit Reached’ hatası yazımızda anlatmıştık. Moodle gibi yoğun veritabanı ve PHP işlemi üreten uygulamalarda, genellikle bir noktadan sonra VPS’e geçmek kaçınılmaz hale geliyor.

Eğer hali hazırda paylaşımlı ortamda Moodle çalıştırıyorsanız ve limitlere sürekli çarpıyorsanız, paylaşımlı hosting’den VPS’e kesintisiz geçiş rehberimiz planlama sürecinde oldukça işinize yarayacaktır. DCHost tarafında biz, bu geçişleri mümkün olduğunca sıfır kesintiyle yönetmeye odaklanıyoruz.

PHP Katmanı: Moodle Performansının İlk Ayağı

Moodle ve çoğu açık kaynak LMS, PHP üzerinde çalışır. Bu nedenle PHP katmanındaki her yanlış ayar, doğrudan yanıt süresine ve eşzamanlı kullanıcı kapasitesine yansır.

PHP Sürümü Seçimi

Yeni Moodle sürümleri, PHP 8.x serisini hedefler. Genel tavsiyemiz:

  • Desteklenen en güncel PHP 8.x sürümünü kullanın (örneğin 8.1 veya 8.2).
  • Eski eklentiler sebebiyle daha düşük sürümde kalmanız gerekiyorsa, mutlaka test ortamı kurun.

PHP 8.x’e geçişte dikkat etmeniz gereken detayları, PHP 8.x yükseltme kontrol listesi yazımızda uygulamalı anlattık. Oradaki FPM ve OPcache prensipleri Moodle için de birebir geçerlidir.

PHP-FPM Havuz Ayarları: pm.max_children Nasıl Hesaplanır?

PHP-FPM, her isteği bir “çocuk process” ile işler. Moodle gibi sistemlerde en sık yapılan hata, ya çok düşük ya da çok yüksek pm.max_children değeri kullanmaktır. Basit bir hesaplama yapalım:

  1. Önce bir test yapın ve bir Moodle isteğinin ortalama RAM tüketimini ölçün (örn. 60–80 MB).
  2. Sunucudaki toplam RAM’den (örneğin 8 GB) işletim sistemi, veritabanı ve Redis için pay ayırın (örn. 3–4 GB).
  3. Kalan RAM’i tek bir PHP sürecinin ortalama tüketimine bölün.

Örneğin:

Toplam RAM: 8 GB
OS + DB + Redis: 3 GB
PHP için kalan: 5 GB ≈ 5120 MB
Bir PHP süreci ortalama: 80 MB
pm.max_children ≈ 5120 / 80 ≈ 64

Sonuç olarak tipik bir ayar:

[moodle]
user = www-data
group = www-data
listen = /run/php/php-fpm-moodle.sock
pm = dynamic
pm.max_children = 60
pm.start_servers = 10
pm.min_spare_servers = 10
pm.max_spare_servers = 20
pm.max_requests = 500

pm.max_requests değerini 300–1000 aralığında tutmak, hafıza sızıntılarına karşı sürecin zaman zaman yenilenmesini sağlar.

php.ini Limitleri: memory_limit, max_execution_time, upload_max_filesize

Moodle’da özellikle dosya yükleme ve yedek alma işlemleri için PHP limitlerini gerçekçi değerlerde tutmalısınız:

  • memory_limit: En az 256M, mümkünse 512M. Çok modüllü, yoğun eklentili ortamlarda daha yüksek gerekebilir.
  • max_execution_time: Normal sayfa istekleri için 60 sn yeterli, ancak yedek alma / büyük raporlar için komut satırı betiklerinde daha yüksek olabilir.
  • upload_max_filesize ve post_max_size: Derslerde ne kadar büyük dosyaya izin verecekseniz (örneğin 200 MB video), bu limitleri ona göre ayarlayın.
memory_limit = 512M
max_execution_time = 60
max_input_time = 60
upload_max_filesize = 200M
post_max_size = 200M

OPcache Ayarları: PHP Kodunu Sıkıştırılmış Gibi Hızlandırmak

OPcache, PHP dosyalarını derlenmiş halde bellekte tutar. LMS ortamında CPU tüketimini ciddi şekilde azaltır. Örnek bir ayar seti:

opcache.enable = 1
opcache.enable_cli = 0
opcache.memory_consumption = 256
opcache.interned_strings_buffer = 16
opcache.max_accelerated_files = 20000
opcache.validate_timestamps = 1
opcache.revalidate_freq = 60

Moodle kod tabanı oldukça geniş olduğundan opcache.memory_consumption’ı 128M yerine 192–256M seviyelerinde tutmak, cache miss oranını ciddi biçimde düşürür.

Veritabanı Katmanı: MySQL/MariaDB/PostgreSQL Ayarları

LMS’lerde asıl darboğaz çoğu zaman PHP değil, veritabanıdır. Özellikle sınav dönemlerinde:

  • Her soru kaydı, her cevap, her log satırı veritabanına yazılır.
  • Eşzamanlı kullanıcı sayısı arttıkça, bağlantı sayısı ve kilitlenmeler (lock) artar.

Bu nedenle veritabanı sunucusunu hem kaynak hem de konfigürasyon</strong tarafında iyi ayarlamak zorundasınız.

InnoDB ve Karakter Seti Seçimi

MySQL/MariaDB tarafında Moodle için mutlaka InnoDB motorunu kullanın. Tablo motorlarını karışık kullanmak (MyISAM + InnoDB) kilit yönetimi ve çökme sonrası kurtarma süreçlerini zorlaştırır.

Karakter seti için önerimiz:

  • utf8mb4 (tam Unicode desteği, emoji dâhil)
  • Sıralama (collation) olarak utf8mb4_unicode_ci veya yeni sürümlerde utf8mb4_0900_ai_ci

Temel MySQL/MariaDB Tuning Parametreleri

Detaylı bir veritabanı tuning rehberi için MySQL/InnoDB tuning kontrol listemizden yararlanabilirsiniz. Moodle senaryosu için özetle şu parametreler kritik:

  • innodb_buffer_pool_size: Sunucu RAM’inin %50–70’i (sadece DB sunucusuysa). Örneğin 8 GB RAM’li DB için 4–5 GB.
  • innodb_log_file_size: Yoğun yazma yapan sistemlerde 512M–1G seviyeleri mantıklı.
  • max_connections: PHP-FPM’deki maksimum çocuk process sayısını (~50–100) biraz üzerinde tutun (örneğin 150–200).
  • query_cache: Yeni MySQL sürümlerinde kaldırıldı, varsa devre dışı bırakın.
[mysqld]
innodb_buffer_pool_size = 4G
innodb_log_file_size = 1G
max_connections = 200
innodb_flush_log_at_trx_commit = 1
innodb_file_per_table = 1
sql_mode = STRICT_ALL_TABLES

Slow Query Log ve İndeksleme

Moodle, modül ve eklenti yapısı gereği bazen karmaşık SQL sorguları üretebilir. Özellikle raporlama ve log tablolarında, doğru indeksler yoksa sorgu süreleri saniyeleri bulabilir.

  • slow_query_log’u aktif edin, 1 saniyeden uzun süren sorguları kaydedin.
  • Düzenli aralıklarla slow query logunu analiz ederek, eksik indeksleri ekleyin.
  • En hızlı büyüyen tabloları (örneğin loglar, quiz_attempts) periyodik bakımda gözden geçirin.

Veri hacmi büyüdükçe, yedekleme stratejiniz de kritik hale gelir. Bu konuda MySQL/MariaDB yedekleme stratejileri rehberimiz LMS veritabanları için de doğrudan uygulanabilir.

Önbellek Katmanı: Redis, OPcache ve Sayfa Önbelleği

Önbellekleme, Moodle performansını 2–3 kat iyileştirebilecek kadar güçlü bir araçtır. Doğru kurgulandığında hem veritabanı yükünü azaltır hem de PHP tarafındaki yanıt süresini düşürür.

OPcache: Kod Seviyesinde Önbellek

OPcache ayarlarını yukarıda anlattık; burada vurgulamak gereken nokta şu: Moodle çekirdeği ve eklentileri sık güncellenmiyorsa, opcache.revalidate_freq değerini 60–120 saniye gibi daha yüksek tutabilir, böylece her istekte dosyaları kontrol etme maliyetini düşürebilirsiniz.

Redis / Memcached: Nesne Önbelleği ve Session Depolama

Moodle, Redis’i hem cache hem de session store olarak kullanabilecek şekilde yapılandırılabilir. Bizim saha deneyimimiz, özellikle sınav dönemlerinde Redis’in:

  • Veritabanı bağlantı yükünü ciddi biçimde azalttığı,
  • Oturum kilitlenmelerini (session locking) minimize ettiği,
  • Yanıt sürelerinde gözle görülür bir düşüş sağladığı

yönünde. Redis’in temelleri ve performansa etkisi için Redis cache’in hosting performansını nasıl artırdığını anlattığımız rehbere göz atabilirsiniz.

Tipik bir Moodle Redis yapılandırmasında:

  • Redis, ayrı bir servis (mümkünse ayrı sunucu) olarak çalışır.
  • Session’lar Redis’e taşınır, böylece PHP-FPM process’leri arası çakışmalar azalır.

Session’ları Redis’e Taşımak

PHP tarafında session handler olarak Redis kullanmak için:

session.save_handler = redis
session.save_path = "tcp://127.0.0.1:6379?database=2&prefix=moodle_sess_"

Bu sayede:

  • NFS veya ortak dosya sistemine bağlı kalmazsınız.
  • Session verileri RAM’de tutulduğu için okuma/yazma gecikmesi düşer.

Tam Sayfa Önbelleği ve CDN Kullanımı

Moodle gibi LMS’lerde tüm sayfaları agresif şekilde cache’lemek mümkün değildir; çünkü kullanıcıya özel içerikler, sınav durumları, sonuçlar gibi dinamik bölümler yoğundur. Yine de:

  • Statik dosyalar (CSS, JS, resimler) için CDN kullanmak,
  • Ders içeriği gibi sık değişmeyen sayfalar için kısa süreli (stale-while-revalidate mantığında) önbellek

hem TTFB’yi hem de bant genişliği tüketimini önemli ölçüde azaltabilir. CDN tarafındaki maliyet ve performans dengesine ilgi duyuyorsanız, CDN trafik maliyetlerini kontrol altına alma rehberimize de göz atabilirsiniz.

Moodle ve LMS Özel Senaryoları: Sınav Dönemi, Dosya Depolama ve Cron

Moodle’ı klasik bir içerik sitesinden ayıran en kritik farklar, yoğun eşzamanlı kullanım anları ve arka planda çalışan cron görevleridir.

Eşzamanlı Kullanıcı Hesabı: Kaç vCPU, Kaç GB RAM?

Kaba ama pratik bir kural seti:

  • Hafif kullanım (sadece içerik görüntüleme, az sayıda quiz): 2 vCPU, 4 GB RAM ile ~50 eşzamanlı kullanıcı.
  • Orta kullanım (düzenli quiz, ödev yükleme): 4 vCPU, 8 GB RAM ile 100–200 eşzamanlı kullanıcı.
  • Ağır kullanım (büyük kampüs, sınav haftası): 8+ vCPU, 16+ GB RAM, ayrı veritabanı ve Redis.

Burada “eşzamanlı kullanıcı”yı, aynı 1–2 dakika içinde aktif işlem yapan kullanıcılar olarak düşünmek gerekir; toplam kayıtlı kullanıcı değil.

Cron Görevleri: Sakince Ama Güçlü Çalışmalı

Moodle’ın cron sistemi; not hesaplama, rapor üretme, yedek alma ve bildirim e-postaları gibi işlemleri yürütür. Tavsiyelerimiz:

  • Cron’u gerçek cron ile tetikleyin, web trafiğine bırakmayın.
  • Her dakikada bir çalışan bir cron girdisi kullanın:
* * * * * /usr/bin/php /var/www/moodle/admin/cli/cron.php >/dev/null 2>&1

Eğer cron görevleri sayfa istekleriyle aynı anda yoğun kaynak tüketiyorsa, ayrı bir VPS veya en azından düşük öncelikli (nice değeri yüksek) bir process olarak çalıştırmayı düşünebilirsiniz.

Dosya Depolama: Yerel Disk, NFS, Object Storage

Moodle’da ders dosyaları hızla yüzlerce GB’a çıkabilir. Burada üç temel yaklaşım var:

  • Yerel NVMe disk: Küçük/orta ölçekli LMS’ler için en basit ve performanslı çözüm.
  • NFS paylaşımlı depolama: Çoklu uygulama sunucusunun aynı dosya alanını kullanması gerektiğinde devreye girer, fakat yanlış kurulumda gecikme ve kilit problemleri doğurabilir.
  • Object storage (S3 uyumlu): Çok büyük arşivler için idealdir; dosyalar farklı bir depoda, uygulama sunucusundan ayrık tutulur.

Object storage ve S3 uyumlu depolama tasarlarken dikkat edilmesi gerekenleri object vs block vs file storage rehberimizde detaylı anlatıyoruz. Moodle dosya alanınızı büyütmeden önce bu yazıya da göz atmanızı öneririz.

Güvenlik ve İlk Gün Ayarları

Performans kadar önemli bir diğer konu da güvenlik. Özellikle öğrencilerin kişisel verileri, sınav soruları ve notlar söz konusu olduğunda, tek bir zafiyet çok büyük sorunlara yol açabilir. Yeni bir Moodle/LMS kurarken, ilk günden yapılması gereken hosting güvenlik ayarları kontrol listemizi adım adım uygulamanız, hem performansı koruyacak hem de saldırı yüzeyini minimize edecektir.

DCHost ile Moodle ve LMS Mimarisi Kurarken Yol Haritası

Şimdiye kadar anlattıklarımızı pratik bir yol haritasına dökelim. DCHost üzerinde tipik bir Moodle/LMS ortamını kurgularken şu adımları izlemeyi öneriyoruz:

1. Doğru Sunucu Tipini Seçin

  • Başlangıç / Pilot ortam: 2–4 vCPU, 4–8 GB RAM, NVMe diskli bir VPS.
  • Canlı kurum içi kullanım: 4–8 vCPU, 8–16 GB RAM, ayrı veritabanı VPS’i veya güçlü tek VPS.
  • Büyük kurum / üniversite: Ayrı uygulama, veritabanı ve Redis sunucuları; isteğe bağlı olarak object storage entegrasyonu.

2. PHP Katmanını LMS’e Göre Optimize Edin

  • PHP 8.x sürümünü kullanın, FPM havuz ayarlarını ölçüm yaparak belirleyin.
  • OPcache’i en az 128–256 MB bellekle etkinleştirin.
  • memory_limit, upload_max_filesize ve max_execution_time değerlerini ders içeriklerinize göre ayarlayın.

PHP tarafındaki genel optimizasyon prensipleri için, PHP-FPM, OPcache ve Redis ile sunucu tarafı optimizasyon rehberimizi Moodle açısından da referans olarak kullanabilirsiniz.

3. Veritabanını Gerçekçi Yük İçin Hazırlayın

  • MySQL/MariaDB’de InnoDB ve utf8mb4 kullanın.
  • Veri hacmine göre innodb_buffer_pool_size’ı RAM’in %50–70’i seviyesine getirin.
  • Slow query logu açarak düzenli indeksleme ve sorgu iyileştirmesi yapın.
  • Yedeklemeyi otomatikleştirip, geri dönüş testlerini ihmal etmeyin.

4. Redis ile Önbellek ve Session Yönetimini Güçlendirin

  • Redis’i ayrı bir servis veya VPS olarak konumlandırın.
  • PHP session’larını Redis’e taşıyın, Moodle’ın cache store’larını Redis’e yönlendirin.
  • Alarm ve izleme kurarak Redis’in bellek kullanımını ve gecikmesini takip edin.

5. İzleme, Loglama ve Kapasite Planlama

Performansı “hissetmek” yetmez, ölçmek gerekir. Özellikle:

  • CPU, RAM, disk IO, ağ trafiği grafikleri
  • Veritabanı bağlantı sayısı ve yavaş sorgu sayısı
  • PHP-FPM havuzundaki bekleyen istek (queue) durumu

gibi metrikleri düzenli takip ederek, bir sonraki sınav dönemi öncesinde kapasite arttırma kararlarını veriyle verebilirsiniz.

Özet ve Son Tavsiyeler

Moodle ve diğer LMS’ler için performans denince akla genellikle “daha fazla RAM, daha çok CPU” geliyor. Ancak DCHost tarafında yüzlerce proje deneyiminden biliyoruz ki, çoğu zaman asıl farkı yaratan doğru PHP, veritabanı ve önbellek ayarlarıdır. PHP-FPM havuzunu gerçek yük testlerine göre ayarlamak, OPcache’i yeterli bellekle çalıştırmak, MySQL/MariaDB tarafında InnoDB ve buffer pool’u doğru boyutlandırmak ve mutlaka Redis ile oturum/nesne önbelleği kullanmak; aynı donanımda 2–3 kat daha fazla eşzamanlı kullanıcıyı sorunsuz şekilde taşımanıza imkân verir.

Bir sonraki sınav döneminde “site açılmıyor” paniğini yaşamamak için, bu rehberdeki ayarları adım adım uygulayıp, üzerine kendi kurumunuzun kullanıcı alışkanlıklarına göre ufak ince ayarlar yapmanızı öneriyoruz. Eğer hangi noktadan başlamanız gerektiği konusunda kararsızsanız, ortamınızı birlikte gözden geçirip DCHost VPS, dedicated sunucu veya colocation çözümlerimizden hangisinin sizin senaryonuza en uygun olduğunu beraber netleştirebiliriz.

Doğru yapılandırılmış bir Moodle/LMS ortamı, sadece hızlı ve stabil çalışmakla kalmaz; aynı zamanda sürdürülebilir maliyet, güçlü güvenlik ve kolay yönetim sağlar. Altyapıyı bir kez sağlam kurduğunuzda, enerjinizi öğrencilerinize ve içerik kalitesine ayırmak çok daha kolay hale gelir.

Sıkça Sorulan Sorular

Bu tamamen kullanım senaryonuza bağlı. Küçük ölçekli, az sayıda kurs ve aynı anda en fazla 20–30 aktif kullanıcının olduğu ortamlar için kaynakları güçlü bir paylaşımlı hosting başlangıçta yeterli olabilir. Ancak sınav dönemlerinde 50+ eşzamanlı kullanıcıya çıkmayı planlıyorsanız, veritabanı ve PHP tarafındaki yük hızla artar ve paylaşımlı hosting’in CPU/IO limitlerine çarpmanız çok olasıdır. Bu noktada 2–4 vCPU, 4–8 GB RAM’li bir VPS’e geçmek hem performansı hem de kontrolü elinize almanızı sağlar. DCHost tarafında ilk aşamada paylaşımlı, büyüme başlayınca VPS’e sorunsuz geçiş senaryosunu sıkça uyguluyoruz.

Teknik olarak zorunlu değil; Moodle dosya sistemi ve veritabanı ile de çalışır. Ancak özellikle sınav ve yoğun kullanım dönemlerinde Redis’in farkı çok net hissedilir. Session’ları ve sık kullanılan cache verilerini Redis’e taşıdığınızda, veritabanı üzerindeki okuma/yazma yükü ciddi şekilde azalır, oturum kilitlenmeleri düşer ve sayfa yanıt sürelerinde gözle görülür bir iyileşme sağlanır. Bizim sahadaki projelerde gördüğümüz, doğru yapılandırılmış bir Redis entegrasyonu ile aynı donanımda yaklaşık 1,5–2 kat daha fazla eşzamanlı kullanıcıyı sorunsuz yönetebilmeniz. Bu yüzden özellikle orta ve büyük ölçekli Moodle kurulumlarında Redis’i “opsiyonel lüks” değil, temel bileşen olarak düşünmenizi öneriyoruz.

Genel bir kural olarak, hafif kullanımda (daha çok içerik görüntüleme, az sayıda quiz) 2 vCPU ve 4 GB RAM ile 40–50 eşzamanlı kullanıcı makul bir sınırdır. Düzenli quiz, ödev yükleme ve raporlama içeren ortamlarda 4 vCPU ve 8 GB RAM ile 100–200 eşzamanlı kullanıcıyı hedefleyebilirsiniz. Daha büyük kampüsler veya ulusal projelerde ise 8+ vCPU, 16+ GB RAM, ayrı veritabanı ve Redis sunucuları devreye girer. Ancak bunlar yalnızca başlangıç tahminleridir; gerçekçi planlama için kendi ortamınızda kısa süreli yük testleri yapmak ve PHP-FPM, veritabanı ile Redis metriklerini izlemek en sağlıklı yoldur. DCHost tarafında bu ölçümleri birlikte yapıp, somut veriye dayalı boyutlandırma öneriyoruz.

Öncelikle mimariyi bu pik yükleri kaldıracak şekilde planlamanız gerekir. PHP-FPM havuz ayarlarını (özellikle pm.max_children) gerçekçi testlerle belirleyin, veritabanında InnoDB bufffer pool’unu yeterli seviyeye getirin ve mutlaka Redis ile session/nesne önbelleği kullanın. Sınav saatinden önce gereksiz cron görevlerini geçici olarak yavaşlatmak veya yoğun zamanların dışına çekmek de faydalıdır. Ayrıca statik içerikleri (PDF, video) mümkün olduğunca CDN üzerinden sunarak uygulama sunucusunun yükünü azaltabilirsiniz. DCHost üzerinde, kritik sınav haftalarında kaynakları geçici olarak yükseltip, sonrasında geri düşürmek de sık kullandığımız pratik bir yaklaşımdır. Böylece hem performansı korur hem de maliyeti kontrol altında tutarsınız.