{"id":2827,"date":"2025-12-04T13:41:57","date_gmt":"2025-12-04T10:41:57","guid":{"rendered":"https:\/\/www.dchost.com\/blog\/moodle-ve-diger-lmsler-icin-hosting-performans-rehberi\/"},"modified":"2025-12-04T13:41:57","modified_gmt":"2025-12-04T10:41:57","slug":"moodle-ve-diger-lmsler-icin-hosting-performans-rehberi","status":"publish","type":"post","link":"https:\/\/www.dchost.com\/blog\/moodle-ve-diger-lmsler-icin-hosting-performans-rehberi\/","title":{"rendered":"Moodle ve Di\u011fer LMS\u2019ler \u0130\u00e7in Hosting Performans Rehberi"},"content":{"rendered":"<div class=\"dchost-blog-content-wrapper\"><div id=\"toc_container\" class=\"toc_transparent no_bullets\"><p class=\"toc_title\">\u0130&ccedil;indekiler<\/p><ul class=\"toc_list\"><li><a href=\"#Moodle_ve_LMS_Hosting_Performansini_Dogru_Kurmak_Neden_Zor_Geliyor\"><span class=\"toc_number toc_depth_1\">1<\/span> Moodle ve LMS Hosting Performans\u0131n\u0131 Do\u011fru Kurmak Neden Zor Geliyor?<\/a><\/li><li><a href=\"#Moodle_ve_Diger_LMSler_Performansi_Asil_Ne_Belirliyor\"><span class=\"toc_number toc_depth_1\">2<\/span> Moodle ve Di\u011fer LMS\u2019ler: Performans\u0131 As\u0131l Ne Belirliyor?<\/a><\/li><li><a href=\"#Dogru_Altyapiyi_Secmek_paylasimli_hosting_mi_VPS_mi_Dedicated_mi\"><span class=\"toc_number toc_depth_1\">3<\/span> Do\u011fru Altyap\u0131y\u0131 Se\u00e7mek: payla\u015f\u0131ml\u0131 hosting mi, VPS mi, Dedicated mi?<\/a><\/li><li><a href=\"#PHP_Katmani_Moodle_Performansinin_Ilk_Ayagi\"><span class=\"toc_number toc_depth_1\">4<\/span> PHP Katman\u0131: Moodle Performans\u0131n\u0131n \u0130lk Aya\u011f\u0131<\/a><ul><li><a href=\"#PHP_Surumu_Secimi\"><span class=\"toc_number toc_depth_2\">4.1<\/span> PHP S\u00fcr\u00fcm\u00fc Se\u00e7imi<\/a><\/li><li><a href=\"#PHP-FPM_Havuz_Ayarlari_pmmax_children_Nasil_Hesaplanir\"><span class=\"toc_number toc_depth_2\">4.2<\/span> PHP-FPM Havuz Ayarlar\u0131: pm.max_children Nas\u0131l Hesaplan\u0131r?<\/a><\/li><li><a href=\"#phpini_Limitleri_memory_limit_max_execution_time_upload_max_filesize\"><span class=\"toc_number toc_depth_2\">4.3<\/span> php.ini Limitleri: memory_limit, max_execution_time, upload_max_filesize<\/a><\/li><li><a href=\"#OPcache_Ayarlari_PHP_Kodunu_Sikistirilmis_Gibi_Hizlandirmak\"><span class=\"toc_number toc_depth_2\">4.4<\/span> OPcache Ayarlar\u0131: PHP Kodunu S\u0131k\u0131\u015ft\u0131r\u0131lm\u0131\u015f Gibi H\u0131zland\u0131rmak<\/a><\/li><\/ul><\/li><li><a href=\"#Veritabani_Katmani_MySQLMariaDBPostgreSQL_Ayarlari\"><span class=\"toc_number toc_depth_1\">5<\/span> Veritaban\u0131 Katman\u0131: MySQL\/MariaDB\/PostgreSQL Ayarlar\u0131<\/a><ul><li><a href=\"#InnoDB_ve_Karakter_Seti_Secimi\"><span class=\"toc_number toc_depth_2\">5.1<\/span> InnoDB ve Karakter Seti Se\u00e7imi<\/a><\/li><li><a href=\"#Temel_MySQLMariaDB_Tuning_Parametreleri\"><span class=\"toc_number toc_depth_2\">5.2<\/span> Temel MySQL\/MariaDB Tuning Parametreleri<\/a><\/li><li><a href=\"#Slow_Query_Log_ve_Indeksleme\"><span class=\"toc_number toc_depth_2\">5.3<\/span> Slow Query Log ve \u0130ndeksleme<\/a><\/li><\/ul><\/li><li><a href=\"#Onbellek_Katmani_Redis_OPcache_ve_Sayfa_Onbellegi\"><span class=\"toc_number toc_depth_1\">6<\/span> \u00d6nbellek Katman\u0131: Redis, OPcache ve Sayfa \u00d6nbelle\u011fi<\/a><ul><li><a href=\"#OPcache_Kod_Seviyesinde_Onbellek\"><span class=\"toc_number toc_depth_2\">6.1<\/span> OPcache: Kod Seviyesinde \u00d6nbellek<\/a><\/li><li><a href=\"#Redis_Memcached_Nesne_Onbellegi_ve_Session_Depolama\"><span class=\"toc_number toc_depth_2\">6.2<\/span> Redis \/ Memcached: Nesne \u00d6nbelle\u011fi ve Session Depolama<\/a><\/li><li><a href=\"#Sessionlari_Redise_Tasimak\"><span class=\"toc_number toc_depth_2\">6.3<\/span> Session\u2019lar\u0131 Redis\u2019e Ta\u015f\u0131mak<\/a><\/li><li><a href=\"#Tam_Sayfa_Onbellegi_ve_CDN_Kullanimi\"><span class=\"toc_number toc_depth_2\">6.4<\/span> Tam Sayfa \u00d6nbelle\u011fi ve CDN Kullan\u0131m\u0131<\/a><\/li><\/ul><\/li><li><a href=\"#Moodle_ve_LMS_Ozel_Senaryolari_Sinav_Donemi_Dosya_Depolama_ve_Cron\"><span class=\"toc_number toc_depth_1\">7<\/span> Moodle ve LMS \u00d6zel Senaryolar\u0131: S\u0131nav D\u00f6nemi, Dosya Depolama ve Cron<\/a><ul><li><a href=\"#Eszamanli_Kullanici_Hesabi_Kac_vCPU_Kac_GB_RAM\"><span class=\"toc_number toc_depth_2\">7.1<\/span> E\u015fzamanl\u0131 Kullan\u0131c\u0131 Hesab\u0131: Ka\u00e7 vCPU, Ka\u00e7 GB RAM?<\/a><\/li><li><a href=\"#Cron_Gorevleri_Sakince_Ama_Guclu_Calismali\"><span class=\"toc_number toc_depth_2\">7.2<\/span> Cron G\u00f6revleri: Sakince Ama G\u00fc\u00e7l\u00fc \u00c7al\u0131\u015fmal\u0131<\/a><\/li><li><a href=\"#Dosya_Depolama_Yerel_Disk_NFS_Object_Storage\"><span class=\"toc_number toc_depth_2\">7.3<\/span> Dosya Depolama: Yerel Disk, NFS, Object Storage<\/a><\/li><li><a href=\"#Guvenlik_ve_Ilk_Gun_Ayarlari\"><span class=\"toc_number toc_depth_2\">7.4<\/span> G\u00fcvenlik ve \u0130lk G\u00fcn Ayarlar\u0131<\/a><\/li><\/ul><\/li><li><a href=\"#DCHost_ile_Moodle_ve_LMS_Mimarisi_Kurarken_Yol_Haritasi\"><span class=\"toc_number toc_depth_1\">8<\/span> DCHost ile Moodle ve LMS Mimarisi Kurarken Yol Haritas\u0131<\/a><ul><li><a href=\"#1_Dogru_Sunucu_Tipini_Secin\"><span class=\"toc_number toc_depth_2\">8.1<\/span> 1. Do\u011fru Sunucu Tipini Se\u00e7in<\/a><\/li><li><a href=\"#2_PHP_Katmanini_LMSe_Gore_Optimize_Edin\"><span class=\"toc_number toc_depth_2\">8.2<\/span> 2. PHP Katman\u0131n\u0131 LMS\u2019e G\u00f6re Optimize Edin<\/a><\/li><li><a href=\"#3_Veritabanini_Gercekci_Yuk_Icin_Hazirlayin\"><span class=\"toc_number toc_depth_2\">8.3<\/span> 3. Veritaban\u0131n\u0131 Ger\u00e7ek\u00e7i Y\u00fck \u0130\u00e7in Haz\u0131rlay\u0131n<\/a><\/li><li><a href=\"#4_Redis_ile_Onbellek_ve_Session_Yonetimini_Guclendirin\"><span class=\"toc_number toc_depth_2\">8.4<\/span> 4. Redis ile \u00d6nbellek ve Session Y\u00f6netimini G\u00fc\u00e7lendirin<\/a><\/li><li><a href=\"#5_Izleme_Loglama_ve_Kapasite_Planlama\"><span class=\"toc_number toc_depth_2\">8.5<\/span> 5. \u0130zleme, Loglama ve Kapasite Planlama<\/a><\/li><\/ul><\/li><li><a href=\"#Ozet_ve_Son_Tavsiyeler\"><span class=\"toc_number toc_depth_1\">9<\/span> \u00d6zet ve Son Tavsiyeler<\/a><\/li><\/ul><\/div>\n<h2><span id=\"Moodle_ve_LMS_Hosting_Performansini_Dogru_Kurmak_Neden_Zor_Geliyor\">Moodle ve LMS Hosting Performans\u0131n\u0131 Do\u011fru Kurmak Neden Zor Geliyor?<\/span><\/h2>\n<p>Bir e-\u00f6\u011frenme platformu kurarken \u00e7o\u011fu ekip \u00f6nce m\u00fcfredat\u0131, i\u00e7erik \u00fcretimini ve kullan\u0131c\u0131 aray\u00fcz\u00fcn\u00fc planl\u0131yor. Teknik tarafta ise genellikle tek soru soruluyor: \u201cSunucu ka\u00e7 GB RAM olsun?\u201d Performans problemleri ise ancak ilk d\u00f6nem sonu s\u0131nav\u0131nda, y\u00fczlerce \u00f6\u011frencinin ayn\u0131 anda s\u0131nava girmeye \u00e7al\u0131\u015ft\u0131\u011f\u0131 anda fark ediliyor. Asl\u0131nda <strong>Moodle<\/strong> ve benzeri t\u00fcm LMS\u2019ler (Canvas, Open edX, Sakai, kurumsal LMS\u2019ler vb.) i\u00e7in performans\u0131 belirleyen \u015fey, yaln\u0131zca CPU ve RAM de\u011fil; <strong>PHP ayarlar\u0131, veritaban\u0131 yap\u0131land\u0131rmas\u0131 ve do\u011fru \u00f6nbellek stratejisi<\/strong>.<\/p>\n<p>Biz DCHost olarak e\u011fitim platformlar\u0131yla \u00e7al\u0131\u015fan \u00e7ok say\u0131da kurumun ortam\u0131n\u0131 y\u00f6netirken \u015funu g\u00f6rd\u00fck: Ayn\u0131 donan\u0131m \u00fczerinde, do\u011fru yap\u0131land\u0131r\u0131lm\u0131\u015f bir Moodle ortam\u0131, yanl\u0131\u015f ayarl\u0131 bir ortama g\u00f6re <strong>2\u20133 kat daha fazla e\u015fzamanl\u0131 kullan\u0131c\u0131y\u0131<\/strong> rahatl\u0131kla kald\u0131rabiliyor. \u00dcstelik bu fark \u00e7o\u011fu zaman sadece birka\u00e7 <code>php.ini<\/code>, <code>my.cnf<\/code> ve Redis ayar\u0131yla ortaya \u00e7\u0131k\u0131yor. Bu rehberde, Moodle ve di\u011fer PHP tabanl\u0131 LMS\u2019ler i\u00e7in <strong>hosting taraf\u0131nda yapman\u0131z gereken kritik ayarlar\u0131<\/strong>; PHP, veritaban\u0131 ve \u00f6nbellek katmanlar\u0131na odaklanarak ad\u0131m ad\u0131m anlataca\u011f\u0131z.<\/p>\n<p>E\u011fer genel mimari ve LMS se\u00e7imleri taraf\u0131nda daha geni\u015f bir \u00e7er\u00e7eve g\u00f6rmek isterseniz, daha \u00f6nce haz\u0131rlad\u0131\u011f\u0131m\u0131z <a href=\"https:\/\/www.dchost.com\/blog\/egitim-platformlari-icin-lms-hosting-cozumleri\/\">e\u011fitim platformlar\u0131 i\u00e7in LMS hosting \u00e7\u00f6z\u00fcmleri rehberimizi<\/a> de mutlaka inceleyin. Bu yaz\u0131da ise do\u011frudan performans\u0131n kalbine, yani sunucu ayarlar\u0131na odaklanaca\u011f\u0131z.<\/p>\n<h2><span id=\"Moodle_ve_Diger_LMSler_Performansi_Asil_Ne_Belirliyor\">Moodle ve Di\u011fer LMS\u2019ler: Performans\u0131 As\u0131l Ne Belirliyor?<\/span><\/h2>\n<p>Moodle gibi LMS\u2019ler klasik bir blog sitesinden farkl\u0131d\u0131r. Basit sayfa g\u00f6r\u00fcnt\u00fcleme yerine \u015fu tip y\u00fcklerle u\u011fra\u015f\u0131rs\u0131n\u0131z:<\/p>\n<ul>\n<li>Onlarca \u2013 y\u00fczlerce \u00f6\u011frencinin <strong>ayn\u0131 anda s\u0131nava ba\u015flamas\u0131<\/strong><\/li>\n<li>B\u00fcy\u00fck boyutlu PDF, video ve sunum dosyalar\u0131n\u0131n ayn\u0131 anda indirilmesi<\/li>\n<li>S\u00fcrekli \u00e7al\u0131\u015fan <strong>cron g\u00f6revleri<\/strong> (not hesaplama, raporlar, bildirim e-postalar\u0131)<\/li>\n<li>Yo\u011fun <strong>veritaban\u0131 yazma<\/strong> trafi\u011fi (soru cevaplar\u0131, loglar, oturum kay\u0131tlar\u0131)<\/li>\n<\/ul>\n<p>Dolay\u0131s\u0131yla performans i\u00e7in \u015fu \u00fc\u00e7 katmana \u00f6zellikle dikkat etmelisiniz:<\/p>\n<ul>\n<li><strong>PHP katman\u0131:<\/strong> PHP s\u00fcr\u00fcm\u00fc, PHP-FPM havuz ayarlar\u0131, bellek ve zaman limitleri, OPcache.<\/li>\n<li><strong>Veritaban\u0131 katman\u0131:<\/strong> MySQL\/MariaDB\/PostgreSQL yap\u0131land\u0131rmas\u0131, indeksler, ba\u011flant\u0131 limiti, buffer boyutlar\u0131.<\/li>\n<li><strong>\u00d6nbellek katman\u0131:<\/strong> OPcache, Redis\/Memcached, sayfa\/nesne \u00f6nbelle\u011fi, oturum (session) depolama.<\/li>\n<\/ul>\n<p>Do\u011fru tasarlanm\u0131\u015f bir LMS hosting ortam\u0131nda bu \u00fc\u00e7 katman uyumlu \u00e7al\u0131\u015f\u0131r. \u00d6rne\u011fin PHP taraf\u0131nda her istek h\u0131zl\u0131 \u00e7al\u0131\u015f\u0131rken, veritaban\u0131 gereksiz yere \u015fi\u015fmez, Redis oturum kilitlenmelerini azalt\u0131r, dosya sistemi de yedek ve g\u00fcvenlik taraf\u0131nda sorun \u00e7\u0131karmaz.<\/p>\n<h2><span id=\"Dogru_Altyapiyi_Secmek_paylasimli_hosting_mi_VPS_mi_Dedicated_mi\">Do\u011fru Altyap\u0131y\u0131 Se\u00e7mek: <a href=\"https:\/\/www.dchost.com\/tr\/web-hosting\">payla\u015f\u0131ml\u0131 hosting<\/a> mi, <a href=\"https:\/\/www.dchost.com\/tr\/vps\">VPS<\/a> mi, Dedicated mi?<\/span><\/h2>\n<p>Performans ayarlar\u0131na girmeden \u00f6nce, altyap\u0131 tipini netle\u015ftirmek gerekiyor. Moodle ve LMS d\u00fcnyas\u0131nda genel rehber \u015fu \u015fekilde:<\/p>\n<ul>\n<li><strong>K\u00fc\u00e7\u00fck \u00f6l\u00e7ek (50\u2013100 aktif kullan\u0131c\u0131, kurum i\u00e7i kurslar):<\/strong> \u0130yi yap\u0131land\u0131r\u0131lm\u0131\u015f bir <strong>VPS<\/strong> veya kaynaklar\u0131 g\u00fc\u00e7l\u00fc bir payla\u015f\u0131ml\u0131 hosting i\u015f g\u00f6rebilir.<\/li>\n<li><strong>Orta \u00f6l\u00e7ek (100\u2013500 e\u015fzamanl\u0131 kullan\u0131c\u0131, yo\u011fun s\u0131navlar):<\/strong> \u00d6nerimiz, en az 4 vCPU, 8\u201316 GB RAM, NVMe diskli bir <strong>VPS<\/strong> veya ayr\u0131lm\u0131\u015f kaynakl\u0131 \u00e7\u00f6z\u00fcm.<\/li>\n<li><strong>B\u00fcy\u00fck \u00f6l\u00e7ek (500+ e\u015fzamanl\u0131 kullan\u0131c\u0131, kamp\u00fcs \u00f6l\u00e7e\u011fi ya da ulusal projeler):<\/strong> Ayr\u0131 uygulama ve veritaban\u0131 sunucular\u0131, ayr\u0131 Redis, hatta gerekti\u011finde <strong>dedicated sunucu<\/strong> ya da \u00e7oklu VPS mimarisi.<\/li>\n<\/ul>\n<p>\u00d6zellikle payla\u015f\u0131ml\u0131 hosting kullan\u0131yorsan\u0131z, cPanel taraf\u0131ndaki <strong>CPU, IO, EP, RAM limitleri<\/strong> s\u0131k s\u0131k tavan yapabilir. Bu konuda detayl\u0131 sinyalleri <a href=\"https:\/\/www.dchost.com\/blog\/cpanelde-kaynak-limitleri-cpu-io-ep-ram-ve-resource-limit-reached-hatasi\/\">cPanel kaynak limitleri ve \u2018Resource Limit Reached\u2019 hatas\u0131<\/a> yaz\u0131m\u0131zda anlatm\u0131\u015ft\u0131k. Moodle gibi yo\u011fun veritaban\u0131 ve PHP i\u015flemi \u00fcreten uygulamalarda, genellikle bir noktadan sonra <strong>VPS\u2019e ge\u00e7mek<\/strong> ka\u00e7\u0131n\u0131lmaz hale geliyor.<\/p>\n<p>E\u011fer hali haz\u0131rda payla\u015f\u0131ml\u0131 ortamda Moodle \u00e7al\u0131\u015ft\u0131r\u0131yorsan\u0131z ve limitlere s\u00fcrekli \u00e7arp\u0131yorsan\u0131z, <a href=\"https:\/\/www.dchost.com\/blog\/paylasimli-hostingden-vpse-nasil-gecersin-kesintisiz-tasima-icin-sicacik-bir-kontrol-listesi\/\">payla\u015f\u0131ml\u0131 hosting\u2019den VPS\u2019e kesintisiz ge\u00e7i\u015f rehberimiz<\/a> planlama s\u00fcrecinde olduk\u00e7a i\u015finize yarayacakt\u0131r. DCHost taraf\u0131nda biz, bu ge\u00e7i\u015fleri m\u00fcmk\u00fcn oldu\u011funca s\u0131f\u0131r kesintiyle y\u00f6netmeye odaklan\u0131yoruz.<\/p>\n<h2><span id=\"PHP_Katmani_Moodle_Performansinin_Ilk_Ayagi\">PHP Katman\u0131: Moodle Performans\u0131n\u0131n \u0130lk Aya\u011f\u0131<\/span><\/h2>\n<p>Moodle ve \u00e7o\u011fu a\u00e7\u0131k kaynak LMS, PHP \u00fczerinde \u00e7al\u0131\u015f\u0131r. Bu nedenle PHP katman\u0131ndaki her yanl\u0131\u015f ayar, do\u011frudan yan\u0131t s\u00fcresine ve e\u015fzamanl\u0131 kullan\u0131c\u0131 kapasitesine yans\u0131r.<\/p>\n<h3><span id=\"PHP_Surumu_Secimi\">PHP S\u00fcr\u00fcm\u00fc Se\u00e7imi<\/span><\/h3>\n<p>Yeni Moodle s\u00fcr\u00fcmleri, PHP 8.x serisini hedefler. Genel tavsiyemiz:<\/p>\n<ul>\n<li>Desteklenen en g\u00fcncel <strong>PHP 8.x<\/strong> s\u00fcr\u00fcm\u00fcn\u00fc kullan\u0131n (\u00f6rne\u011fin 8.1 veya 8.2).<\/li>\n<li>Eski eklentiler sebebiyle daha d\u00fc\u015f\u00fck s\u00fcr\u00fcmde kalman\u0131z gerekiyorsa, mutlaka test ortam\u0131 kurun.<\/li>\n<\/ul>\n<p>PHP 8.x\u2019e ge\u00e7i\u015fte dikkat etmeniz gereken detaylar\u0131, <a href=\"https:\/\/www.dchost.com\/blog\/php-8-x-yukseltme-kontrol-listesi-wordpress-ve-laravelde-geriye-uyumluluk-opcache-preload-ve-fpm-havuz-ayarlari-nasil-tatli-tatli-kurulur\/\">PHP 8.x y\u00fckseltme kontrol listesi<\/a> yaz\u0131m\u0131zda uygulamal\u0131 anlatt\u0131k. Oradaki FPM ve OPcache prensipleri Moodle i\u00e7in de birebir ge\u00e7erlidir.<\/p>\n<h3><span id=\"PHP-FPM_Havuz_Ayarlari_pmmax_children_Nasil_Hesaplanir\">PHP-FPM Havuz Ayarlar\u0131: pm.max_children Nas\u0131l Hesaplan\u0131r?<\/span><\/h3>\n<p>PHP-FPM, her iste\u011fi bir \u201c\u00e7ocuk process\u201d ile i\u015fler. Moodle gibi sistemlerde en s\u0131k yap\u0131lan hata, ya \u00e7ok d\u00fc\u015f\u00fck ya da \u00e7ok y\u00fcksek <code>pm.max_children<\/code> de\u011feri kullanmakt\u0131r. Basit bir hesaplama yapal\u0131m:<\/p>\n<ol>\n<li>\u00d6nce bir test yap\u0131n ve bir Moodle iste\u011finin ortalama <strong>RAM t\u00fcketimini<\/strong> \u00f6l\u00e7\u00fcn (\u00f6rn. 60\u201380 MB).<\/li>\n<li>Sunucudaki toplam RAM\u2019den (\u00f6rne\u011fin 8 GB) i\u015fletim sistemi, veritaban\u0131 ve Redis i\u00e7in pay ay\u0131r\u0131n (\u00f6rn. 3\u20134 GB).<\/li>\n<li>Kalan RAM\u2019i tek bir PHP s\u00fcrecinin ortalama t\u00fcketimine b\u00f6l\u00fcn.<\/li>\n<\/ol>\n<p>\u00d6rne\u011fin:<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">Toplam RAM: 8 GB\nOS + DB + Redis: 3 GB\nPHP i\u00e7in kalan: 5 GB \u2248 5120 MB\nBir PHP s\u00fcreci ortalama: 80 MB\npm.max_children \u2248 5120 \/ 80 \u2248 64<\/code><\/pre>\n<p>Sonu\u00e7 olarak tipik bir ayar:<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">[moodle]\nuser = www-data\ngroup = www-data\nlisten = \/run\/php\/php-fpm-moodle.sock\npm = dynamic\npm.max_children = 60\npm.start_servers = 10\npm.min_spare_servers = 10\npm.max_spare_servers = 20\npm.max_requests = 500<\/code><\/pre>\n<p><code>pm.max_requests<\/code> de\u011ferini 300\u20131000 aral\u0131\u011f\u0131nda tutmak, haf\u0131za s\u0131z\u0131nt\u0131lar\u0131na kar\u015f\u0131 s\u00fcrecin zaman zaman yenilenmesini sa\u011flar.<\/p>\n<h3><span id=\"phpini_Limitleri_memory_limit_max_execution_time_upload_max_filesize\">php.ini Limitleri: memory_limit, max_execution_time, upload_max_filesize<\/span><\/h3>\n<p>Moodle\u2019da \u00f6zellikle dosya y\u00fckleme ve yedek alma i\u015flemleri i\u00e7in PHP limitlerini ger\u00e7ek\u00e7i de\u011ferlerde tutmal\u0131s\u0131n\u0131z:<\/p>\n<ul>\n<li><strong>memory_limit:<\/strong> En az <code>256M<\/code>, m\u00fcmk\u00fcnse <code>512M<\/code>. \u00c7ok mod\u00fcll\u00fc, yo\u011fun eklentili ortamlarda daha y\u00fcksek gerekebilir.<\/li>\n<li><strong>max_execution_time:<\/strong> Normal sayfa istekleri i\u00e7in 60 sn yeterli, ancak yedek alma \/ b\u00fcy\u00fck raporlar i\u00e7in komut sat\u0131r\u0131 betiklerinde daha y\u00fcksek olabilir.<\/li>\n<li><strong>upload_max_filesize ve post_max_size:<\/strong> Derslerde ne kadar b\u00fcy\u00fck dosyaya izin verecekseniz (\u00f6rne\u011fin 200 MB video), bu limitleri ona g\u00f6re ayarlay\u0131n.<\/li>\n<\/ul>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">memory_limit = 512M\nmax_execution_time = 60\nmax_input_time = 60\nupload_max_filesize = 200M\npost_max_size = 200M<\/code><\/pre>\n<h3><span id=\"OPcache_Ayarlari_PHP_Kodunu_Sikistirilmis_Gibi_Hizlandirmak\">OPcache Ayarlar\u0131: PHP Kodunu S\u0131k\u0131\u015ft\u0131r\u0131lm\u0131\u015f Gibi H\u0131zland\u0131rmak<\/span><\/h3>\n<p>OPcache, PHP dosyalar\u0131n\u0131 derlenmi\u015f halde bellekte tutar. LMS ortam\u0131nda CPU t\u00fcketimini ciddi \u015fekilde azalt\u0131r. \u00d6rnek bir ayar seti:<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">opcache.enable = 1\nopcache.enable_cli = 0\nopcache.memory_consumption = 256\nopcache.interned_strings_buffer = 16\nopcache.max_accelerated_files = 20000\nopcache.validate_timestamps = 1\nopcache.revalidate_freq = 60<\/code><\/pre>\n<p>Moodle kod taban\u0131 olduk\u00e7a geni\u015f oldu\u011fundan <code>opcache.memory_consumption<\/code>\u2019\u0131 128M yerine 192\u2013256M seviyelerinde tutmak, cache miss oran\u0131n\u0131 ciddi bi\u00e7imde d\u00fc\u015f\u00fcr\u00fcr.<\/p>\n<h2><span id=\"Veritabani_Katmani_MySQLMariaDBPostgreSQL_Ayarlari\">Veritaban\u0131 Katman\u0131: MySQL\/MariaDB\/PostgreSQL Ayarlar\u0131<\/span><\/h2>\n<p>LMS\u2019lerde as\u0131l darbo\u011faz \u00e7o\u011fu zaman PHP de\u011fil, veritaban\u0131d\u0131r. \u00d6zellikle s\u0131nav d\u00f6nemlerinde:<\/p>\n<ul>\n<li>Her soru kayd\u0131, her cevap, her log sat\u0131r\u0131 veritaban\u0131na yaz\u0131l\u0131r.<\/li>\n<li>E\u015fzamanl\u0131 kullan\u0131c\u0131 say\u0131s\u0131 artt\u0131k\u00e7a, ba\u011flant\u0131 say\u0131s\u0131 ve kilitlenmeler (lock) artar.<\/li>\n<\/ul>\n<p>Bu nedenle veritaban\u0131 sunucusunu hem <strong>kaynak<\/strong> hem de <strong>konfig\u00fcrasyon&lt;\/strong taraf\u0131nda iyi ayarlamak zorundas\u0131n\u0131z.<\/p>\n<h3><span id=\"InnoDB_ve_Karakter_Seti_Secimi\">InnoDB ve Karakter Seti Se\u00e7imi<\/span><\/h3>\n<p>MySQL\/MariaDB taraf\u0131nda Moodle i\u00e7in mutlaka <strong>InnoDB<\/strong> motorunu kullan\u0131n. Tablo motorlar\u0131n\u0131 kar\u0131\u015f\u0131k kullanmak (MyISAM + InnoDB) kilit y\u00f6netimi ve \u00e7\u00f6kme sonras\u0131 kurtarma s\u00fcre\u00e7lerini zorla\u015ft\u0131r\u0131r.<\/p>\n<p>Karakter seti i\u00e7in \u00f6nerimiz:<\/p>\n<ul>\n<li><strong>utf8mb4<\/strong> (tam Unicode deste\u011fi, emoji d\u00e2hil)<\/li>\n<li>S\u0131ralama (collation) olarak <code>utf8mb4_unicode_ci<\/code> veya yeni s\u00fcr\u00fcmlerde <code>utf8mb4_0900_ai_ci<\/code><\/li>\n<\/ul>\n<h3><span id=\"Temel_MySQLMariaDB_Tuning_Parametreleri\">Temel MySQL\/MariaDB Tuning Parametreleri<\/span><\/h3>\n<p>Detayl\u0131 bir veritaban\u0131 tuning rehberi i\u00e7in <a href=\"https:\/\/www.dchost.com\/blog\/woocommerce-icin-mysql-innodb-tuning-kontrol-listesi-buffer-pool-indeksleme-ve-slow-query-analizi-nasil-akillica-yapilir\/\">MySQL\/InnoDB tuning kontrol listemizden<\/a> yararlanabilirsiniz. Moodle senaryosu i\u00e7in \u00f6zetle \u015fu parametreler kritik:<\/p>\n<ul>\n<li><strong>innodb_buffer_pool_size:<\/strong> Sunucu RAM\u2019inin %50\u201370\u2019i (sadece DB sunucusuysa). \u00d6rne\u011fin 8 GB RAM\u2019li DB i\u00e7in 4\u20135 GB.<\/li>\n<li><strong>innodb_log_file_size:<\/strong> Yo\u011fun yazma yapan sistemlerde 512M\u20131G seviyeleri mant\u0131kl\u0131.<\/li>\n<li><strong>max_connections:<\/strong> PHP-FPM\u2019deki maksimum \u00e7ocuk process say\u0131s\u0131n\u0131 (~50\u2013100) biraz \u00fczerinde tutun (\u00f6rne\u011fin 150\u2013200).<\/li>\n<li><strong>query_cache:<\/strong> Yeni MySQL s\u00fcr\u00fcmlerinde kald\u0131r\u0131ld\u0131, varsa devre d\u0131\u015f\u0131 b\u0131rak\u0131n.<\/li>\n<\/ul>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">[mysqld]\ninnodb_buffer_pool_size = 4G\ninnodb_log_file_size = 1G\nmax_connections = 200\ninnodb_flush_log_at_trx_commit = 1\ninnodb_file_per_table = 1\nsql_mode = STRICT_ALL_TABLES<\/code><\/pre>\n<h3><span id=\"Slow_Query_Log_ve_Indeksleme\">Slow Query Log ve \u0130ndeksleme<\/span><\/h3>\n<p>Moodle, mod\u00fcl ve eklenti yap\u0131s\u0131 gere\u011fi bazen karma\u015f\u0131k SQL sorgular\u0131 \u00fcretebilir. \u00d6zellikle raporlama ve log tablolar\u0131nda, do\u011fru indeksler yoksa sorgu s\u00fcreleri saniyeleri bulabilir.<\/p>\n<ul>\n<li><strong>slow_query_log<\/strong>\u2019u aktif edin, 1 saniyeden uzun s\u00fcren sorgular\u0131 kaydedin.<\/li>\n<li>D\u00fczenli aral\u0131klarla slow query logunu analiz ederek, eksik indeksleri ekleyin.<\/li>\n<li>En h\u0131zl\u0131 b\u00fcy\u00fcyen tablolar\u0131 (\u00f6rne\u011fin loglar, quiz_attempts) periyodik bak\u0131mda g\u00f6zden ge\u00e7irin.<\/li>\n<\/ul>\n<p>Veri hacmi b\u00fcy\u00fcd\u00fck\u00e7e, <strong>yedekleme stratejiniz<\/strong> de kritik hale gelir. Bu konuda <a href=\"https:\/\/www.dchost.com\/blog\/mysql-mariadb-yedekleme-stratejileri-mysqldump-mi-xtrabackup-mi-ve-point%e2%80%91in%e2%80%91time-recovery-ne-zaman\/\">MySQL\/MariaDB yedekleme stratejileri rehberimiz<\/a> LMS veritabanlar\u0131 i\u00e7in de do\u011frudan uygulanabilir.<\/p>\n<h2><span id=\"Onbellek_Katmani_Redis_OPcache_ve_Sayfa_Onbellegi\">\u00d6nbellek Katman\u0131: Redis, OPcache ve Sayfa \u00d6nbelle\u011fi<\/span><\/h2>\n<p>\u00d6nbellekleme, Moodle performans\u0131n\u0131 2\u20133 kat iyile\u015ftirebilecek kadar g\u00fc\u00e7l\u00fc bir ara\u00e7t\u0131r. Do\u011fru kurguland\u0131\u011f\u0131nda hem veritaban\u0131 y\u00fck\u00fcn\u00fc azalt\u0131r hem de PHP taraf\u0131ndaki yan\u0131t s\u00fcresini d\u00fc\u015f\u00fcr\u00fcr.<\/p>\n<h3><span id=\"OPcache_Kod_Seviyesinde_Onbellek\">OPcache: Kod Seviyesinde \u00d6nbellek<\/span><\/h3>\n<p>OPcache ayarlar\u0131n\u0131 yukar\u0131da anlatt\u0131k; burada vurgulamak gereken nokta \u015fu: Moodle \u00e7ekirde\u011fi ve eklentileri s\u0131k g\u00fcncellenmiyorsa, <code>opcache.revalidate_freq<\/code> de\u011ferini 60\u2013120 saniye gibi daha y\u00fcksek tutabilir, b\u00f6ylece her istekte dosyalar\u0131 kontrol etme maliyetini d\u00fc\u015f\u00fcrebilirsiniz.<\/p>\n<h3><span id=\"Redis_Memcached_Nesne_Onbellegi_ve_Session_Depolama\">Redis \/ Memcached: Nesne \u00d6nbelle\u011fi ve Session Depolama<\/span><\/h3>\n<p>Moodle, Redis\u2019i hem <strong>cache<\/strong> hem de <strong>session store<\/strong> olarak kullanabilecek \u015fekilde yap\u0131land\u0131r\u0131labilir. Bizim saha deneyimimiz, \u00f6zellikle s\u0131nav d\u00f6nemlerinde Redis\u2019in:<\/p>\n<ul>\n<li>Veritaban\u0131 ba\u011flant\u0131 y\u00fck\u00fcn\u00fc ciddi bi\u00e7imde azaltt\u0131\u011f\u0131,<\/li>\n<li>Oturum kilitlenmelerini (session locking) minimize etti\u011fi,<\/li>\n<li>Yan\u0131t s\u00fcrelerinde g\u00f6zle g\u00f6r\u00fcl\u00fcr bir d\u00fc\u015f\u00fc\u015f sa\u011flad\u0131\u011f\u0131<\/li>\n<\/ul>\n<p>y\u00f6n\u00fcnde. Redis\u2019in temelleri ve performansa etkisi i\u00e7in <a href=\"https:\/\/www.dchost.com\/blog\/redis-cache-nedir-hosting-performansini-nasil-artirir\/\">Redis cache\u2019in hosting performans\u0131n\u0131 nas\u0131l art\u0131rd\u0131\u011f\u0131n\u0131 anlatt\u0131\u011f\u0131m\u0131z rehbere<\/a> g\u00f6z atabilirsiniz.<\/p>\n<p>Tipik bir Moodle Redis yap\u0131land\u0131rmas\u0131nda:<\/p>\n<ul>\n<li>Redis, ayr\u0131 bir servis (m\u00fcmk\u00fcnse ayr\u0131 sunucu) olarak \u00e7al\u0131\u015f\u0131r.<\/li>\n<li>Session\u2019lar Redis\u2019e ta\u015f\u0131n\u0131r, b\u00f6ylece PHP-FPM process\u2019leri aras\u0131 \u00e7ak\u0131\u015fmalar azal\u0131r.<\/li>\n<\/ul>\n<h3><span id=\"Sessionlari_Redise_Tasimak\">Session\u2019lar\u0131 Redis\u2019e Ta\u015f\u0131mak<\/span><\/h3>\n<p>PHP taraf\u0131nda session handler olarak Redis kullanmak i\u00e7in:<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">session.save_handler = redis\nsession.save_path = &quot;tcp:\/\/127.0.0.1:6379?database=2&amp;prefix=moodle_sess_&quot;<\/code><\/pre>\n<p>Bu sayede:<\/p>\n<ul>\n<li>NFS veya ortak dosya sistemine ba\u011fl\u0131 kalmazs\u0131n\u0131z.<\/li>\n<li>Session verileri RAM\u2019de tutuldu\u011fu i\u00e7in okuma\/yazma gecikmesi d\u00fc\u015fer.<\/li>\n<\/ul>\n<h3><span id=\"Tam_Sayfa_Onbellegi_ve_CDN_Kullanimi\">Tam Sayfa \u00d6nbelle\u011fi ve CDN Kullan\u0131m\u0131<\/span><\/h3>\n<p>Moodle gibi LMS\u2019lerde t\u00fcm sayfalar\u0131 agresif \u015fekilde cache\u2019lemek m\u00fcmk\u00fcn de\u011fildir; \u00e7\u00fcnk\u00fc kullan\u0131c\u0131ya \u00f6zel i\u00e7erikler, s\u0131nav durumlar\u0131, sonu\u00e7lar gibi dinamik b\u00f6l\u00fcmler yo\u011fundur. Yine de:<\/p>\n<ul>\n<li>Statik dosyalar (CSS, JS, resimler) i\u00e7in <strong>CDN<\/strong> kullanmak,<\/li>\n<li>Ders i\u00e7eri\u011fi gibi s\u0131k de\u011fi\u015fmeyen sayfalar i\u00e7in k\u0131sa s\u00fcreli (<code>stale-while-revalidate<\/code> mant\u0131\u011f\u0131nda) \u00f6nbellek<\/li>\n<\/ul>\n<p>hem TTFB\u2019yi hem de bant geni\u015fli\u011fi t\u00fcketimini \u00f6nemli \u00f6l\u00e7\u00fcde azaltabilir. CDN taraf\u0131ndaki maliyet ve performans dengesine ilgi duyuyorsan\u0131z, <a href=\"https:\/\/www.dchost.com\/blog\/cdn-trafik-maliyetlerini-kontrol-altina-almak-origin-pull-cache-hit-ratio-ve-bolgesel-fiyatlandirma\/\">CDN trafik maliyetlerini kontrol alt\u0131na alma rehberimize<\/a> de g\u00f6z atabilirsiniz.<\/p>\n<h2><span id=\"Moodle_ve_LMS_Ozel_Senaryolari_Sinav_Donemi_Dosya_Depolama_ve_Cron\">Moodle ve LMS \u00d6zel Senaryolar\u0131: S\u0131nav D\u00f6nemi, Dosya Depolama ve Cron<\/span><\/h2>\n<p>Moodle\u2019\u0131 klasik bir i\u00e7erik sitesinden ay\u0131ran en kritik farklar, yo\u011fun e\u015fzamanl\u0131 kullan\u0131m anlar\u0131 ve arka planda \u00e7al\u0131\u015fan cron g\u00f6revleridir.<\/p>\n<h3><span id=\"Eszamanli_Kullanici_Hesabi_Kac_vCPU_Kac_GB_RAM\">E\u015fzamanl\u0131 Kullan\u0131c\u0131 Hesab\u0131: Ka\u00e7 vCPU, Ka\u00e7 GB RAM?<\/span><\/h3>\n<p>Kaba ama pratik bir kural seti:<\/p>\n<ul>\n<li>Hafif kullan\u0131m (sadece i\u00e7erik g\u00f6r\u00fcnt\u00fcleme, az say\u0131da quiz): 2 vCPU, 4 GB RAM ile ~50 e\u015fzamanl\u0131 kullan\u0131c\u0131.<\/li>\n<li>Orta kullan\u0131m (d\u00fczenli quiz, \u00f6dev y\u00fckleme): 4 vCPU, 8 GB RAM ile 100\u2013200 e\u015fzamanl\u0131 kullan\u0131c\u0131.<\/li>\n<li>A\u011f\u0131r kullan\u0131m (b\u00fcy\u00fck kamp\u00fcs, s\u0131nav haftas\u0131): 8+ vCPU, 16+ GB RAM, ayr\u0131 veritaban\u0131 ve Redis.<\/li>\n<\/ul>\n<p>Burada \u201ce\u015fzamanl\u0131 kullan\u0131c\u0131\u201dy\u0131, ayn\u0131 1\u20132 dakika i\u00e7inde aktif i\u015flem yapan kullan\u0131c\u0131lar olarak d\u00fc\u015f\u00fcnmek gerekir; toplam kay\u0131tl\u0131 kullan\u0131c\u0131 de\u011fil.<\/p>\n<h3><span id=\"Cron_Gorevleri_Sakince_Ama_Guclu_Calismali\">Cron G\u00f6revleri: Sakince Ama G\u00fc\u00e7l\u00fc \u00c7al\u0131\u015fmal\u0131<\/span><\/h3>\n<p>Moodle\u2019\u0131n cron sistemi; not hesaplama, rapor \u00fcretme, yedek alma ve bildirim e-postalar\u0131 gibi i\u015flemleri y\u00fcr\u00fct\u00fcr. Tavsiyelerimiz:<\/p>\n<ul>\n<li>Cron\u2019u <strong>ger\u00e7ek cron<\/strong> ile tetikleyin, web trafi\u011fine b\u0131rakmay\u0131n.<\/li>\n<li>Her dakikada bir \u00e7al\u0131\u015fan bir cron girdisi kullan\u0131n:<\/li>\n<\/ul>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">* * * * * \/usr\/bin\/php \/var\/www\/moodle\/admin\/cli\/cron.php &gt;\/dev\/null 2&gt;&amp;1<\/code><\/pre>\n<p>E\u011fer cron g\u00f6revleri sayfa istekleriyle ayn\u0131 anda yo\u011fun kaynak t\u00fcketiyorsa, ayr\u0131 bir VPS veya en az\u0131ndan d\u00fc\u015f\u00fck \u00f6ncelikli (nice de\u011feri y\u00fcksek) bir process olarak \u00e7al\u0131\u015ft\u0131rmay\u0131 d\u00fc\u015f\u00fcnebilirsiniz.<\/p>\n<h3><span id=\"Dosya_Depolama_Yerel_Disk_NFS_Object_Storage\">Dosya Depolama: Yerel Disk, NFS, Object Storage<\/span><\/h3>\n<p>Moodle\u2019da ders dosyalar\u0131 h\u0131zla y\u00fczlerce GB\u2019a \u00e7\u0131kabilir. Burada \u00fc\u00e7 temel yakla\u015f\u0131m var:<\/p>\n<ul>\n<li><strong>Yerel NVMe disk:<\/strong> K\u00fc\u00e7\u00fck\/orta \u00f6l\u00e7ekli LMS\u2019ler i\u00e7in en basit ve performansl\u0131 \u00e7\u00f6z\u00fcm.<\/li>\n<li><strong>NFS payla\u015f\u0131ml\u0131 depolama:<\/strong> \u00c7oklu uygulama sunucusunun ayn\u0131 dosya alan\u0131n\u0131 kullanmas\u0131 gerekti\u011finde devreye girer, fakat yanl\u0131\u015f kurulumda gecikme ve kilit problemleri do\u011furabilir.<\/li>\n<li><strong>Object storage (S3 uyumlu):<\/strong> \u00c7ok b\u00fcy\u00fck ar\u015fivler i\u00e7in idealdir; dosyalar farkl\u0131 bir depoda, uygulama sunucusundan ayr\u0131k tutulur.<\/li>\n<\/ul>\n<p>Object storage ve S3 uyumlu depolama tasarlarken dikkat edilmesi gerekenleri <a href=\"https:\/\/www.dchost.com\/blog\/object-storage-vs-block-storage-vs-file-storage-web-uygulamalari-ve-yedekler-icin-dogru-secim\/\">object vs block vs file storage rehberimizde<\/a> detayl\u0131 anlat\u0131yoruz. Moodle dosya alan\u0131n\u0131z\u0131 b\u00fcy\u00fctmeden \u00f6nce bu yaz\u0131ya da g\u00f6z atman\u0131z\u0131 \u00f6neririz.<\/p>\n<h3><span id=\"Guvenlik_ve_Ilk_Gun_Ayarlari\">G\u00fcvenlik ve \u0130lk G\u00fcn Ayarlar\u0131<\/span><\/h3>\n<p>Performans kadar \u00f6nemli bir di\u011fer konu da g\u00fcvenlik. \u00d6zellikle \u00f6\u011frencilerin ki\u015fisel verileri, s\u0131nav sorular\u0131 ve notlar s\u00f6z konusu oldu\u011funda, tek bir zafiyet \u00e7ok b\u00fcy\u00fck sorunlara yol a\u00e7abilir. Yeni bir Moodle\/LMS kurarken, <a href=\"https:\/\/www.dchost.com\/blog\/yeni-acilan-web-siteleri-icin-hosting-guvenlik-check-listi-ilk-gunden-yapilmasi-gereken-20-ayar\/\">ilk g\u00fcnden yap\u0131lmas\u0131 gereken hosting g\u00fcvenlik ayarlar\u0131<\/a> kontrol listemizi ad\u0131m ad\u0131m uygulaman\u0131z, hem performans\u0131 koruyacak hem de sald\u0131r\u0131 y\u00fczeyini minimize edecektir.<\/p>\n<h2><span id=\"DCHost_ile_Moodle_ve_LMS_Mimarisi_Kurarken_Yol_Haritasi\">DCHost ile Moodle ve LMS Mimarisi Kurarken Yol Haritas\u0131<\/span><\/h2>\n<p>\u015eimdiye kadar anlatt\u0131klar\u0131m\u0131z\u0131 pratik bir yol haritas\u0131na d\u00f6kelim. DCHost \u00fczerinde tipik bir Moodle\/LMS ortam\u0131n\u0131 kurgularken \u015fu ad\u0131mlar\u0131 izlemeyi \u00f6neriyoruz:<\/p>\n<h3><span id=\"1_Dogru_Sunucu_Tipini_Secin\">1. Do\u011fru Sunucu Tipini Se\u00e7in<\/span><\/h3>\n<ul>\n<li><strong>Ba\u015flang\u0131\u00e7 \/ Pilot ortam:<\/strong> 2\u20134 vCPU, 4\u20138 GB RAM, NVMe diskli bir VPS.<\/li>\n<li><strong>Canl\u0131 kurum i\u00e7i kullan\u0131m:<\/strong> 4\u20138 vCPU, 8\u201316 GB RAM, ayr\u0131 veritaban\u0131 VPS\u2019i veya g\u00fc\u00e7l\u00fc tek VPS.<\/li>\n<li><strong>B\u00fcy\u00fck kurum \/ \u00fcniversite:<\/strong> Ayr\u0131 uygulama, veritaban\u0131 ve Redis sunucular\u0131; iste\u011fe ba\u011fl\u0131 olarak object storage entegrasyonu.<\/li>\n<\/ul>\n<h3><span id=\"2_PHP_Katmanini_LMSe_Gore_Optimize_Edin\">2. PHP Katman\u0131n\u0131 LMS\u2019e G\u00f6re Optimize Edin<\/span><\/h3>\n<ul>\n<li>PHP 8.x s\u00fcr\u00fcm\u00fcn\u00fc kullan\u0131n, FPM havuz ayarlar\u0131n\u0131 \u00f6l\u00e7\u00fcm yaparak belirleyin.<\/li>\n<li>OPcache\u2019i en az 128\u2013256 MB bellekle etkinle\u015ftirin.<\/li>\n<li><code>memory_limit<\/code>, <code>upload_max_filesize<\/code> ve <code>max_execution_time<\/code> de\u011ferlerini ders i\u00e7eriklerinize g\u00f6re ayarlay\u0131n.<\/li>\n<\/ul>\n<p>PHP taraf\u0131ndaki genel optimizasyon prensipleri i\u00e7in, <a href=\"https:\/\/www.dchost.com\/blog\/wordpress-icin-sunucu-tarafi-optimizasyon-php-fpm-opcache-redis-ve-mysql-ile-neyi-ne-zaman-nasil-ayarlamalisin\/\">PHP-FPM, OPcache ve Redis ile sunucu taraf\u0131 optimizasyon rehberimizi<\/a> Moodle a\u00e7\u0131s\u0131ndan da referans olarak kullanabilirsiniz.<\/p>\n<h3><span id=\"3_Veritabanini_Gercekci_Yuk_Icin_Hazirlayin\">3. Veritaban\u0131n\u0131 Ger\u00e7ek\u00e7i Y\u00fck \u0130\u00e7in Haz\u0131rlay\u0131n<\/span><\/h3>\n<ul>\n<li>MySQL\/MariaDB\u2019de InnoDB ve utf8mb4 kullan\u0131n.<\/li>\n<li>Veri hacmine g\u00f6re <code>innodb_buffer_pool_size<\/code>\u2019\u0131 RAM\u2019in %50\u201370\u2019i seviyesine getirin.<\/li>\n<li>Slow query logu a\u00e7arak d\u00fczenli indeksleme ve sorgu iyile\u015ftirmesi yap\u0131n.<\/li>\n<li>Yedeklemeyi otomatikle\u015ftirip, geri d\u00f6n\u00fc\u015f testlerini ihmal etmeyin.<\/li>\n<\/ul>\n<h3><span id=\"4_Redis_ile_Onbellek_ve_Session_Yonetimini_Guclendirin\">4. Redis ile \u00d6nbellek ve Session Y\u00f6netimini G\u00fc\u00e7lendirin<\/span><\/h3>\n<ul>\n<li>Redis\u2019i ayr\u0131 bir servis veya VPS olarak konumland\u0131r\u0131n.<\/li>\n<li>PHP session\u2019lar\u0131n\u0131 Redis\u2019e ta\u015f\u0131y\u0131n, Moodle\u2019\u0131n cache store\u2019lar\u0131n\u0131 Redis\u2019e y\u00f6nlendirin.<\/li>\n<li>Alarm ve izleme kurarak Redis\u2019in bellek kullan\u0131m\u0131n\u0131 ve gecikmesini takip edin.<\/li>\n<\/ul>\n<h3><span id=\"5_Izleme_Loglama_ve_Kapasite_Planlama\">5. \u0130zleme, Loglama ve Kapasite Planlama<\/span><\/h3>\n<p>Performans\u0131 \u201chissetmek\u201d yetmez, \u00f6l\u00e7mek gerekir. \u00d6zellikle:<\/p>\n<ul>\n<li>CPU, RAM, disk IO, a\u011f trafi\u011fi grafikleri<\/li>\n<li>Veritaban\u0131 ba\u011flant\u0131 say\u0131s\u0131 ve yava\u015f sorgu say\u0131s\u0131<\/li>\n<li>PHP-FPM havuzundaki bekleyen istek (queue) durumu<\/li>\n<\/ul>\n<p>gibi metrikleri d\u00fczenli takip ederek, bir sonraki s\u0131nav d\u00f6nemi \u00f6ncesinde kapasite artt\u0131rma kararlar\u0131n\u0131 veriyle verebilirsiniz.<\/p>\n<h2><span id=\"Ozet_ve_Son_Tavsiyeler\">\u00d6zet ve Son Tavsiyeler<\/span><\/h2>\n<p>Moodle ve di\u011fer LMS\u2019ler i\u00e7in performans denince akla genellikle \u201cdaha fazla RAM, daha \u00e7ok CPU\u201d geliyor. Ancak DCHost taraf\u0131nda y\u00fczlerce proje deneyiminden biliyoruz ki, \u00e7o\u011fu zaman as\u0131l fark\u0131 yaratan <strong>do\u011fru PHP, veritaban\u0131 ve \u00f6nbellek ayarlar\u0131d\u0131r<\/strong>. PHP-FPM havuzunu ger\u00e7ek y\u00fck testlerine g\u00f6re ayarlamak, OPcache\u2019i yeterli bellekle \u00e7al\u0131\u015ft\u0131rmak, MySQL\/MariaDB taraf\u0131nda InnoDB ve buffer pool\u2019u do\u011fru boyutland\u0131rmak ve mutlaka Redis ile oturum\/nesne \u00f6nbelle\u011fi kullanmak; ayn\u0131 donan\u0131mda 2\u20133 kat daha fazla e\u015fzamanl\u0131 kullan\u0131c\u0131y\u0131 sorunsuz \u015fekilde ta\u015f\u0131man\u0131za imk\u00e2n verir.<\/p>\n<p>Bir sonraki s\u0131nav d\u00f6neminde \u201csite a\u00e7\u0131lm\u0131yor\u201d pani\u011fini ya\u015famamak i\u00e7in, bu rehberdeki ayarlar\u0131 ad\u0131m ad\u0131m uygulay\u0131p, \u00fczerine kendi kurumunuzun kullan\u0131c\u0131 al\u0131\u015fkanl\u0131klar\u0131na g\u00f6re ufak ince ayarlar yapman\u0131z\u0131 \u00f6neriyoruz. E\u011fer hangi noktadan ba\u015flaman\u0131z gerekti\u011fi konusunda karars\u0131zsan\u0131z, ortam\u0131n\u0131z\u0131 birlikte g\u00f6zden ge\u00e7irip <strong>DCHost VPS, <a href=\"https:\/\/www.dchost.com\/tr\/fiziksel-sunucu\">dedicated sunucu<\/a> veya colocation<\/strong> \u00e7\u00f6z\u00fcmlerimizden hangisinin sizin senaryonuza en uygun oldu\u011funu beraber netle\u015ftirebiliriz.<\/p>\n<p>Do\u011fru yap\u0131land\u0131r\u0131lm\u0131\u015f bir Moodle\/LMS ortam\u0131, sadece h\u0131zl\u0131 ve stabil \u00e7al\u0131\u015fmakla kalmaz; ayn\u0131 zamanda s\u00fcrd\u00fcr\u00fclebilir maliyet, g\u00fc\u00e7l\u00fc g\u00fcvenlik ve kolay y\u00f6netim sa\u011flar. Altyap\u0131y\u0131 bir kez sa\u011flam kurdu\u011funuzda, enerjinizi \u00f6\u011frencilerinize ve i\u00e7erik kalitesine ay\u0131rmak \u00e7ok daha kolay hale gelir.<\/p>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>\u0130&ccedil;indekiler1 Moodle ve LMS Hosting Performans\u0131n\u0131 Do\u011fru Kurmak Neden Zor Geliyor?2 Moodle ve Di\u011fer LMS\u2019ler: Performans\u0131 As\u0131l Ne Belirliyor?3 Do\u011fru Altyap\u0131y\u0131 Se\u00e7mek: payla\u015f\u0131ml\u0131 hosting mi, VPS mi, Dedicated mi?4 PHP Katman\u0131: Moodle Performans\u0131n\u0131n \u0130lk Aya\u011f\u01314.1 PHP S\u00fcr\u00fcm\u00fc Se\u00e7imi4.2 PHP-FPM Havuz Ayarlar\u0131: pm.max_children Nas\u0131l Hesaplan\u0131r?4.3 php.ini Limitleri: memory_limit, max_execution_time, upload_max_filesize4.4 OPcache Ayarlar\u0131: PHP Kodunu S\u0131k\u0131\u015ft\u0131r\u0131lm\u0131\u015f Gibi [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":2828,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[26],"tags":[],"class_list":["post-2827","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-teknoloji"],"_links":{"self":[{"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/posts\/2827","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/comments?post=2827"}],"version-history":[{"count":0,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/posts\/2827\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/media\/2828"}],"wp:attachment":[{"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/media?parent=2827"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/categories?post=2827"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/tags?post=2827"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}