{"id":3580,"date":"2025-12-28T16:43:49","date_gmt":"2025-12-28T13:43:49","guid":{"rendered":"https:\/\/www.dchost.com\/blog\/trafik-patlamasindan-once-load-test-yapmak-k6-jmeter-ve-locust-ile-kapasite-olcme-rehberi\/"},"modified":"2025-12-28T16:43:49","modified_gmt":"2025-12-28T13:43:49","slug":"trafik-patlamasindan-once-load-test-yapmak-k6-jmeter-ve-locust-ile-kapasite-olcme-rehberi","status":"publish","type":"post","link":"https:\/\/www.dchost.com\/blog\/trafik-patlamasindan-once-load-test-yapmak-k6-jmeter-ve-locust-ile-kapasite-olcme-rehberi\/","title":{"rendered":"Trafik Patlamas\u0131ndan \u00d6nce Load Test Yapmak: k6, JMeter ve Locust ile Kapasite \u00d6l\u00e7me 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=\"#Load_Test_Nedir_Trafik_Patlamasindan_Once_Neden_Hayati\"><span class=\"toc_number toc_depth_1\">1<\/span> Load Test Nedir, Trafik Patlamas\u0131ndan \u00d6nce Neden Hayati?<\/a><\/li><li><a href=\"#Load_Stress_Soak_ve_Spike_Test_Kavramlari_Netlestirelim\"><span class=\"toc_number toc_depth_1\">2<\/span> Load, Stress, Soak ve Spike Test: Kavramlar\u0131 Netle\u015ftirelim<\/a><\/li><li><a href=\"#Load_Test_Oncesi_Hazirlik_Hedefler_Metrikler_ve_Senaryolar\"><span class=\"toc_number toc_depth_1\">3<\/span> Load Test \u00d6ncesi Haz\u0131rl\u0131k: Hedefler, Metrikler ve Senaryolar<\/a><ul><li><a href=\"#Is_hedeflerini_teknik_hedeflere_cevirmek\"><span class=\"toc_number toc_depth_2\">3.1<\/span> \u0130\u015f hedeflerini teknik hedeflere \u00e7evirmek<\/a><\/li><li><a href=\"#Izlenecek_metrikler_Sadece_RPS_ve_yanit_suresine_bakmayin\"><span class=\"toc_number toc_depth_2\">3.2<\/span> \u0130zlenecek metrikler: Sadece RPS ve yan\u0131t s\u00fcresine bakmay\u0131n<\/a><\/li><li><a href=\"#Gercekci_kullanici_senaryolari_olusturmak\"><span class=\"toc_number toc_depth_2\">3.3<\/span> Ger\u00e7ek\u00e7i kullan\u0131c\u0131 senaryolar\u0131 olu\u015fturmak<\/a><\/li><\/ul><\/li><li><a href=\"#Test_Ortami_ve_Hosting_Kapasitesi_DCHost_Tarafinda_Nelere_Dikkat_Etmeli\"><span class=\"toc_number toc_depth_1\">4<\/span> Test Ortam\u0131 ve Hosting Kapasitesi: DCHost Taraf\u0131nda Nelere Dikkat Etmeli?<\/a><ul><li><a href=\"#Canli_mi_staging_mi_Gercekci_ama_kontrollu_ortam\"><span class=\"toc_number toc_depth_2\">4.1<\/span> Canl\u0131 m\u0131 staging mi? Ger\u00e7ek\u00e7i ama kontroll\u00fc ortam<\/a><\/li><li><a href=\"#Paylasimli_hosting_VPS_ve_dedicated_icin_yaklasim_farklari\"><span class=\"toc_number toc_depth_2\">4.2<\/span> Payla\u015f\u0131ml\u0131 hosting, VPS ve dedicated i\u00e7in yakla\u015f\u0131m farklar\u0131<\/a><\/li><li><a href=\"#Cok_katmanli_mimari_ve_load_balancer_etkisi\"><span class=\"toc_number toc_depth_2\">4.3<\/span> \u00c7ok katmanl\u0131 mimari ve load balancer etkisi<\/a><\/li><\/ul><\/li><li><a href=\"#k6_ile_Load_Test_Modern_Script_Tabanli_Yaklasim\"><span class=\"toc_number toc_depth_1\">5<\/span> k6 ile Load Test: Modern, Script Tabanl\u0131 Yakla\u015f\u0131m<\/a><ul><li><a href=\"#k6yi_ne_zaman_tercih_etmeli\"><span class=\"toc_number toc_depth_2\">5.1<\/span> k6\u2019y\u0131 ne zaman tercih etmeli?<\/a><\/li><li><a href=\"#Basit_bir_k6_senaryosu\"><span class=\"toc_number toc_depth_2\">5.2<\/span> Basit bir k6 senaryosu<\/a><\/li><li><a href=\"#Gercekci_k6_senaryolari_Birden_fazla_endpoint\"><span class=\"toc_number toc_depth_2\">5.3<\/span> Ger\u00e7ek\u00e7i k6 senaryolar\u0131: Birden fazla endpoint<\/a><\/li><\/ul><\/li><li><a href=\"#Apache_JMeter_ile_Load_Test_GUIden_Komut_Satirina\"><span class=\"toc_number toc_depth_1\">6<\/span> Apache JMeter ile Load Test: GUI\u2019den Komut Sat\u0131r\u0131na<\/a><ul><li><a href=\"#JMeter_ne_zaman_faydali\"><span class=\"toc_number toc_depth_2\">6.1<\/span> JMeter ne zaman faydal\u0131?<\/a><\/li><li><a href=\"#Temel_bilesenler_Thread_Group_Sampler_Listener\"><span class=\"toc_number toc_depth_2\">6.2<\/span> Temel bile\u015fenler: Thread Group, Sampler, Listener<\/a><\/li><li><a href=\"#Performansli_kullanim_icin_non-GUI_mod\"><span class=\"toc_number toc_depth_2\">6.3<\/span> Performansl\u0131 kullan\u0131m i\u00e7in non-GUI mod<\/a><\/li><\/ul><\/li><li><a href=\"#Locust_ile_Load_Test_Python_ile_Davranis_Bazli_Senaryolar\"><span class=\"toc_number toc_depth_1\">7<\/span> Locust ile Load Test: Python ile Davran\u0131\u015f Bazl\u0131 Senaryolar<\/a><ul><li><a href=\"#Locustun_guclu_oldugu_alanlar\"><span class=\"toc_number toc_depth_2\">7.1<\/span> Locust\u2019un g\u00fc\u00e7l\u00fc oldu\u011fu alanlar<\/a><\/li><li><a href=\"#Basit_bir_Locust_ornegi\"><span class=\"toc_number toc_depth_2\">7.2<\/span> Basit bir Locust \u00f6rne\u011fi<\/a><\/li><\/ul><\/li><li><a href=\"#Sonuclari_Yorumlamak_Bu_Sunucu_Kac_Kullanici_Kaldiriyor\"><span class=\"toc_number toc_depth_1\">8<\/span> Sonu\u00e7lar\u0131 Yorumlamak: Bu Sunucu Ka\u00e7 Kullan\u0131c\u0131 Kald\u0131r\u0131yor?<\/a><ul><li><a href=\"#Kabul_kriterlerini_en_bastan_tanimlayin\"><span class=\"toc_number toc_depth_2\">8.1<\/span> Kabul kriterlerini en ba\u015ftan tan\u0131mlay\u0131n<\/a><\/li><li><a href=\"#Darbogazi_bulmak_CPU_mu_IO_mu_veritabani_mi\"><span class=\"toc_number toc_depth_2\">8.2<\/span> Darbo\u011faz\u0131 bulmak: CPU mu, I\/O mu, veritaban\u0131 m\u0131?<\/a><\/li><li><a href=\"#Load_test_Ayar_degisikligi_Yeniden_test_dongusu\"><span class=\"toc_number toc_depth_2\">8.3<\/span> Load test \u2192 Ayar de\u011fi\u015fikli\u011fi \u2192 Yeniden test d\u00f6ng\u00fcs\u00fc<\/a><\/li><\/ul><\/li><li><a href=\"#DCHost_ile_Trafik_Patlamasina_Hazirlanmak_Pratik_Yol_Haritasi\"><span class=\"toc_number toc_depth_1\">9<\/span> DCHost ile Trafik Patlamas\u0131na Haz\u0131rlanmak: Pratik Yol Haritas\u0131<\/a><ul><li><a href=\"#1_Mevcut_durumu_ve_hedef_trafigi_netlestirin\"><span class=\"toc_number toc_depth_2\">9.1<\/span> 1. Mevcut durumu ve hedef trafi\u011fi netle\u015ftirin<\/a><\/li><li><a href=\"#2_Basit_bir_k6JMeterLocust_senaryosu_hazirlayin\"><span class=\"toc_number toc_depth_2\">9.2<\/span> 2. Basit bir k6\/JMeter\/Locust senaryosu haz\u0131rlay\u0131n<\/a><\/li><li><a href=\"#3_Izleme_ve_loglamayi_devreye_alin\"><span class=\"toc_number toc_depth_2\">9.3<\/span> 3. \u0130zleme ve loglamay\u0131 devreye al\u0131n<\/a><\/li><li><a href=\"#4_Testi_kademeli_artirin_sonra_sonuclari_sogukkanli_okuyun\"><span class=\"toc_number toc_depth_2\">9.4<\/span> 4. Testi kademeli art\u0131r\u0131n, sonra sonu\u00e7lar\u0131 so\u011fukkanl\u0131 okuyun<\/a><\/li><li><a href=\"#5_Kapasite_ve_olceklendirme_kararini_verin\"><span class=\"toc_number toc_depth_2\">9.5<\/span> 5. Kapasite ve \u00f6l\u00e7eklendirme karar\u0131n\u0131 verin<\/a><\/li><\/ul><\/li><li><a href=\"#Ozet_ve_Son_Soz_Trafik_Patlamasi_Surpriz_Olmasin\"><span class=\"toc_number toc_depth_1\">10<\/span> \u00d6zet ve Son S\u00f6z: Trafik Patlamas\u0131 S\u00fcrpriz Olmas\u0131n<\/a><\/li><\/ul><\/div>\n<h2><span id=\"Load_Test_Nedir_Trafik_Patlamasindan_Once_Neden_Hayati\">Load Test Nedir, Trafik Patlamas\u0131ndan \u00d6nce Neden Hayati?<\/span><\/h2>\n<p>Bir kampanya, TV yay\u0131n\u0131, influencer i\u015fbirli\u011fi veya yeni \u00f6zellik lansman\u0131 planlarken i\u00e7erik, reklam ve tasar\u0131m taraf\u0131nda saatlerce \u00e7al\u0131\u015f\u0131yoruz; fakat \u00e7o\u011fu ekip, i\u015fin en kritik k\u0131sm\u0131n\u0131 son ana b\u0131rak\u0131yor: altyap\u0131n\u0131n bu trafi\u011fi ger\u00e7ekten kald\u0131r\u0131p kald\u0131ramayaca\u011f\u0131n\u0131 netle\u015ftirmek. \u0130\u015fte <strong>load test<\/strong>, tam da bu sorunun cevab\u0131n\u0131 \u00f6nceden g\u00f6rebilmemizi sa\u011flayan teknik ara\u00e7 seti.<\/p>\n<p>Load test, uygulaman\u0131z\u0131 ve hosting altyap\u0131n\u0131z\u0131 belirli bir e\u015fzamanl\u0131 kullan\u0131c\u0131 say\u0131s\u0131 ve istek hacmi alt\u0131nda deneyerek, <strong>nerede s\u0131n\u0131ra geldi\u011finizi<\/strong> g\u00f6rmenizi sa\u011flar. Yani \u201cBu kampanya s\u0131ras\u0131nda saniyede 200 istek alsak, sayfa yan\u0131t s\u00fcreleri ve hata oran\u0131 ne olur?\u201d sorusunun matematiksel cevab\u0131d\u0131r. Buna ek olarak, <strong>hangi bile\u015fenin \u00f6nce t\u0131kand\u0131\u011f\u0131n\u0131<\/strong> (CPU, RAM, disk I\/O, veritaban\u0131, uygulama kodu, a\u011f) ortaya \u00e7\u0131kar\u0131r.<\/p>\n<p>DCHost olarak \u015funu net \u015fekilde g\u00f6r\u00fcyoruz: Trafik patlamas\u0131ndan \u00f6nce yap\u0131lan iyi planlanm\u0131\u015f birka\u00e7 load test, sonradan ya\u015fanacak kesintilerin \u00e7ok b\u00fcy\u00fck k\u0131sm\u0131n\u0131 engelliyor. \u00d6zellikle e-ticaret, SaaS, e\u011fitim platformlar\u0131 ve haber sitelerinde, \u00f6nceden \u00f6l\u00e7\u00fclm\u00fc\u015f ve dok\u00fcmante edilmi\u015f kapasite de\u011ferleri, hem teknik ekiplerin hem de i\u015f birimlerinin riskini azalt\u0131yor. Bu rehberde, <strong>k6, Apache JMeter ve Locust<\/strong> ile pratik \u015fekilde load test nas\u0131l kurulur, sonu\u00e7lar hosting kapasitesi a\u00e7\u0131s\u0131ndan nas\u0131l yorumlan\u0131r ve DCHost altyap\u0131s\u0131nda bu verilerle nas\u0131l \u00f6l\u00e7eklenir, ad\u0131m ad\u0131m ele alaca\u011f\u0131z.<\/p>\n<h2><span id=\"Load_Stress_Soak_ve_Spike_Test_Kavramlari_Netlestirelim\">Load, Stress, Soak ve Spike Test: Kavramlar\u0131 Netle\u015ftirelim<\/span><\/h2>\n<p>\u00d6nce terminolojiyi sadele\u015ftirelim; \u00e7\u00fcnk\u00fc do\u011fru t\u00fcrde test se\u00e7meden sa\u011fl\u0131kl\u0131 kapasite karar\u0131 veremezsiniz.<\/p>\n<ul>\n<li><strong>Load test<\/strong>: Belirli bir \u201cbeklenen\u201d y\u00fck alt\u0131nda (\u00f6rne\u011fin 500 e\u015fzamanl\u0131 kullan\u0131c\u0131, saniyede 100 istek) sistemin davran\u0131\u015f\u0131n\u0131 \u00f6l\u00e7ersiniz. Bu rehberin odak noktas\u0131 bu.<\/li>\n<li><strong>Stress test<\/strong>: Bilin\u00e7li olarak kapasitenin \u00e7ok \u00fcst\u00fcne \u00e7\u0131k\u0131p sistemin nerede \u00e7\u00f6kt\u00fc\u011f\u00fcn\u00fc, nas\u0131l toparland\u0131\u011f\u0131n\u0131 ve hata verdi\u011finde ne yapt\u0131\u011f\u0131n\u0131 g\u00f6zlemlersiniz.<\/li>\n<li><strong>Soak (dayan\u0131kl\u0131l\u0131k) test<\/strong>: Orta-y\u00fcksek bir y\u00fck\u00fc saatlerce ya da g\u00fcnlerce verip bellek s\u0131z\u0131nt\u0131s\u0131, ba\u011flant\u0131 birikmesi, log \u015fi\u015fmesi gibi <strong>zamanla ortaya \u00e7\u0131kan sorunlar\u0131<\/strong> yakalars\u0131n\u0131z.<\/li>\n<li><strong>Spike test<\/strong>: K\u0131sa s\u00fcrede aniden \u00e7ok y\u00fcksek trafi\u011fe \u00e7\u0131k\u0131p tekrar d\u00fc\u015ferek, ani piklere sistemin nas\u0131l tepki verdi\u011fini \u00f6l\u00e7ersiniz.<\/li>\n<\/ul>\n<p>Planlad\u0131\u011f\u0131n\u0131z etkinli\u011fe g\u00f6re bu test t\u00fcrlerini kombine etmek en sa\u011fl\u0131kl\u0131s\u0131d\u0131r. \u00d6rne\u011fin bir e-ticaret kampanyas\u0131nda \u00f6nce load test ile \u201chedef konfor b\u00f6lgenizi\u201d, ard\u0131ndan k\u0131sa bir stress + spike testiyle de \u201ck\u0131r\u0131lma noktan\u0131z\u0131\u201d g\u00f6rmek iyi bir pratik.<\/p>\n<h2><span id=\"Load_Test_Oncesi_Hazirlik_Hedefler_Metrikler_ve_Senaryolar\">Load Test \u00d6ncesi Haz\u0131rl\u0131k: Hedefler, Metrikler ve Senaryolar<\/span><\/h2>\n<h3><span id=\"Is_hedeflerini_teknik_hedeflere_cevirmek\">\u0130\u015f hedeflerini teknik hedeflere \u00e7evirmek<\/span><\/h3>\n<p>Load testin ba\u015far\u0131s\u0131, <strong>senaryoyu ne kadar ger\u00e7ek\u00e7i tan\u0131mlad\u0131\u011f\u0131n\u0131zla<\/strong> do\u011fru orant\u0131l\u0131. \u0130lk ad\u0131m, pazarlama ve \u00fcr\u00fcn ekiplerinden say\u0131lar istemek:<\/p>\n<ul>\n<li>Kampanya d\u00f6neminde <strong>g\u00fcnl\u00fck toplam beklenen ziyaret\u00e7i<\/strong> say\u0131s\u0131 nedir?<\/li>\n<li>Pik anlarda ka\u00e7 <strong>e\u015fzamanl\u0131 kullan\u0131c\u0131<\/strong> bekleniyor?<\/li>\n<li>Bu kullan\u0131c\u0131lar\u0131n y\u00fczde ka\u00e7\u0131 sepete \u00fcr\u00fcn ekleyecek, y\u00fczde ka\u00e7\u0131 \u00f6deme deneyecek, y\u00fczde ka\u00e7\u0131 sadece i\u00e7erik t\u00fcketecek?<\/li>\n<li>Kabul etti\u011finiz <strong>maksimum ortalama yan\u0131t s\u00fcresi<\/strong> (\u00f6r. 1 saniye alt\u0131nda) ve <strong>maksimum hata oran\u0131<\/strong> (\u00f6r. %1\u2019in alt\u0131nda 5xx) nedir?<\/li>\n<\/ul>\n<p>Bu cevaplar\u0131, k6 \/ JMeter \/ Locust senaryolar\u0131na \u015fu \u015fekilde \u00e7evirirsiniz:<\/p>\n<ul>\n<li>\u201c10 dakika boyunca 200 VU (virtual user), her kullan\u0131c\u0131 saniyede 1 istek yapacak.\u201d<\/li>\n<li>\u201cKullan\u0131c\u0131lar\u0131n %70\u2019i sadece listeleme gezinecek, %20\u2019si \u00fcr\u00fcn detaya bakacak, %10\u2019u \u00f6deme giri\u015fimi yapacak.\u201d<\/li>\n<li>\u201c95. y\u00fczdelik (p95) yan\u0131t s\u00fcresi 800 ms\u2019yi, hata oran\u0131 %1\u2019i a\u015farsa testi ba\u015far\u0131s\u0131z say.\u201d<\/li>\n<\/ul>\n<h3><span id=\"Izlenecek_metrikler_Sadece_RPS_ve_yanit_suresine_bakmayin\">\u0130zlenecek metrikler: Sadece RPS ve yan\u0131t s\u00fcresine bakmay\u0131n<\/span><\/h3>\n<p>Load test \u00e7\u0131kt\u0131s\u0131nda g\u00f6z\u00fcn\u00fcz do\u011fal olarak <strong>yan\u0131t s\u00fcreleri<\/strong> ve <strong>saniyedeki istek (RPS\/QPS)<\/strong> metriklerine kayar; ama altyap\u0131 taraf\u0131nda ayn\u0131 anda \u015fu metrikleri de mutlaka takip etmelisiniz:<\/p>\n<ul>\n<li>CPU kullan\u0131m\u0131 (ortalama ve \u00e7ekirdek ba\u015f\u0131)<\/li>\n<li>RAM kullan\u0131m\u0131, swap kullan\u0131m\u0131<\/li>\n<li>Disk I\/O (okuma\/yazma IOPS ve latency)<\/li>\n<li>A\u011f trafi\u011fi (giden-gelen Mbps, paket kayb\u0131)<\/li>\n<li>Veritaban\u0131 metrikleri (sorgu say\u0131s\u0131, yava\u015f sorgu say\u0131s\u0131, lock kontention)<\/li>\n<li>Uygulama error log\u2019lar\u0131 (\u00f6zellikle 5xx, exception\u2019lar)<\/li>\n<\/ul>\n<p>Bu noktada, daha \u00f6nce anlatt\u0131\u011f\u0131m\u0131z <a href=\"https:\/\/www.dchost.com\/blog\/vps-kaynak-kullanimi-izleme-rehberi-htop-iotop-netdata-ve-prometheus\/\">VPS kaynak kullan\u0131m\u0131 izleme rehberinde<\/a> payla\u015ft\u0131\u011f\u0131m\u0131z htop, iotop, Netdata ve Prometheus gibi ara\u00e7lar load test s\u0131ras\u0131nda da m\u00fckemmel i\u015f \u00e7\u0131kar\u0131yor. Testi ba\u015flatmadan \u00f6nce bu izleme ara\u00e7lar\u0131n\u0131 konfig\u00fcre etmeniz, sonradan yorum yapmay\u0131 \u00e7ok kolayla\u015ft\u0131r\u0131yor.<\/p>\n<h3><span id=\"Gercekci_kullanici_senaryolari_olusturmak\">Ger\u00e7ek\u00e7i kullan\u0131c\u0131 senaryolar\u0131 olu\u015fturmak<\/span><\/h3>\n<p>Ba\u015far\u0131l\u0131 bir load test, <strong>\u201ctek endpoint\u2019e abanmaktan\u201d<\/strong> \u00e7ok daha fazlas\u0131d\u0131r. Ger\u00e7ek kullan\u0131c\u0131 davran\u0131\u015f\u0131na yak\u0131n bir kar\u0131\u015f\u0131m tasarlamak gerekir:<\/p>\n<ul>\n<li>Ana sayfa, kategori, \u00fcr\u00fcn listesi gibi y\u00fcksek trafikli GET istekleri<\/li>\n<li>Sepete ekleme, favori, giri\u015f yapma gibi hafif POST istekleri<\/li>\n<li>\u00d6deme, sipari\u015f olu\u015fturma gibi hem uygulama hem veritaban\u0131 i\u00e7in a\u011f\u0131r POST istekleri<\/li>\n<li>Arama istekleri, filtreleme gibi index kullan\u0131m\u0131 ve CPU t\u00fcketen sorgular<\/li>\n<\/ul>\n<p>Ayr\u0131ca cache ve CDN davran\u0131\u015f\u0131 da \u00e7ok kritik. Daha \u00f6nce detayland\u0131rd\u0131\u011f\u0131m\u0131z <a href=\"https:\/\/www.dchost.com\/blog\/tarayici-ve-cdn-onbellekleme-neden-bu-kadar-kritik\/\">taray\u0131c\u0131 ve CDN \u00f6nbellekleme stratejileri<\/a>, load test kurgusunda da dikkate al\u0131nmal\u0131. E\u011fer ger\u00e7ek d\u00fcnyada trafi\u011finizin b\u00fcy\u00fck b\u00f6l\u00fcm\u00fc CDN\u2019den cache\u2019ten servis edilecekse, load testi direkt origin sunucuya m\u0131, yoksa CDN arkas\u0131ndan m\u0131 yapaca\u011f\u0131n\u0131za \u00f6zellikle karar vermelisiniz.<\/p>\n<h2><span id=\"Test_Ortami_ve_Hosting_Kapasitesi_DCHost_Tarafinda_Nelere_Dikkat_Etmeli\">Test Ortam\u0131 ve Hosting Kapasitesi: DCHost Taraf\u0131nda Nelere Dikkat Etmeli?<\/span><\/h2>\n<h3><span id=\"Canli_mi_staging_mi_Gercekci_ama_kontrollu_ortam\">Canl\u0131 m\u0131 staging mi? Ger\u00e7ek\u00e7i ama kontroll\u00fc ortam<\/span><\/h3>\n<p>\u0130deal senaryo, <strong>canl\u0131ya m\u00fcmk\u00fcn oldu\u011funca benzeyen bir staging ortam\u0131nda<\/strong> load test yapmakt\u0131r. Ancak \u00e7o\u011fu zaman maliyet ve zaman nedeniyle bire bir kopya kurulam\u0131yor. O zaman \u015fu yakla\u015f\u0131m\u0131 \u00f6neriyoruz:<\/p>\n<ul>\n<li>Canl\u0131da kullan\u0131lan DCHost <a href=\"https:\/\/www.dchost.com\/tr\/vps\">VPS<\/a> ya da <a href=\"https:\/\/www.dchost.com\/tr\/fiziksel-sunucu\">dedicated sunucu<\/a>nun <strong>ayn\u0131 konfig\u00fcrasyonda k\u00fc\u00e7\u00fck \u00f6l\u00e7ekli bir kopyas\u0131n\u0131<\/strong> olu\u015fturun (\u00f6rne\u011fin yar\u0131 kaynakla).<\/li>\n<li>Uygulamay\u0131 ve veritaban\u0131n\u0131 buraya klonlay\u0131n (ger\u00e7ek veriyi maskeleyerek).<\/li>\n<li>Load testi burada \u00e7al\u0131\u015ft\u0131r\u0131p elde etti\u011finiz kapasiteyi <strong>do\u011frusal olmayan ama yakla\u015f\u0131k bir katsay\u0131yla<\/strong> \u00fcretim i\u00e7in yorumlay\u0131n.<\/li>\n<\/ul>\n<p>E\u011fer staging kurma \u015fans\u0131n\u0131z yoksa ve canl\u0131 ortamda test yapmak zorundaysan\u0131z, bunu <strong>d\u00fc\u015f\u00fck yo\u011funluklu saatlere<\/strong> kayd\u0131rmal\u0131, i\u015f birimlerini bilgilendirmeli ve mutlaka kademeli y\u00fck art\u0131r\u0131m\u0131 yapmal\u0131s\u0131n\u0131z.<\/p>\n<h3><span id=\"Paylasimli_hosting_VPS_ve_dedicated_icin_yaklasim_farklari\">Payla\u015f\u0131ml\u0131 hosting, VPS ve dedicated i\u00e7in yakla\u015f\u0131m farklar\u0131<\/span><\/h3>\n<ul>\n<li><strong>Payla\u015f\u0131ml\u0131 hosting<\/strong>: Ayn\u0131 fiziksel kaynaklar\u0131 ba\u015fka kullan\u0131c\u0131larla payla\u015ft\u0131\u011f\u0131n\u0131z i\u00e7in agresif load test genellikle \u00f6nerilmez. K\u0131sa ve d\u00fc\u015f\u00fck yo\u011funluklu testler yap\u0131labilir, ama ciddi kapasiteleri \u00f6l\u00e7mek i\u00e7in <strong>VPS veya dedicated<\/strong> tercih etmelisiniz.<\/li>\n<li><strong>VPS<\/strong>: Bug\u00fcn \u00e7o\u011fu orta-b\u00fcy\u00fck proje i\u00e7in en esnek alan buras\u0131. CPU, RAM, disk ve a\u011f limitleri net oldu\u011fu i\u00e7in load test sonu\u00e7lar\u0131n\u0131 kapasite planlamas\u0131na \u00e7evirmek daha kolayd\u0131r.<\/li>\n<li><strong>Dedicated sunucu ve colocation<\/strong>: Tam kaynak kontrol\u00fc sa\u011flad\u0131\u011f\u0131 i\u00e7in, y\u00fcksek trafikli projelerde hem load hem stress hem de soak testleri i\u00e7in idealdir.<\/li>\n<\/ul>\n<p>DCHost altyap\u0131s\u0131nda, load test sonu\u00e7lar\u0131n\u0131za g\u00f6re <strong>VPS \u00f6l\u00e7eklendirme<\/strong> ya da daha g\u00fc\u00e7l\u00fc dedicated\/colocation mimarisine ge\u00e7i\u015f gibi ad\u0131mlar\u0131 olduk\u00e7a h\u0131zl\u0131 planlayabiliyoruz. \u00d6zellikle WooCommerce, Magento, Laravel\/Node.js gibi yo\u011fun kaynak kullanan uygulamalarda \u00f6nce k\u00fc\u00e7\u00fck bir load test, sonra <a href=\"https:\/\/www.dchost.com\/blog\/yogun-trafikli-kampanyalar-icin-hosting-olceklendirme-rehberi\/\">kampanya d\u00f6nemleri i\u00e7in hosting \u00f6l\u00e7eklendirme rehberimizle<\/a> birlikte kapasiteyi netle\u015ftirmek ciddi fark yarat\u0131yor.<\/p>\n<h3><span id=\"Cok_katmanli_mimari_ve_load_balancer_etkisi\">\u00c7ok katmanl\u0131 mimari ve load balancer etkisi<\/span><\/h3>\n<p>E\u011fer mimarinizde <strong>web sunucusu + uygulama sunucusu + veritaban\u0131<\/strong> ayr\u0131m\u0131 ve belki bir de <strong>Nginx reverse proxy \/ basit load balancer<\/strong> katman\u0131 varsa, her bir katman\u0131n s\u0131n\u0131r\u0131n\u0131 ayr\u0131 ayr\u0131 g\u00f6rmek istersiniz. K\u00fc\u00e7\u00fck projeler i\u00e7in yazd\u0131\u011f\u0131m\u0131z <a href=\"https:\/\/www.dchost.com\/blog\/nginx-reverse-proxy-ve-basit-load-balancer-kurulumu-kucuk-projeler-icin-uygulamali-rehber\/\">Nginx reverse proxy ve basit load balancer rehberi<\/a>, bu katman\u0131 h\u0131zl\u0131ca aya\u011fa kald\u0131rmak i\u00e7in g\u00fczel bir ba\u015flang\u0131\u00e7.<\/p>\n<p>Load test s\u0131ras\u0131nda, trafi\u011fi \u00f6nce load balancer\u2019a y\u00f6nlendirip oradan arka u\u00e7 sunucular\u0131na da\u011f\u0131tarak, <strong>tek noktada bo\u011fulma riskini<\/strong> de test etmi\u015f olursunuz.<\/p>\n<h2><span id=\"k6_ile_Load_Test_Modern_Script_Tabanli_Yaklasim\">k6 ile Load Test: Modern, Script Tabanl\u0131 Yakla\u015f\u0131m<\/span><\/h2>\n<h3><span id=\"k6yi_ne_zaman_tercih_etmeli\">k6\u2019y\u0131 ne zaman tercih etmeli?<\/span><\/h3>\n<p><strong>k6<\/strong>, modern, geli\u015ftirici dostu ve \u00f6zellikle CI\/CD s\u00fcre\u00e7lerine entegre etmek i\u00e7in \u00e7ok uygun bir load test arac\u0131. Senaryolar\u0131 JavaScript ile yazd\u0131\u011f\u0131n\u0131z i\u00e7in, frontend\/backend ekipleri taraf\u0131ndan da kolayca okunup g\u00fcncellenebiliyor. \u00d6zellikle:<\/p>\n<ul>\n<li>API performans\u0131n\u0131 \u00f6l\u00e7mek<\/li>\n<li>Tekrar edilebilir, kodlanm\u0131\u015f load test senaryolar\u0131 olu\u015fturmak<\/li>\n<li>Git tabanl\u0131 versiyon kontrol ve CI pipeline\u2019lar\u0131nda otomatik performans testi ko\u015fmak<\/li>\n<\/ul>\n<p>gibi durumlarda k6 olduk\u00e7a g\u00fc\u00e7l\u00fc.<\/p>\n<h3><span id=\"Basit_bir_k6_senaryosu\">Basit bir k6 senaryosu<\/span><\/h3>\n<p>A\u015fa\u011f\u0131daki \u00f6rnek, tek endpoint\u2019i hedefleyen ve 1 dakika boyunca kademeli y\u00fck veren basit bir k6 script\u2019i:<\/p>\n<pre class=\"language-python line-numbers\"><code class=\"language-python\">import http from &quot;k6\/http&quot;;\nimport { sleep } from &quot;k6&quot;;\n\nexport const options = {\n  stages: [\n    { duration: &quot;30s&quot;, target: 50 },   \/\/ 30 saniyede 50 e\u015fzamanl\u0131 kullan\u0131c\u0131ya \u00e7\u0131k\n    { duration: &quot;1m&quot;, target: 50 },    \/\/ 1 dakika boyunca 50 kullan\u0131c\u0131y\u0131 koru\n    { duration: &quot;30s&quot;, target: 0 },    \/\/ 30 saniyede tekrar 0'a in\n  ],\n  thresholds: {\n    http_req_duration: [&quot;p(95)&lt;800&quot;], \/\/ p95 800 ms alt\u0131nda olsun\n    http_req_failed: [&quot;rate&lt;0.01&quot;],   \/\/ hata oran\u0131 %1'in alt\u0131nda olsun\n  },\n};\n\nexport default function () {\n  const res = http.get(&quot;https:\/\/siteniz.com\/&quot;);\n  sleep(1);\n}\n<\/code><\/pre>\n<p>Bu script\u2019i <code>test.js<\/code> olarak kaydedip \u015fu komutla \u00e7al\u0131\u015ft\u0131rabilirsiniz:<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">k6 run test.js<\/code><\/pre>\n<p>\u00c7\u0131kt\u0131da ortalama, p95, p99 yan\u0131t s\u00fcrelerini, hata oranlar\u0131n\u0131 ve RPS de\u011ferlerini g\u00f6receksiniz. Bu sonu\u00e7lar\u0131, DCHost \u00fczerindeki sunucunuzdan izledi\u011finiz CPU\/RAM\/disk metrikleriyle birlikte yorumlamak kritik.<\/p>\n<h3><span id=\"Gercekci_k6_senaryolari_Birden_fazla_endpoint\">Ger\u00e7ek\u00e7i k6 senaryolar\u0131: Birden fazla endpoint<\/span><\/h3>\n<p>Daha ger\u00e7ek\u00e7i bir senaryoda, kullan\u0131c\u0131lar\u0131n farkl\u0131 endpoint\u2019lere farkl\u0131 oranlarda gitti\u011fini modelleyebilirsiniz:<\/p>\n<pre class=\"language-python line-numbers\"><code class=\"language-python\">import http from &quot;k6\/http&quot;;\nimport { sleep } from &quot;k6&quot;;\n\nexport const options = {\n  vus: 100,\n  duration: &quot;5m&quot;,\n};\n\nexport default function () {\n  http.get(&quot;https:\/\/siteniz.com\/&quot;);        \/\/ ana sayfa\n  sleep(0.5);\n  http.get(&quot;https:\/\/siteniz.com\/kategori&quot;); \/\/ kategori\n  sleep(0.5);\n  http.get(&quot;https:\/\/siteniz.com\/urun\/123&quot;); \/\/ \u00fcr\u00fcn detay\n  sleep(1);\n}\n<\/code><\/pre>\n<p>Bu yap\u0131y\u0131 fonksiyonlara b\u00f6lerek, \u201csadece gezinen kullan\u0131c\u0131\u201d, \u201csepet yapan kullan\u0131c\u0131\u201d, \u201c\u00f6deme deneyen kullan\u0131c\u0131\u201d gibi <strong>profil bazl\u0131 senaryolar<\/strong> da olu\u015fturabilirsiniz.<\/p>\n<h2><span id=\"Apache_JMeter_ile_Load_Test_GUIden_Komut_Satirina\">Apache JMeter ile Load Test: GUI\u2019den Komut Sat\u0131r\u0131na<\/span><\/h2>\n<h3><span id=\"JMeter_ne_zaman_faydali\">JMeter ne zaman faydal\u0131?<\/span><\/h3>\n<p><strong>Apache JMeter<\/strong>, uzun y\u0131llard\u0131r kullan\u0131lan ve \u00f6zellikle HTTP(S), SOAP\/REST, veritaban\u0131, FTP gibi \u00e7ok \u00e7e\u015fitli protokolleri destekleyen g\u00fc\u00e7l\u00fc bir ara\u00e7. En belirgin avantaj\u0131, <strong>GUI aray\u00fcz\u00fc ile senaryo tasarlamay\u0131 kolayla\u015ft\u0131rmas\u0131<\/strong>. A\u015fa\u011f\u0131daki durumlarda JMeter \u00f6ne \u00e7\u0131kar:<\/p>\n<ul>\n<li>Teknik olmayan ekiplerin de test plan\u0131n\u0131 okuyup yorumlamas\u0131n\u0131 istiyorsan\u0131z<\/li>\n<li>\u00c7ok ad\u0131ml\u0131, form i\u00e7eren, cookie\/session y\u00f6netimi olan karma\u015f\u0131k ak\u0131\u015flar\u0131 sim\u00fcle edecekseniz<\/li>\n<li>Protokol \u00e7e\u015fitlili\u011fi (\u00f6r. HTTP + JDBC + FTP) gerekiyor ise<\/li>\n<\/ul>\n<h3><span id=\"Temel_bilesenler_Thread_Group_Sampler_Listener\">Temel bile\u015fenler: Thread Group, Sampler, Listener<\/span><\/h3>\n<p>JMeter\u2019\u0131n temel yap\u0131 ta\u015flar\u0131n\u0131 \u015f\u00f6yle \u00f6zetleyebiliriz:<\/p>\n<ul>\n<li><strong>Thread Group<\/strong>: Ka\u00e7 sanal kullan\u0131c\u0131 (thread) olaca\u011f\u0131n\u0131, ne kadar s\u00fcrede artaca\u011f\u0131n\u0131 (ramp-up) ve ka\u00e7 d\u00f6ng\u00fc \u00e7al\u0131\u015faca\u011f\u0131n\u0131 belirler.<\/li>\n<li><strong>HTTP Request Sampler<\/strong>: Test etmek istedi\u011finiz ger\u00e7ek HTTP isteklerini tan\u0131mlad\u0131\u011f\u0131n\u0131z bile\u015fen.<\/li>\n<li><strong>Timers, Assertions<\/strong>: Kullan\u0131c\u0131lar aras\u0131 bekleme s\u00fcreleri ve yan\u0131t s\u00fcresi\/hata kodu gibi kriterleri kontrol eden ekler.<\/li>\n<li><strong>Listeners<\/strong>: Sonu\u00e7lar\u0131 grafik, tablo, log vb. formatlarda g\u00f6rmenizi sa\u011flar (View Results Tree, Summary Report vb.).<\/li>\n<\/ul>\n<p>\u00d6rnek bir senaryoda, bir Thread Group i\u00e7inde:<\/p>\n<ul>\n<li>Ana sayfa i\u00e7in bir HTTP Request<\/li>\n<li>Kategori i\u00e7in bir HTTP Request<\/li>\n<li>\u00dcr\u00fcn detay\u0131 i\u00e7in bir HTTP Request<\/li>\n<li>Arada Uniform Random Timer\u2019lar<\/li>\n<\/ul>\n<p>tan\u0131mlay\u0131p, 100 kullan\u0131c\u0131y\u0131 2 dakikada kademeli art\u0131rarak 10 dakika boyunca ko\u015fabilirsiniz.<\/p>\n<h3><span id=\"Performansli_kullanim_icin_non-GUI_mod\">Performansl\u0131 kullan\u0131m i\u00e7in non-GUI mod<\/span><\/h3>\n<p>JMeter\u2019\u0131 b\u00fcy\u00fck hacimli testlerde GUI ile \u00e7al\u0131\u015ft\u0131rmak hem test makinesini yorabilir hem de sonu\u00e7lar\u0131 yan\u0131ltabilir. Bu y\u00fczden test plan\u0131n\u0131z\u0131 (.jmx dosyas\u0131) kaydedip, load generator makinenizde <strong>komut sat\u0131r\u0131ndan<\/strong> \u015f\u00f6yle \u00e7al\u0131\u015ft\u0131rman\u0131z\u0131 \u00f6neririz:<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">jmeter -n -t plan.jmx -l sonuc.jtl -e -o rapor\/<\/code><\/pre>\n<p>Buradaki <code>-e -o rapor\/<\/code> parametreleri, test sonunda HTML raporu da \u00fcretir. Bu raporu uygulama ve altyap\u0131 log\u2019lar\u0131n\u0131zla yan yana a\u00e7t\u0131\u011f\u0131n\u0131zda, hangi dakikada hangi hatalar\u0131n artt\u0131\u011f\u0131n\u0131 \u00e7ok net g\u00f6r\u00fcrs\u00fcn\u00fcz.<\/p>\n<h2><span id=\"Locust_ile_Load_Test_Python_ile_Davranis_Bazli_Senaryolar\">Locust ile Load Test: Python ile Davran\u0131\u015f Bazl\u0131 Senaryolar<\/span><\/h2>\n<h3><span id=\"Locustun_guclu_oldugu_alanlar\">Locust\u2019un g\u00fc\u00e7l\u00fc oldu\u011fu alanlar<\/span><\/h3>\n<p><strong>Locust<\/strong>, Python tabanl\u0131, \u00f6zellikle davran\u0131\u015f odakl\u0131 (behavior-driven) load test senaryolar\u0131 yazmak i\u00e7in ideal bir ara\u00e7. Kullan\u0131c\u0131lar\u0131n \u201cg\u00fcnl\u00fck hayattaki davran\u0131\u015flar\u0131n\u0131\u201d birer Python s\u0131n\u0131f\u0131 ve fonksiyonu gibi modelleyebildi\u011finiz i\u00e7in, karma\u015f\u0131k i\u015f ak\u0131\u015flar\u0131n\u0131 ifade etmek olduk\u00e7a do\u011fal hale geliyor.<\/p>\n<p>\u015eu durumlarda Locust iyi bir tercih:<\/p>\n<ul>\n<li>Ekibiniz Python\u2019a h\u00e2kimse ve testleri de kod gibi version control alt\u0131nda tutmak istiyorsan\u0131z<\/li>\n<li>Karma\u015f\u0131k login\/checkout ak\u0131\u015flar\u0131, JWT token yenileme, websocket vb. senaryolar modelleyecekseniz<\/li>\n<li>Da\u011f\u0131t\u0131k (distributed) \u015fekilde birden \u00e7ok load generator\u2019dan y\u00fck vermek istiyorsan\u0131z<\/li>\n<\/ul>\n<h3><span id=\"Basit_bir_Locust_ornegi\">Basit bir Locust \u00f6rne\u011fi<\/span><\/h3>\n<p>A\u015fa\u011f\u0131daki \u00f6rnek, ana sayfa ve \u00fcr\u00fcn detay\u0131 endpoint\u2019lerini farkl\u0131 a\u011f\u0131rl\u0131klarla \u00e7a\u011f\u0131ran basit bir kullan\u0131c\u0131 tan\u0131m\u0131d\u0131r:<\/p>\n<pre class=\"language-python line-numbers\"><code class=\"language-python\">from locust import HttpUser, task, between\n\nclass WebsiteUser(HttpUser):\n    wait_time = between(1, 3)  # istekler aras\u0131 1-3 sn bekle\n\n    @task(3)\n    def index(self):\n        self.client.get(&quot;\/&quot;)\n\n    @task(1)\n    def product_page(self):\n        self.client.get(&quot;\/urun\/123&quot;)\n<\/code><\/pre>\n<p>Bu dosyay\u0131 <code>locustfile.py<\/code> olarak kaydedip \u015fu komutla \u00e7al\u0131\u015ft\u0131rabilirsiniz:<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">locust -H https:\/\/siteniz.com<\/code><\/pre>\n<p>Daha sonra taray\u0131c\u0131dan <code>http:\/\/localhost:8089<\/code> aray\u00fcz\u00fcne girerek kullan\u0131c\u0131 say\u0131s\u0131, art\u0131\u015f h\u0131z\u0131 ve hedef host gibi parametreleri GUI \u00fczerinden belirleyip testi ba\u015flatabilirsiniz. B\u00fcy\u00fck testlerde ise Locust\u2019u distributed modda, birden fazla worker ile kullanarak DCHost \u00fczerindeki load generator VPS\u2019lerinizden e\u015fzamanl\u0131 y\u00fck verebilirsiniz.<\/p>\n<h2><span id=\"Sonuclari_Yorumlamak_Bu_Sunucu_Kac_Kullanici_Kaldiriyor\">Sonu\u00e7lar\u0131 Yorumlamak: Bu Sunucu Ka\u00e7 Kullan\u0131c\u0131 Kald\u0131r\u0131yor?<\/span><\/h2>\n<h3><span id=\"Kabul_kriterlerini_en_bastan_tanimlayin\">Kabul kriterlerini en ba\u015ftan tan\u0131mlay\u0131n<\/span><\/h3>\n<p>Testi \u00e7al\u0131\u015ft\u0131rmadan \u00f6nce, \u015fu \u00fc\u00e7 sorunun cevab\u0131n\u0131 netle\u015ftirin:<\/p>\n<ul>\n<li>p95 ve p99 <strong>yan\u0131t s\u00fcresi hedefleriniz nedir<\/strong> (\u00f6r. p95 &lt; 800 ms, p99 &lt; 1500 ms)?<\/li>\n<li>Kabul edilebilir <strong>maksimum hata oran\u0131<\/strong> nedir (\u00f6rn. toplam isteklerin &lt; %1\u2019i 5xx olabilir)?<\/li>\n<li>Sunucu kaynaklar\u0131n\u0131n <strong>maksimum ne kadar\u0131na<\/strong> \u00e7\u0131k\u0131labilir (\u00f6rn. CPU ortalama &lt; %75, RAM &lt; %80)?<\/li>\n<\/ul>\n<p>Test bitince, \u201cSaniyede 120 istek ald\u0131\u011f\u0131m\u0131zda p95 700 ms, hata oran\u0131 %0.3, CPU %65, RAM %70 idi.\u201d gibi c\u00fcmleler kurabiliyorsan\u0131z, i\u015fte o zaman ger\u00e7ekten kapasiteyi \u00f6l\u00e7m\u00fc\u015f olursunuz.<\/p>\n<h3><span id=\"Darbogazi_bulmak_CPU_mu_IO_mu_veritabani_mi\">Darbo\u011faz\u0131 bulmak: CPU mu, I\/O mu, veritaban\u0131 m\u0131?<\/span><\/h3>\n<p>Load test \u00e7\u0131kt\u0131s\u0131 tek ba\u015f\u0131na <strong>\u201cnerenin t\u0131kand\u0131\u011f\u0131n\u0131\u201d<\/strong> s\u00f6ylemez; onu altyap\u0131 izleme verileriyle birle\u015ftirmeniz gerekir. \u00d6rne\u011fin:<\/p>\n<ul>\n<li>CPU %90+, load average \u00e7ok y\u00fcksek, ama disk ve a\u011f normal: Muhtemelen PHP\/Node.js uygulama kodu veya veritaban\u0131 sorgular\u0131 a\u011f\u0131r.<\/li>\n<li>Disk I\/O ve IOPS tavan yapm\u0131\u015f, iotop\u2019ta mysqld veya elasticsearch \u00f6ne \u00e7\u0131k\u0131yor: Veritaban\u0131 veya arama motoru tuning ve indeksleme ihtiyac\u0131 var.<\/li>\n<li>Network throughput limitlerine yakla\u015f\u0131l\u0131yor, TCP ba\u011flant\u0131 say\u0131s\u0131 tavan yap\u0131yor: Ayn\u0131 anda \u00e7ok fazla open connection, keep-alive ayarlar\u0131 veya proxy\/Nginx tuning gerekebilir.<\/li>\n<\/ul>\n<p>\u00d6zellikle MySQL\/PostgreSQL taraf\u0131nda, daha \u00f6nce payla\u015ft\u0131\u011f\u0131m\u0131z <a href=\"https:\/\/www.dchost.com\/blog\/woocommerce-kapasite-planlama-rehberi-vcpu-ram-iops-nasil-hesaplanir\/\">WooCommerce kapasite planlama rehberi<\/a> ve <a href=\"https:\/\/www.dchost.com\/blog\/woocommerce-ve-buyuk-katalog-siteleri-icin-mysql-indeksleme-ve-sorgu-optimizasyonu-rehberi\/\">b\u00fcy\u00fck katalog siteleri i\u00e7in MySQL indeksleme ve sorgu optimizasyonu rehberi<\/a> bu darbo\u011fazlar\u0131n giderilmesinde olduk\u00e7a i\u015fe yar\u0131yor.<\/p>\n<h3><span id=\"Load_test_Ayar_degisikligi_Yeniden_test_dongusu\">Load test \u2192 Ayar de\u011fi\u015fikli\u011fi \u2192 Yeniden test d\u00f6ng\u00fcs\u00fc<\/span><\/h3>\n<p>Tek seferlik bir load test, \u00e7o\u011fu zaman sadece <strong>foto\u011fraf \u00e7eker<\/strong>. As\u0131l de\u011fer, \u015fu d\u00f6ng\u00fcy\u00fc birka\u00e7 kez tekrarlad\u0131\u011f\u0131n\u0131zda ortaya \u00e7\u0131kar:<\/p>\n<ol>\n<li>Mevcut mimari ve ayarlarla load test \u00e7al\u0131\u015ft\u0131r.<\/li>\n<li>Darbo\u011faz\u0131 tespit et (\u00f6r. CPU y\u00fcksek, veritaban\u0131 yava\u015f, PHP-FPM child say\u0131s\u0131 yetersiz vb.).<\/li>\n<li>\u0130yile\u015ftirme yap (daha y\u00fcksek DCHost VPS plan\u0131, dedicated sunucuya ge\u00e7i\u015f, PHP-FPM\/OPcache tuning, veritaban\u0131 indeksleri, CDN ve cache ayarlar\u0131 vb.).<\/li>\n<li>Ayn\u0131 senaryoyla load test\u2019i tekrar \u00e7al\u0131\u015ft\u0131r ve eski sonu\u00e7larla k\u0131yasla.<\/li>\n<\/ol>\n<p>Bu yakla\u015f\u0131m\u0131, daha \u00f6nce ayr\u0131nt\u0131l\u0131 anlatt\u0131\u011f\u0131m\u0131z <a href=\"https:\/\/www.dchost.com\/blog\/siteniz-belli-saatlerde-yavasliyorsa-paylasimli-hosting-ve-vpste-cpu-io-ve-mysql-darbogazi-teshisi\/\">CPU, I\/O ve MySQL darbo\u011faz\u0131 te\u015fhis rehberi<\/a> ile birle\u015ftirdi\u011finizde, yaln\u0131zca kapasiteyi de\u011fil, genel olarak performans\u0131 da ciddi \u015fekilde iyile\u015ftirebilirsiniz.<\/p>\n<h2><span id=\"DCHost_ile_Trafik_Patlamasina_Hazirlanmak_Pratik_Yol_Haritasi\">DCHost ile Trafik Patlamas\u0131na Haz\u0131rlanmak: Pratik Yol Haritas\u0131<\/span><\/h2>\n<h3><span id=\"1_Mevcut_durumu_ve_hedef_trafigi_netlestirin\">1. Mevcut durumu ve hedef trafi\u011fi netle\u015ftirin<\/span><\/h3>\n<p>\u00d6nce, DCHost \u00fczerindeki mevcut hosting paketinizi (payla\u015f\u0131ml\u0131, VPS, dedicated veya colocation) ve <strong>\u015fu anki tipik trafik profilinizi<\/strong> \u00e7\u0131kar\u0131n. Ard\u0131ndan pazarlama ekibinden kampanya ya da lansman i\u00e7in <strong>beklenen pik de\u011ferleri<\/strong> al\u0131n. Bu iki bilgiyi yan yana koyup \u201c\u015fu anki mimari bu hedefi kald\u0131rabilir mi?\u201d sorusunu soral\u0131m.<\/p>\n<h3><span id=\"2_Basit_bir_k6JMeterLocust_senaryosu_hazirlayin\">2. Basit bir k6\/JMeter\/Locust senaryosu haz\u0131rlay\u0131n<\/span><\/h3>\n<p>Bu rehberdeki \u00f6rneklerden yola \u00e7\u0131karak, sitenizin ana ak\u0131\u015f\u0131n\u0131 (listeleme + detay + kritik i\u015flem) temsil eden bir senaryo yaz\u0131n. \u0130lk testiniz <strong>m\u00fckemmel olmak zorunda de\u011fil<\/strong>. \u00d6nemli olan, \u00f6l\u00e7meye ba\u015flamak ve tekrar edilebilir bir script elde etmek.<\/p>\n<h3><span id=\"3_Izleme_ve_loglamayi_devreye_alin\">3. \u0130zleme ve loglamay\u0131 devreye al\u0131n<\/span><\/h3>\n<p>Load testten \u00f6nce, VPS\/dedicated sunucunuzda temel izleme ara\u00e7lar\u0131n\u0131 ve loglamay\u0131 mutlaka kontrol edin. Bu konuya \u00f6zel olarak haz\u0131rlad\u0131\u011f\u0131m\u0131z <a href=\"https:\/\/www.dchost.com\/blog\/vps-izleme-ve-alarm-kurulumu-prometheus-grafana-ve-uptime-kuma-ile-baslangic\/\">VPS izleme ve alarm kurulum rehberimiz<\/a>, Prometheus + Grafana + Uptime Kuma ile \u00e7ok pratik bir ba\u015flang\u0131\u00e7 sunuyor. Test s\u0131ras\u0131nda bu dashboard\u2019lar\u0131 a\u00e7\u0131k tutarak, sistemin verdi\u011fi tepkiyi anl\u0131k olarak izleyebilirsiniz.<\/p>\n<h3><span id=\"4_Testi_kademeli_artirin_sonra_sonuclari_sogukkanli_okuyun\">4. Testi kademeli art\u0131r\u0131n, sonra sonu\u00e7lar\u0131 so\u011fukkanl\u0131 okuyun<\/span><\/h3>\n<p>\u0130lk denemede hedef trafi\u011fin %30\u201340\u2019\u0131 kadar y\u00fck verin, ard\u0131ndan %60\u201370\u2019e, sonra %100\u2019e \u00e7\u0131k\u0131n. Her a\u015famada:<\/p>\n<ul>\n<li>Yan\u0131t s\u00fcreleri ve hata oranlar\u0131n\u0131<\/li>\n<li>CPU\/RAM\/disk\/i\/o ve veritaban\u0131 metriklerini<\/li>\n<li>Uygulama ve web sunucusu loglar\u0131n\u0131<\/li>\n<\/ul>\n<p>kar\u015f\u0131la\u015ft\u0131r\u0131n. \u00d6zellikle HTTP 5xx, connection timeout, database lock, PHP fatal error gibi sinyalleri yakalamaya \u00e7al\u0131\u015f\u0131n.<\/p>\n<h3><span id=\"5_Kapasite_ve_olceklendirme_kararini_verin\">5. Kapasite ve \u00f6l\u00e7eklendirme karar\u0131n\u0131 verin<\/span><\/h3>\n<p>Test sonu\u00e7lar\u0131 hedeflerin alt\u0131ndaysa, yani sistem rahat\u00e7a kald\u0131r\u0131yorsa, <strong>mevcut planla devam edebilirsiniz<\/strong>. S\u0131n\u0131ra yak\u0131nsan\u0131z, \u015fu se\u00e7enekleri masaya yat\u0131rma zaman\u0131 gelmi\u015f demektir:<\/p>\n<ul>\n<li>DCHost VPS plan\u0131n\u0131 bir \u00fcst seviyeye \u00e7\u0131karma (daha \u00e7ok vCPU, RAM, NVMe disk)<\/li>\n<li>Yo\u011fun veritaban\u0131 y\u00fck\u00fc i\u00e7in ayr\u0131 bir veritaban\u0131 sunucusuna ge\u00e7i\u015f<\/li>\n<li>\u00d6n\u00fcne Nginx reverse proxy ve tam sayfa cache ekleme<\/li>\n<li>CDN, taray\u0131c\u0131 cache ve object cache (Redis\/Memcached) yap\u0131lar\u0131n\u0131 g\u00fc\u00e7lendirme<\/li>\n<\/ul>\n<p>Bu ad\u0131mlar\u0131 ald\u0131ktan sonra, ayn\u0131 load test senaryosunu tekrar ko\u015fup kazan\u0131m\u0131 \u00f6l\u00e7mek, yat\u0131r\u0131m\u0131n geri d\u00f6n\u00fc\u015f\u00fcn\u00fc netle\u015ftirmenizi sa\u011flar.<\/p>\n<h2><span id=\"Ozet_ve_Son_Soz_Trafik_Patlamasi_Surpriz_Olmasin\">\u00d6zet ve Son S\u00f6z: Trafik Patlamas\u0131 S\u00fcrpriz Olmas\u0131n<\/span><\/h2>\n<p>Trafik patlamalar\u0131 \u00e7o\u011fu zaman \u201cs\u00fcrpriz\u201d gibi ya\u015fansa da asl\u0131nda <strong>b\u00fcy\u00fck \u00f6l\u00e7\u00fcde \u00f6ng\u00f6r\u00fclebilir olaylar<\/strong>. Bir kampanya takvimi, lansman plan\u0131 veya i\u00e7erik stratejisi haz\u0131rland\u0131\u011f\u0131 anda, teknik tarafta da e\u015f zamanl\u0131 olarak <strong>load test plan\u0131<\/strong> yap\u0131lmas\u0131 gerekiyor. Bu rehberde g\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi, k6, JMeter ve Locust ile ger\u00e7ek\u00e7i senaryolar olu\u015fturup DCHost \u00fczerindeki hosting altyap\u0131n\u0131z\u0131 zorlamak, san\u0131ld\u0131\u011f\u0131 kadar karma\u015f\u0131k de\u011fil.<\/p>\n<p>\u00d6nemli olan, i\u015fe \u00f6nce hedefleri tan\u0131mlayarak ba\u015flamak: Ka\u00e7 kullan\u0131c\u0131, hangi ak\u0131\u015flar\u0131, hangi yan\u0131t s\u00fcresi ve hata oranlar\u0131yla deneyimlemeli? Ard\u0131ndan, uygun ara\u00e7la senaryoyu kodlamak, test boyunca sistem metriklerini izlemek ve \u00e7\u0131kan sonu\u00e7lara g\u00f6re <strong>\u00f6l\u00e7eklendirme, optimizasyon ve mimari iyile\u015ftirme<\/strong> ad\u0131mlar\u0131n\u0131 planlamak. Tek seferlik bir \u201cdeneme at\u0131\u015f\u0131\u201d de\u011fil, d\u00f6ng\u00fcsel bir iyile\u015ftirme s\u00fcreci olarak ele ald\u0131\u011f\u0131n\u0131zda, altyap\u0131n\u0131z her testle birlikte biraz daha olgunla\u015f\u0131yor.<\/p>\n<p>E\u011fer elinizde bir kampanya ya da lansman takvimi varsa ve \u201cBu trafi\u011fi kald\u0131r\u0131r m\u0131y\u0131z?\u201d sorusu kafan\u0131z\u0131 kurcal\u0131yorsa, DCHost ekibi olarak birlikte senaryo tasarlamaktan, load test ara\u00e7lar\u0131n\u0131 kurmaktan ve sonu\u00e7lar\u0131 yorumlamaktan memnuniyet duyar\u0131z. Projenizin \u00f6l\u00e7e\u011fine uygun <strong>VPS, dedicated sunucu veya colocation<\/strong> se\u00e7enekleriyle, trafik patlamas\u0131n\u0131 risk de\u011fil, f\u0131rsata \u00e7evirmenize yard\u0131mc\u0131 olabiliriz.<\/p>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>\u0130&ccedil;indekiler1 Load Test Nedir, Trafik Patlamas\u0131ndan \u00d6nce Neden Hayati?2 Load, Stress, Soak ve Spike Test: Kavramlar\u0131 Netle\u015ftirelim3 Load Test \u00d6ncesi Haz\u0131rl\u0131k: Hedefler, Metrikler ve Senaryolar3.1 \u0130\u015f hedeflerini teknik hedeflere \u00e7evirmek3.2 \u0130zlenecek metrikler: Sadece RPS ve yan\u0131t s\u00fcresine bakmay\u0131n3.3 Ger\u00e7ek\u00e7i kullan\u0131c\u0131 senaryolar\u0131 olu\u015fturmak4 Test Ortam\u0131 ve Hosting Kapasitesi: DCHost Taraf\u0131nda Nelere Dikkat Etmeli?4.1 Canl\u0131 m\u0131 staging [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":3581,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[26],"tags":[],"class_list":["post-3580","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\/3580","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=3580"}],"version-history":[{"count":0,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/posts\/3580\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/media\/3581"}],"wp:attachment":[{"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/media?parent=3580"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/categories?post=3580"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/tags?post=3580"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}