{"id":1238,"date":"2025-11-03T17:49:13","date_gmt":"2025-11-03T14:49:13","guid":{"rendered":"https:\/\/www.dchost.com\/blog\/wordpress-icin-sunucu-tarafi-optimizasyon-php-fpm-opcache-redis-ve-mysql-ile-neyi-ne-zaman-nasil-ayarlamalisin\/"},"modified":"2025-11-03T17:49:13","modified_gmt":"2025-11-03T14:49:13","slug":"wordpress-icin-sunucu-tarafi-optimizasyon-php-fpm-opcache-redis-ve-mysql-ile-neyi-ne-zaman-nasil-ayarlamalisin","status":"publish","type":"post","link":"https:\/\/www.dchost.com\/blog\/wordpress-icin-sunucu-tarafi-optimizasyon-php-fpm-opcache-redis-ve-mysql-ile-neyi-ne-zaman-nasil-ayarlamalisin\/","title":{"rendered":"WordPress i\u00e7in Sunucu Taraf\u0131 Optimizasyon: PHP-FPM, OPcache, Redis ve MySQL ile Neyi, Ne Zaman, Nas\u0131l Ayarlamal\u0131s\u0131n?"},"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=\"#Bir_WordPress_Sitesini_Hizlandirmanin_Sessiz_Yolu_Sunucu_Tarafi_Ayarlar\"><span class=\"toc_number toc_depth_1\">1<\/span> Bir WordPress Sitesini H\u0131zland\u0131rman\u0131n Sessiz Yolu: Sunucu Taraf\u0131 Ayarlar<\/a><\/li><li><a href=\"#PHP-FPM_Sirayi_Duzenleyen_Sessiz_Calisanlar\"><span class=\"toc_number toc_depth_1\">2<\/span> PHP-FPM: S\u0131ray\u0131 D\u00fczenleyen Sessiz \u00c7al\u0131\u015fanlar<\/a><ul><li><a href=\"#PHP_isteklerini_kuyruktan_sahneye_cikaran_duzen\"><span class=\"toc_number toc_depth_2\">2.1<\/span> PHP isteklerini kuyruktan sahneye \u00e7\u0131karan d\u00fczen<\/a><\/li><li><a href=\"#Baslangic_icin_guvenli_bir_havuz_tarifi\"><span class=\"toc_number toc_depth_2\">2.2<\/span> Ba\u015flang\u0131\u00e7 i\u00e7in g\u00fcvenli bir havuz tarifi<\/a><\/li><li><a href=\"#Bellek_CPU_ve_ayarlarin_karsilikli_sohbeti\"><span class=\"toc_number toc_depth_2\">2.3<\/span> Bellek, CPU ve ayarlar\u0131n kar\u015f\u0131l\u0131kl\u0131 sohbeti<\/a><\/li><\/ul><\/li><li><a href=\"#OPcache_Ayni_Dosyayi_Ikinci_Kez_Derletmeme_Sanati\"><span class=\"toc_number toc_depth_1\">3<\/span> OPcache: Ayn\u0131 Dosyay\u0131 \u0130kinci Kez Derletmeme Sanat\u0131<\/a><ul><li><a href=\"#Bir_kere_derle_tekrar_kullan_mantigi\"><span class=\"toc_number toc_depth_2\">3.1<\/span> \u201cBir kere derle, tekrar kullan\u201d mant\u0131\u011f\u0131<\/a><\/li><\/ul><\/li><li><a href=\"#Redis_Kalici_Nesne_Onbellegi_ile_WordPressi_Nefeslendir\"><span class=\"toc_number toc_depth_1\">4<\/span> Redis: Kal\u0131c\u0131 Nesne \u00d6nbelle\u011fi ile WordPress\u2019i Nefeslendir<\/a><ul><li><a href=\"#Sorgu_tekrarlarini_hafizaya_almanin_pratik_yolu\"><span class=\"toc_number toc_depth_2\">4.1<\/span> Sorgu tekrarlar\u0131n\u0131 haf\u0131zaya alman\u0131n pratik yolu<\/a><\/li><\/ul><\/li><li><a href=\"#MySQL_Ince_Ayarlari_InnoDByi_Rahatlat_Sorgulari_Sakinlestir\"><span class=\"toc_number toc_depth_1\">5<\/span> MySQL \u0130nce Ayarlar\u0131: InnoDB\u2019yi Rahatlat, Sorgular\u0131 Sakinle\u015ftir<\/a><ul><li><a href=\"#Once_fotografi_cek_yavas_sorgu_gunlugu\"><span class=\"toc_number toc_depth_2\">5.1<\/span> \u00d6nce foto\u011fraf\u0131 \u00e7ek: yava\u015f sorgu g\u00fcnl\u00fc\u011f\u00fc<\/a><\/li><li><a href=\"#Baglanti_havuzu_TTL_ve_gercek_trafik\"><span class=\"toc_number toc_depth_2\">5.2<\/span> Ba\u011flant\u0131 havuzu, TTL ve ger\u00e7ek trafik<\/a><\/li><\/ul><\/li><li><a href=\"#Olc_Test_Et_Ufak_Dokunuslarla_Ilerle\"><span class=\"toc_number toc_depth_1\">6<\/span> \u00d6l\u00e7, Test Et, Ufak Dokunu\u015flarla \u0130lerle<\/a><ul><li><a href=\"#Kucuk_adimlarin_buyuk_etkisi\"><span class=\"toc_number toc_depth_2\">6.1<\/span> K\u00fc\u00e7\u00fck ad\u0131mlar\u0131n b\u00fcy\u00fck etkisi<\/a><\/li><\/ul><\/li><li><a href=\"#Guvenlik_ve_Dayaniklilik_Performansin_Sessiz_Eslikcisi\"><span class=\"toc_number toc_depth_1\">7<\/span> G\u00fcvenlik ve Dayan\u0131kl\u0131l\u0131k: Performans\u0131n Sessiz E\u015flik\u00e7isi<\/a><ul><li><a href=\"#Guvenlik_acik_oldugunda_hiz_uzun_surmez\"><span class=\"toc_number toc_depth_2\">7.1<\/span> G\u00fcvenlik a\u00e7\u0131k oldu\u011funda h\u0131z uzun s\u00fcrmez<\/a><\/li><\/ul><\/li><li><a href=\"#Gercek_Bir_Senaryo_Kucuk_Bir_E-Ticaret_Sitesinin_Sessiz_Donusumu\"><span class=\"toc_number toc_depth_1\">8<\/span> Ger\u00e7ek Bir Senaryo: K\u00fc\u00e7\u00fck Bir E-Ticaret Sitesinin Sessiz D\u00f6n\u00fc\u015f\u00fcm\u00fc<\/a><ul><li><a href=\"#Kirmizi_cizgiden_yesil_alana\"><span class=\"toc_number toc_depth_2\">8.1<\/span> K\u0131rm\u0131z\u0131 \u00e7izgiden ye\u015fil alana<\/a><\/li><\/ul><\/li><li><a href=\"#Kapanis_Ayar_Degil_Aliskanlik\"><span class=\"toc_number toc_depth_1\">9<\/span> Kapan\u0131\u015f: Ayar De\u011fil Al\u0131\u015fkanl\u0131k<\/a><ul><li><a href=\"#Bir_defalik_sihir_degil_duzenli_bakim\"><span class=\"toc_number toc_depth_2\">9.1<\/span> Bir defal\u0131k sihir de\u011fil, d\u00fczenli bak\u0131m<\/a><\/li><\/ul><\/li><\/ul><\/div>\n<h2 id=\"section-1\"><span id=\"Bir_WordPress_Sitesini_Hizlandirmanin_Sessiz_Yolu_Sunucu_Tarafi_Ayarlar\">Bir WordPress Sitesini H\u0131zland\u0131rman\u0131n Sessiz Yolu: Sunucu Taraf\u0131 Ayarlar<\/span><\/h2>\n<p>Hi\u00e7 \u015f\u00f6yle oldu mu: Tema g\u00fcncel, eklentiler ay\u0131klanm\u0131\u015f, g\u00f6rseller s\u0131k\u0131\u015ft\u0131r\u0131lm\u0131\u015f\u2026 ama site h\u00e2l\u00e2 o bekledi\u011fin t\u0131k\u0131r t\u0131k\u0131r h\u0131zda a\u00e7\u0131lm\u0131yor. Ben de bir d\u00f6nem buna tak\u0131l\u0131p kalm\u0131\u015ft\u0131m. \u00d6n y\u00fcz\u00fc cilalamaktan yorulunca kafay\u0131 sunucu taraf\u0131na \u00e7evirdim. Me\u011fer as\u0131l sessiz kahramanlar oradaym\u0131\u015f: PHP-FPM, OPcache, Redis ve MySQL ayarlar\u0131. \u00c7o\u011fu zaman grafikte bir \u00e7izgi de\u011fil, kasada ger\u00e7ek bir nefes alma yarat\u0131yorlar.<\/p>\n<p>Bu yaz\u0131da ad\u0131m ad\u0131m, paniklemeden ve jargon bo\u011fulmadan \u015fu d\u00f6rt par\u00e7ay\u0131 elden ge\u00e7irece\u011fiz. Neyi, neden yapt\u0131\u011f\u0131m\u0131z\u0131 \u00f6rneklerle anlataca\u011f\u0131m. Mesela \u201cpm.max_children\u201d nedir dedi\u011finde bir tabloya bakmak zorunda kalmayacaks\u0131n, kafanda canlanacak. OPcache\u2019i a\u00e7\u0131p b\u0131rakmakla bitmedi\u011fini, Redis\u2019i zorla de\u011fil do\u011fru yerde devreye sokman gerekti\u011fini ve MySQL\u2019in k\u00fc\u00e7\u00fcc\u00fck bir ayar\u0131yla rastgele gecikmeleri nas\u0131l sildi\u011fimi kendimce bir hik\u00e2ye gibi payla\u015faca\u011f\u0131m. Hadi omuzdan omuza bakal\u0131m, beraber ayar \u00e7ekelim.<\/p>\n<h2 id=\"section-2\"><span id=\"PHP-FPM_Sirayi_Duzenleyen_Sessiz_Calisanlar\">PHP-FPM: S\u0131ray\u0131 D\u00fczenleyen Sessiz \u00c7al\u0131\u015fanlar<\/span><\/h2>\n<h3><span id=\"PHP_isteklerini_kuyruktan_sahneye_cikaran_duzen\">PHP isteklerini kuyruktan sahneye \u00e7\u0131karan d\u00fczen<\/span><\/h3>\n<p>WordPress, dinamik bir yap\u0131. Her t\u0131klama yeni bir PHP yorumu demek. PHP-FPM buradaki trafi\u011fi y\u00f6neten bir sahne amiri gibi \u00e7al\u0131\u015f\u0131yor. Havuz dedi\u011fimiz yap\u0131, bu istekleri kar\u015f\u0131layan \u00e7al\u0131\u015fanlar\u0131 y\u00f6netiyor. \u00c7ok az \u00e7al\u0131\u015fan koyarsan kuyruk uzuyor, \u00e7ok fazla koyarsan sunucuyu zorlay\u0131p her \u015feyi a\u011f\u0131rla\u015ft\u0131r\u0131yorsun. Tam burada k\u00fc\u00e7\u00fck, bilin\u00e7li dokunu\u015flar devreye giriyor.<\/p>\n<p>\u0130lk bakaca\u011f\u0131n yer havuz ayarlar\u0131. Genelde \u201cwww.conf\u201d gibi bir dosyada durur. \u201cpm\u201d modu, ka\u00e7 \u00e7al\u0131\u015fan a\u00e7\u0131laca\u011f\u0131n\u0131 ve nas\u0131l y\u00f6netilece\u011fini belirliyor. Basit bir kural: bellek hesab\u0131n\u0131 kabaca yapt\u0131ktan sonra makul bir \u00e7ocuk say\u0131s\u0131 se\u00e7. Kafam\u0131zda somutla\u015ft\u0131ral\u0131m; varsa 4 \u00e7ekirdek ve s\u0131n\u0131rl\u0131 RAM, ilk ad\u0131mda m\u00fctevaz\u0131 ba\u015flamak do\u011fru olur. Sonra ger\u00e7ek trafi\u011fe g\u00f6re y\u00fckseltirsin.<\/p>\n<h3><span id=\"Baslangic_icin_guvenli_bir_havuz_tarifi\">Ba\u015flang\u0131\u00e7 i\u00e7in g\u00fcvenli bir havuz tarifi<\/span><\/h3>\n<p>\u00d6rnek bir havuz ayar\u0131 g\u00f6relim. Sadece kopyalay\u0131p yap\u0131\u015ft\u0131rmak i\u00e7in de\u011fil; neyin neden de\u011fi\u015fti\u011fini kavramak i\u00e7in g\u00f6z ataca\u011f\u0131z. K\u00fc\u00e7\u00fck ve orta \u00f6l\u00e7ekli WordPress siteleri i\u00e7in \u00e7ekirdek ve bellek hesab\u0131na g\u00f6re \u015fu tarz bir ba\u015flang\u0131\u00e7 tatl\u0131 bir denge yarat\u0131r. \u00c7ok d\u00fc\u015f\u00fck veya \u00e7ok y\u00fcksek de\u011ferlerden ka\u00e7\u0131nmak \u00e7o\u011fu zaman en ak\u0131ll\u0131 ba\u015flang\u0131\u00e7 oluyor.<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">; \/etc\/php\/*\/fpm\/pool.d\/www.conf\npm = dynamic\npm.max_children = 12\npm.start_servers = 4\npm.min_spare_servers = 2\npm.max_spare_servers = 6\npm.max_requests = 500\nrequest_terminate_timeout = 60s\nrequest_slowlog_timeout = 5s\nslowlog = \/var\/log\/php-fpm\/slow.log\n<\/code><\/pre>\n<p>Burada \u201cpm.max_children\u201d toplam e\u015fzamanl\u0131 PHP s\u00fcre\u00e7lerini s\u0131n\u0131rlar. Bellek t\u00fcketimini izleyerek art\u0131r\u0131p azaltabilirsin. \u201cpm.max_requests\u201d uzun ya\u015fayan s\u00fcre\u00e7lerin \u015fi\u015fmesini engeller. \u201cslowlog\u201d ise gizli yava\u015flar\u0131 ortaya \u00e7\u0131kar\u0131r. Ben ilk g\u00fcnlerde slowlog\u2019a bakmadan karar vermem, \u00e7\u00fcnk\u00fc \u00e7o\u011fu problem orada sessizce yaz\u0131l\u0131 durur.<\/p>\n<h3><span id=\"Bellek_CPU_ve_ayarlarin_karsilikli_sohbeti\">Bellek, CPU ve ayarlar\u0131n kar\u015f\u0131l\u0131kl\u0131 sohbeti<\/span><\/h3>\n<p>\u201cKa\u00e7 \u00e7ocuk a\u00e7sam?\u201d sorusunun cevab\u0131 RAM ve CPU ile ayn\u0131 masada aran\u0131r. PHP s\u00fcre\u00e7lerinin ortalama ne kadar RAM yedi\u011fini g\u00f6zlemleyip toplam belle\u011fe g\u00f6re \u00fcst s\u0131n\u0131r belirlemek iyi bir pratik. CPU taraf\u0131 da \u00f6nemli: s\u00fcre\u00e7leri \u00e7ok art\u0131r\u0131nca ba\u011flam de\u011fi\u015fimi art\u0131yor, bu da verim d\u00fc\u015f\u00fcr\u00fcyor. Yani bazen say\u0131y\u0131 art\u0131rmak yerine OPcache ve sorgu taraf\u0131ndaki iyile\u015ftirmelerle istek ba\u015f\u0131na s\u00fcreyi k\u0131saltmak daha iyi sonu\u00e7 veriyor.<\/p>\n<p>Benim rutinim basit: \u00f6nce mevcut y\u00fckte yava\u015f logu a\u00e7ar\u0131m, kuyruk olu\u015fuyorsa \u00e7ocuk say\u0131s\u0131n\u0131 ad\u0131m ad\u0131m art\u0131r\u0131r\u0131m. Belirli bir noktada iyile\u015fme temas\u0131n\u0131 kaybedince durup d\u00fc\u015f\u00fcn\u00fcr\u00fcm; bazen sorun CPU de\u011fil, disk veya veritaban\u0131d\u0131r. PHP-FPM tek ba\u015f\u0131na kahraman de\u011fildir, ama do\u011fru ayarlarla oyunu ta\u015f\u0131r.<\/p>\n<h2 id=\"section-3\"><span id=\"OPcache_Ayni_Dosyayi_Ikinci_Kez_Derletmeme_Sanati\">OPcache: Ayn\u0131 Dosyay\u0131 \u0130kinci Kez Derletmeme Sanat\u0131<\/span><\/h2>\n<h3><span id=\"Bir_kere_derle_tekrar_kullan_mantigi\">\u201cBir kere derle, tekrar kullan\u201d mant\u0131\u011f\u0131<\/span><\/h3>\n<p>WordPress\u2019in temel dosyalar\u0131 s\u00fcrekli \u00e7al\u0131\u015f\u0131r. Her istekte bu dosyalar\u0131 ba\u015ftan derlemek yerine OPcache ile haf\u0131zada tutmak, zamandan ve enerjiden tasarruf ettirir. Etkisini bazen an\u0131nda hissedersin: ilk istekler \u0131s\u0131n\u0131r, arkas\u0131 ya\u011f gibi akar. \u201cA\u00e7t\u0131m bitti\u201d diye d\u00fc\u015f\u00fcnmek cazip, ancak ufak ayarlarla \u00e7ok daha dengeli bir sonu\u00e7 al\u0131rs\u0131n.<\/p>\n<p>OPcache ayarlar\u0131 genellikle php.ini\u2019de yer al\u0131r. Uygularken her de\u011fi\u015fiklikten sonra PHP-FPM\u2019i nazik\u00e7e yeniden ba\u015flatmay\u0131 unutma. A\u015fa\u011f\u0131daki ayarlar sa\u011fduyulu bir ba\u015flang\u0131\u00e7 noktas\u0131. Panik yok; say\u0131lar sabit de\u011fil, izleyerek de\u011fi\u015ftirirsin.<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">; php.ini\nopcache.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\nopcache.jit=0\n<\/code><\/pre>\n<p>\u201copcache.memory_consumption\u201d OPcache i\u00e7in ayr\u0131lan bellek. \u201cmax_accelerated_files\u201d \u00e7ok d\u00fc\u015f\u00fck olursa dosya tablosu dolar, bu da beklenmedik yava\u015fl\u0131klar yarat\u0131r. \u201cvalidate_timestamps\u201d ve \u201crevalidate_freq\u201d ise kod de\u011fi\u015fikliklerini ne kadar h\u0131zl\u0131 fark edece\u011fini belirler. Geli\u015ftirme ortam\u0131nda s\u00fcreyi k\u0131salt\u0131r, \u00fcretimde biraz art\u0131r\u0131rs\u0131n. Bu k\u00fc\u00e7\u00fck denge, gereksiz dosya kontrol\u00fcn\u00fc azalt\u0131r.<\/p>\n<p>Detaylar\u0131 kurcalamak istersen resmi OPcache ayar referans\u0131na g\u00f6z atmak iyi olur. Ben ihtiya\u00e7 duydu\u011fumda <a href=\"https:\/\/www.php.net\/manual\/en\/opcache.configuration.php\" rel=\"nofollow noopener\" target=\"_blank\">OPcache yap\u0131land\u0131rma belgelerini<\/a> kontrol eder, ama \u00f6nce \u00f6l\u00e7\u00fcme bakar\u0131m. \u00c7\u00fcnk\u00fc \u00f6l\u00e7meden yap\u0131lan her ayar, tahmindir.<\/p>\n<h2 id=\"section-4\"><span id=\"Redis_Kalici_Nesne_Onbellegi_ile_WordPressi_Nefeslendir\">Redis: Kal\u0131c\u0131 Nesne \u00d6nbelle\u011fi ile WordPress\u2019i Nefeslendir<\/span><\/h2>\n<h3><span id=\"Sorgu_tekrarlarini_hafizaya_almanin_pratik_yolu\">Sorgu tekrarlar\u0131n\u0131 haf\u0131zaya alman\u0131n pratik yolu<\/span><\/h3>\n<p>WordPress, ayn\u0131 verileri defalarca \u00e7ekmeye meyilli. \u00d6zellikle eklentiler \u00e7o\u011fald\u0131k\u00e7a bu tekrarlar art\u0131yor. Redis burada bize \u201ckal\u0131c\u0131 nesne \u00f6nbelle\u011fi\u201d olarak yard\u0131mc\u0131 olur. Basit\u00e7e s\u00f6yleyeyim: ayn\u0131 \u015fey i\u00e7in her seferinde veritaban\u0131na gitmek yerine, RAM\u2019den servis edersin. Ve bu, trafi\u011fin y\u00fckseldi\u011fi anlarda siteyi sakinle\u015ftirir.<\/p>\n<p>Kurulum basit. Sunucuna Redis\u2019i kurar, hizmeti ba\u015flat\u0131r ve WordPress taraf\u0131nda bir nesne \u00f6nbellek eklentisi ile ba\u011flars\u0131n. Ben \u00fcretime ge\u00e7meden \u00f6nce bir sahne ortam\u0131nda denemeyi severim. \u00c7\u00fcnk\u00fc baz\u0131 eklentilerle anahtar isimleri \u00e7ak\u0131\u015fabilir veya TTL ayarlar\u0131 fazla agresif olabilir. K\u00fc\u00e7\u00fck bir test turu, sonradan ya\u015fayaca\u011f\u0131n ba\u015f a\u011fr\u0131s\u0131n\u0131 al\u0131r.<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\"># Debian\/Ubuntu \u00f6rne\u011fi\nsudo apt update &amp;&amp; sudo apt install redis-server -y\n\n# \/etc\/redis\/redis.conf i\u00e7inde birka\u00e7 pratik dokunu\u015f\ndatabases 16\nmaxmemory 512mb\nmaxmemory-policy allkeys-lru\nappendonly yes\n<\/code><\/pre>\n<p>\u201cmaxmemory-policy\u201d se\u00e7imleri davran\u0131\u015f\u0131 de\u011fi\u015ftirir. LRU (en az kullan\u0131lan\u0131 \u00e7\u0131kar) genelde iyi bir ba\u015flang\u0131\u00e7. \u201cappendonly\u201d ise veri kal\u0131c\u0131l\u0131\u011f\u0131 sa\u011flar; k\u00fc\u00e7\u00fck bir performans maliyeti vard\u0131r ama \u00e7o\u011fu senaryoda kabul edilebilir. WordPress eklentisi taraf\u0131nda ise anahtarlar\u0131n TTL ayarlar\u0131na dikkat etmek, \u00f6zellikle s\u0131k de\u011fi\u015fen sayfalarda taze i\u00e7erik sunmak i\u00e7in \u00f6nemlidir. Gereksiz uzun \u00f6m\u00fcr, g\u00fcncellemelerde kafa kar\u0131\u015ft\u0131r\u0131r.<\/p>\n<p>Redis\u2019in WordPress performans\u0131n\u0131 nas\u0131l h\u0131zland\u0131rd\u0131\u011f\u0131n\u0131 daha rahat sindirmek istersen, bizim haz\u0131rlad\u0131\u011f\u0131m\u0131z <a href=\"https:\/\/www.dchost.com\/blog\/redis-cache-nedir-hosting-performansini-nasil-artirir\/\">Redis\u2019in hosting performans\u0131na etkisini anla\u015f\u0131l\u0131r \u00f6rneklerle anlatan rehbere<\/a> g\u00f6z atman\u0131 \u00f6neririm. Orada se\u00e7ti\u011fin stratejinin sitenin t\u00fcr\u00fcne g\u00f6re nas\u0131l de\u011fi\u015fti\u011fini daha ak\u0131c\u0131 bir dille bulacaks\u0131n.<\/p>\n<p>Kurcalamak ho\u015funa gidiyorsa, Redis taraf\u0131nda kal\u0131c\u0131l\u0131k ve bellek politikalar\u0131 i\u00e7in <a href=\"https:\/\/redis.io\/docs\/latest\/\" rel=\"nofollow noopener\" target=\"_blank\">Redis belgelerinde \u00f6nerilen kal\u0131c\u0131 yap\u0131land\u0131rmalar<\/a> b\u00f6l\u00fcm\u00fcne bakman da iyi olur. Ancak yine alt\u0131n\u0131 \u00e7izeyim: \u00f6l\u00e7, izle, k\u00fc\u00e7\u00fck ad\u0131mlarla ilerle. Bir defal\u0131k \u201ca\u00e7t\u0131m bitti\u201d yerine ritimli bir bak\u0131m, Redis\u2019i ger\u00e7ek bir performans dostuna \u00e7evirir.<\/p>\n<h2 id=\"section-5\"><span id=\"MySQL_Ince_Ayarlari_InnoDByi_Rahatlat_Sorgulari_Sakinlestir\">MySQL \u0130nce Ayarlar\u0131: InnoDB\u2019yi Rahatlat, Sorgular\u0131 Sakinle\u015ftir<\/span><\/h2>\n<h3><span id=\"Once_fotografi_cek_yavas_sorgu_gunlugu\">\u00d6nce foto\u011fraf\u0131 \u00e7ek: yava\u015f sorgu g\u00fcnl\u00fc\u011f\u00fc<\/span><\/h3>\n<p>MySQL taraf\u0131nda ilk i\u015fim her zaman yava\u015f sorgu g\u00fcnl\u00fc\u011f\u00fcn\u00fc a\u00e7mak olur. Sorunu g\u00f6rmeden ayar yapmak, karanl\u0131kta vida s\u0131kmaya benziyor. Yava\u015f sorgu g\u00fcnl\u00fc\u011f\u00fc, hangi eklenti veya sayfan\u0131n i\u015fi a\u011f\u0131rdan ald\u0131\u011f\u0131n\u0131 f\u0131s\u0131ldar. Oradan ald\u0131\u011f\u0131n ipu\u00e7lar\u0131yla ya sorguyu iyile\u015ftirirsin ya da \u00f6nbellek katmanlar\u0131n\u0131 daha bilin\u00e7li ayarlars\u0131n. Sonras\u0131nda genel InnoDB ayarlar\u0131yla zemini sa\u011flamla\u015ft\u0131r\u0131rs\u0131n.<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">-- my.cnf ya da mysqld.cnf \u00f6rne\u011fi\n[mysqld]\nslow_query_log = 1\nslow_query_log_file = \/var\/log\/mysql\/slow.log\nlong_query_time = 1\ninnodb_buffer_pool_size = 2G\ninnodb_log_file_size = 512M\ninnodb_flush_log_at_trx_commit = 2\ninnodb_flush_method = O_DIRECT\nmax_connections = 200\n<\/code><\/pre>\n<p>\u201cinnodb_buffer_pool_size\u201d en kritik de\u011ferdir. S\u0131kl\u0131kla eri\u015filen verileri RAM\u2019de tutar. Veritaban\u0131 boyutunun tamam\u0131n\u0131 girmeye kalkma, toplam RAM ve di\u011fer servislerle ortak ya\u015fam kur. \u201cinnodb_flush_log_at_trx_commit\u201d de\u011ferini 2 yapmak, bir nebze performans sa\u011flar; veri kayb\u0131 tolerans\u0131 olmayan ortamlarda bunu tekrar d\u00fc\u015f\u00fcn. Bu ayarlar\u0131n hepsi birer kald\u0131ra\u00e7; dengeyi senin i\u015f y\u00fck\u00fcn belirler.<\/p>\n<p>WordPress\u2019te s\u0131k g\u00f6rd\u00fc\u011f\u00fcm bir durum var: arama eklentileri veya raporlama ara\u00e7lar\u0131 beklenmedik sorgular \u00fcretir. Yava\u015f sorgu g\u00fcnl\u00fc\u011f\u00fcnde bunlar\u0131 yakalad\u0131\u011f\u0131nda bazen tek bir indeks eklemek, gecikmeyi dramatik bi\u00e7imde azalt\u0131r. Bu hep ho\u015fuma gider; k\u00fc\u00e7\u00fck bir dokunu\u015f, b\u00fcy\u00fck bir nefes. E\u011fer sorgu iyile\u015ftirmesi m\u00fcmk\u00fcn de\u011filse, Redis ile o sayfan\u0131n dinamik par\u00e7alar\u0131n\u0131 daha ak\u0131ll\u0131 \u00f6nbelle\u011fe almak \u00e7o\u011fu zaman i\u015fe yarar.<\/p>\n<p>InnoDB\u2019nin \u00e7al\u0131\u015fma mant\u0131\u011f\u0131n\u0131 basit\u00e7e anlamak istersen, resm\u00ee dok\u00fcmantasyondaki <a href=\"https:\/\/dev.mysql.com\/doc\/refman\/8.0\/en\/innodb-buffer-pool.html\" rel=\"nofollow noopener\" target=\"_blank\">InnoDB buffer pool\u2019un mant\u0131\u011f\u0131na dair a\u00e7\u0131klamalara<\/a> g\u00f6z atabilirsin. Ama tekrar s\u00f6yleyeyim: \u00f6nce \u00f6l\u00e7, sonra ayarla. Aksi halde bir yerde h\u0131zlan\u0131rken ba\u015fka yerde gizli bir fren yaratabilirsin.<\/p>\n<h3><span id=\"Baglanti_havuzu_TTL_ve_gercek_trafik\">Ba\u011flant\u0131 havuzu, TTL ve ger\u00e7ek trafik<\/span><\/h3>\n<p>Uygulama katman\u0131nda bir ba\u011flant\u0131 havuzu kullan\u0131yorsan, MySQL taraf\u0131ndaki \u201cmax_connections\u201d de\u011ferini u\u00e7uk noktalara ta\u015f\u0131mak zorunda de\u011filsin. \u00d6nce havuzun davran\u0131\u015f\u0131n\u0131 anla, ard\u0131ndan veritaban\u0131n\u0131 ona g\u00f6re ayarla. S\u0131rf \u201cba\u011flant\u0131 hatas\u0131\u201d g\u00f6rd\u00fcm diye s\u0131n\u0131r\u0131 y\u00fckseltmek bazen ila\u00e7 de\u011fil, yeni bir hastal\u0131k yarat\u0131r. Ger\u00e7ek kullan\u0131m\u0131n ritmine kulak vermek daha sa\u011fl\u0131kl\u0131.<\/p>\n<p>WordPress taraf\u0131nda k\u0131sa TTL\u2019ler, s\u0131k g\u00fcncellenen sayfalar i\u00e7in taze i\u00e7erik sa\u011flar. Ama her \u015feyi k\u0131sa tutmak da belle\u011fi h\u0131rpalar. Dengeyi bulman\u0131n yolu basit: en \u00e7ok trafik alan sayfay\u0131 izle, de\u011fi\u015fiklikleri ne kadar s\u0131kl\u0131kta yap\u0131yorsun bak, sonra TTL\u2019i buna g\u00f6re ayarla. Bu \u00fc\u00e7l\u00fc, seni gereksiz karma\u015fadan korur.<\/p>\n<h2 id=\"section-6\"><span id=\"Olc_Test_Et_Ufak_Dokunuslarla_Ilerle\">\u00d6l\u00e7, Test Et, Ufak Dokunu\u015flarla \u0130lerle<\/span><\/h2>\n<h3><span id=\"Kucuk_adimlarin_buyuk_etkisi\">K\u00fc\u00e7\u00fck ad\u0131mlar\u0131n b\u00fcy\u00fck etkisi<\/span><\/h3>\n<p>Benim i\u00e7in en verimli y\u00f6ntem, bir \u015feyi de\u011fi\u015ftirmek ve etkisini k\u0131sa bir pencerede izlemek oldu. OPcache belle\u011fini iki kat\u0131na \u00e7\u0131kard\u0131\u011f\u0131nda zaman grafi\u011finde e\u011fri nas\u0131l k\u0131p\u0131rd\u0131yor, Redis TTL\u2019i uzat\u0131nca geri d\u00f6n\u00fc\u015fler nas\u0131l de\u011fi\u015fiyor, PHP-FPM \u00e7ocuk say\u0131s\u0131n\u0131 art\u0131r\u0131nca CPU nas\u0131l tepki veriyor\u2026 bunlar\u0131 g\u00f6rmeden kal\u0131c\u0131 karar vermem. Sunucu taraf\u0131 optimizasyon bir defal\u0131k proje de\u011fil, al\u0131\u015fkanl\u0131k haline gelince meyvesini veriyor.<\/p>\n<p>Sunucu seviyesinde ek t\u00fcyolar da var. HTTP katman\u0131nda yeni nesil protokollerin bazen g\u00fcnd\u00fcz vakti a\u00e7an g\u00fcne\u015f gibi etkisi oluyor. \u0130lgini \u00e7ekerse, <a href=\"https:\/\/www.dchost.com\/blog\/http-3-protokolu-web-hosting-performansina-etkileri\/\">HTTP\/3 protokol\u00fcn\u00fcn site a\u00e7\u0131l\u0131\u015flar\u0131na etkisi<\/a> \u00fczerine haz\u0131rlad\u0131\u011f\u0131m\u0131z yaz\u0131, a\u011f taraf\u0131ndaki k\u00fc\u00e7\u00fck g\u00fcncellemelerin hissedilir sonu\u00e7lar\u0131n\u0131 \u00f6rnekliyor. Uygulamay\u0131 g\u00fc\u00e7lendirdikten sonra, a\u011f\u0131n da nefeslenmesini izlemek g\u00fczel.<\/p>\n<p>Ve evet, web sunucusu se\u00e7imi de bu hik\u00e2yenin par\u00e7as\u0131. Bu konunun derinlerine merakl\u0131ysan, <a href=\"https:\/\/www.dchost.com\/blog\/litespeed-vs-apache-web-sunuculari-karsilastirmasi\/\">LiteSpeed ve Apache web sunucular\u0131 aras\u0131ndaki farklar\u0131n tart\u0131\u015f\u0131ld\u0131\u011f\u0131 yaz\u0131m\u0131za<\/a> g\u00f6z atabilirsin. Burada do\u011frudan bir \u201cen iyi\u201d yok; senin trafik \u015feklin, eklenti al\u0131\u015fkanl\u0131klar\u0131n ve sunucu kaynaklar\u0131n en do\u011fru karar\u0131 verir.<\/p>\n<h2 id=\"section-7\"><span id=\"Guvenlik_ve_Dayaniklilik_Performansin_Sessiz_Eslikcisi\">G\u00fcvenlik ve Dayan\u0131kl\u0131l\u0131k: Performans\u0131n Sessiz E\u015flik\u00e7isi<\/span><\/h2>\n<h3><span id=\"Guvenlik_acik_oldugunda_hiz_uzun_surmez\">G\u00fcvenlik a\u00e7\u0131k oldu\u011funda h\u0131z uzun s\u00fcrmez<\/span><\/h3>\n<p>Performans\u0131 konu\u015ftuk ama g\u00fcvenlik olmadan bu kazan\u0131mlar kal\u0131c\u0131 olmaz. Basit bir DDoS bile b\u00fct\u00fcn emekleri k\u0131sa s\u00fcreli\u011fine etkileyebilir. Bu y\u00fczden, a\u011f katman\u0131nda temel korumalar\u0131 aktif tutmak ve muhtemel sald\u0131r\u0131 y\u00fczeylerini daraltmak performans\u0131n da sigortas\u0131d\u0131r. Detayl\u0131 bir genel bak\u0131\u015f istersen, <a href=\"https:\/\/www.dchost.com\/blog\/ddos-saldirilari-ve-korunma-yontemleri\/\">DDoS sald\u0131r\u0131lar\u0131 ve korunma y\u00f6ntemleri<\/a> yaz\u0131m\u0131zda pratik \u00f6neriler bulabilirsin.<\/p>\n<p>Sunucu g\u00fcvenli\u011finin g\u00fcnl\u00fck bak\u0131m\u0131 da ger\u00e7ekten fark yarat\u0131r. Servislerin gereksiz a\u00e7\u0131k portlar\u0131n\u0131 kapatmak, loglar\u0131 d\u00fczenli okumak ve g\u00fcncellemeleri ertelemeden kurmak\u2026 Bu basit al\u0131\u015fkanl\u0131klar performans yat\u0131r\u0131mlar\u0131n\u0131 korur. Ad\u0131m ad\u0131m ilerlemek istersen, <a href=\"https:\/\/www.dchost.com\/blog\/vps-sunucu-guvenligi-pratik-olceklenebilir-ve-dogrulanabilir-yaklasimlar\/\">VPS sunucu g\u00fcvenli\u011fini pratik ve \u00f6l\u00e7eklenebilir \u015fekilde ele alan \u015fu rehberi<\/a> de faydal\u0131 bulacaks\u0131n.<\/p>\n<p>Bazen de performans problemi san\u0131p u\u011fra\u015ft\u0131\u011f\u0131m\u0131z \u015fey, asl\u0131nda g\u00fcvenlikten do\u011fan bir y\u00fck oluyor. Orada yap\u0131lacak do\u011fru bir kural d\u00fczenlemesi veya h\u0131z s\u0131n\u0131rlamas\u0131, sistemin nefesini a\u00e7\u0131yor. O y\u00fczden te\u015fhis k\u0131sm\u0131n\u0131 ihmal etme; yava\u015fl\u0131k her zaman sadece kaynak yetersizli\u011fi de\u011fildir.<\/p>\n<h2 id=\"section-8\"><span id=\"Gercek_Bir_Senaryo_Kucuk_Bir_E-Ticaret_Sitesinin_Sessiz_Donusumu\">Ger\u00e7ek Bir Senaryo: K\u00fc\u00e7\u00fck Bir E-Ticaret Sitesinin Sessiz D\u00f6n\u00fc\u015f\u00fcm\u00fc<\/span><\/h2>\n<h3><span id=\"Kirmizi_cizgiden_yesil_alana\">K\u0131rm\u0131z\u0131 \u00e7izgiden ye\u015fil alana<\/span><\/h3>\n<p>Bir e-ticaret sitesinde ba\u015f\u0131ma geleni anlatay\u0131m. Trafik normal, ama kampanya saatlerinde site birden dalgalan\u0131yordu. \u00d6nce \u00f6n y\u00fcz\u00fc kurcalad\u0131k, bir \u015fey \u00e7\u0131kmad\u0131. Yava\u015f sorgu g\u00fcnl\u00fc\u011f\u00fcn\u00fc a\u00e7t\u0131m ve kampanya sayfas\u0131ndaki bir eklentinin beklenmedik \u015fekilde karma\u015f\u0131k sorgular \u00fcretti\u011fini g\u00f6rd\u00fcm. Bir indeks ekledik, a\u011f\u0131r sorguyu hafifleten k\u00fc\u00e7\u00fck bir d\u00fczenleme yapt\u0131k.<\/p>\n<p>Ard\u0131ndan PHP-FPM taraf\u0131nda \u201cpm.max_children\u201d de\u011ferini bir t\u0131k y\u00fckselttik. OPcache dosya tablosunu geni\u015flettim, Redis\u2019i devreye al\u0131p TTL\u2019leri kampanya anlar\u0131na uygun \u015fekilde ayarlad\u0131m. Sonu\u00e7, daha stabil bir y\u00fck e\u011frisi oldu. Dakika ba\u015f\u0131na istek artt\u0131\u011f\u0131nda bile kuyruk yerine ak\u0131\u015f g\u00f6rd\u00fck. B\u00fcy\u00fc yok, sadece disiplinli k\u00fc\u00e7\u00fck ad\u0131mlar.<\/p>\n<p>Analizden sonra \u015funu fark ettim: her de\u011fi\u015fikli\u011fin izini s\u00fcrd\u00fc\u011f\u00fcm\u00fczde, nerede durmam\u0131z gerekti\u011fini daha net g\u00f6r\u00fcyoruz. \u00c7\u00fcnk\u00fc bazen \u201cdaha fazla\u201d de\u011fil \u201ctam yerinde\u201d olan kazan\u0131yor. Bu hik\u00e2yenin en g\u00fczel yan\u0131 da bu; bir ayar\u0131 k\u00f6k\u00fcne kadar a\u00e7mak yerine, do\u011fru noktada b\u0131rakmay\u0131 \u00f6\u011freniyorsun.<\/p>\n<h2 id=\"section-9\"><span id=\"Kapanis_Ayar_Degil_Aliskanlik\">Kapan\u0131\u015f: Ayar De\u011fil Al\u0131\u015fkanl\u0131k<\/span><\/h2>\n<h3><span id=\"Bir_defalik_sihir_degil_duzenli_bakim\">Bir defal\u0131k sihir de\u011fil, d\u00fczenli bak\u0131m<\/span><\/h3>\n<p>Sunucu taraf\u0131 optimizasyonu bir kere yap\u0131p kenara koymak yerine, d\u00fczenli bir bak\u0131m gibi d\u00fc\u015f\u00fcn. PHP-FPM havuzunu izleyip k\u00fc\u00e7\u00fck d\u00fczeltmeler yapmak, OPcache\u2019in belle\u011fini dolmadan \u00f6nce rahatlatmak, Redis anahtarlar\u0131n\u0131 sa\u011fl\u0131kl\u0131 ya\u015fatmak, MySQL\u2019in yava\u015flar\u0131n\u0131 zaman\u0131nda yakalamak\u2026 Bu d\u00f6rt ad\u0131m asl\u0131nda bir rutin. Uygulad\u0131k\u00e7a daha iyi tan\u0131r, daha az eforla daha \u00e7ok verim al\u0131rs\u0131n.<\/p>\n<p>Son bir ipucu: her de\u011fi\u015fiklikten sonra not al. Hangi de\u011feri ne zaman artt\u0131rd\u0131n, niye geri ald\u0131n, hangi grafikte neyi g\u00f6rd\u00fcn\u2026 Bu k\u00fc\u00e7\u00fck notlar, iki ay sonra alt\u0131n de\u011ferine d\u00f6n\u00fc\u015f\u00fcyor. Umar\u0131m bu yaz\u0131, ad\u0131m atarken elini hafifleten bir rehber olmu\u015ftur. Bir sorunda tak\u0131l\u0131rsan, hik\u00e2yeyi ve \u00f6l\u00e7\u00fcm\u00fc payla\u015f; birlikte yorumlamak her zaman daha kolay. Bir dahaki yaz\u0131da, belki de a\u011f katman\u0131nda k\u00fc\u00e7\u00fck bir dokunu\u015fun koca bir hissiyat\u0131 nas\u0131l de\u011fi\u015ftirdi\u011fini konu\u015furuz.<\/p>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>\u0130&ccedil;indekiler1 Bir WordPress Sitesini H\u0131zland\u0131rman\u0131n Sessiz Yolu: Sunucu Taraf\u0131 Ayarlar2 PHP-FPM: S\u0131ray\u0131 D\u00fczenleyen Sessiz \u00c7al\u0131\u015fanlar2.1 PHP isteklerini kuyruktan sahneye \u00e7\u0131karan d\u00fczen2.2 Ba\u015flang\u0131\u00e7 i\u00e7in g\u00fcvenli bir havuz tarifi2.3 Bellek, CPU ve ayarlar\u0131n kar\u015f\u0131l\u0131kl\u0131 sohbeti3 OPcache: Ayn\u0131 Dosyay\u0131 \u0130kinci Kez Derletmeme Sanat\u01313.1 \u201cBir kere derle, tekrar kullan\u201d mant\u0131\u011f\u01314 Redis: Kal\u0131c\u0131 Nesne \u00d6nbelle\u011fi ile WordPress\u2019i Nefeslendir4.1 Sorgu tekrarlar\u0131n\u0131 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1239,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-1238","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-genel"],"_links":{"self":[{"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/posts\/1238","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=1238"}],"version-history":[{"count":0,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/posts\/1238\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/media\/1239"}],"wp:attachment":[{"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/media?parent=1238"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/categories?post=1238"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/tags?post=1238"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}