{"id":249,"date":"2025-12-14T22:17:53","date_gmt":"2025-12-14T22:17:53","guid":{"rendered":"https:\/\/www.vps.tc\/blog\/windows-sunucu-ve-iis-ile-yuksek-trafikli-site-rehberi\/"},"modified":"2025-12-14T22:21:12","modified_gmt":"2025-12-14T22:21:12","slug":"windows-sunucu-ve-iis-ile-yuksek-trafikli-site-rehberi","status":"publish","type":"post","link":"https:\/\/www.vps.tc\/blog\/tr\/windows-sunucu-ve-iis-ile-yuksek-trafikli-site-rehberi\/","title":{"rendered":"Windows Sunucu ve IIS ile Y\u00fcksek Trafikli Site Rehberi"},"content":{"rendered":"<h2>Windows sunucu ile yo\u011fun trafik alt\u0131nda istikrarl\u0131 yay\u0131n<\/h2>\n<p>Ger\u00e7ek hayatta y\u00fcksek trafikli site y\u00f6neten herkes bilir; sorun \u00e7o\u011fu zaman koddan de\u011fil altyap\u0131dan patlar. \u00d6zellikle bir windows sunucu \u00fczerinde IIS ile yay\u0131n yap\u0131yorsan\u0131z, birka\u00e7 yanl\u0131\u015f varsay\u0131mla dakikalar i\u00e7inde CPU tavan, bellek s\u0131z\u0131nt\u0131s\u0131, kuyruk dolmas\u0131 ve zaman a\u015f\u0131m\u0131 hatalar\u0131yla u\u011fra\u015fabilirsiniz. Do\u011fru planlanm\u0131\u015f bir IIS yap\u0131land\u0131rma ise ayn\u0131 donan\u0131mda \u00e7ok daha fazla iste\u011fi stabil \u015fekilde kar\u015f\u0131layabilir.<\/p>\n<p>Bu rehberde odak noktas\u0131, \u00fcretim ortam\u0131nda \u00e7al\u0131\u015fan y\u00fcksek trafikli site senaryolar\u0131 olacak. Tek bir blog de\u011fil; kampanya d\u00f6neminde saniyede y\u00fczlerce iste\u011fe \u00e7\u0131kan e-ticaret, yo\u011fun API \u00e7a\u011fr\u0131lar\u0131 veya y\u00fcksek say\u0131da e\u015fzamanl\u0131 oturuma sahip kurumsal uygulamalar gibi bask\u0131 alt\u0131nda kalan sistemlerden bahsediyoruz. T\u00fcm \u00f6rnekler windows hosting altyap\u0131s\u0131nda, Windows Server + IIS kombinasyonu \u00fczerinden ilerleyecek.<\/p>\n<p>Buradaki ad\u0131mlar\u0131n her biri, g\u00fcn\u00fcn birinde &#8220;neden yava\u015flad\u0131k?&#8221; sorusunu daha az sorman\u0131z\u0131 sa\u011flamak i\u00e7in tasarland\u0131. Yap\u0131land\u0131rmay\u0131 ad\u0131m ad\u0131m ele alal\u0131m.<\/p>\n<h2>Mimariyi tasarlamak: Tek sunucudan da\u011f\u0131t\u0131k yap\u0131ya<\/h2>\n<p>Performans ayarlar\u0131na girmeden \u00f6nce, mimariyi netle\u015ftirmek gerekiyor. Y\u00fcksek trafikli site kavram\u0131, tek bir windows sunucu ile \u00e7\u00f6z\u00fclemeyecek kadar yo\u011fun olabilir. Bu y\u00fczden \u00f6ncelikle dikey ve yatay \u00f6l\u00e7ekleme se\u00e7eneklerini masaya koymal\u0131s\u0131n\u0131z.<\/p>\n<h3>Donan\u0131m ve kapasite planlama<\/h3>\n<p>\u0130lk soru genelde \u015fu olur: &#8220;Ka\u00e7 CPU, ne kadar RAM yeter?&#8221; Cevap, uygulaman\u0131n do\u011fas\u0131na ba\u011fl\u0131, ama baz\u0131 pratik s\u0131n\u0131rlar var. IIS taraf\u0131nda CPU \u00e7ekirdek say\u0131s\u0131, e\u015fzamanl\u0131 istekleri kar\u015f\u0131lama kapasitesini do\u011frudan etkiler. Haf\u0131za ise hem .NET runtime hem de cache kullan\u0131m\u0131 i\u00e7in kritik. Ba\u015flang\u0131\u00e7 i\u00e7in kabaca \u015fu yakla\u015f\u0131m mant\u0131kl\u0131d\u0131r:<\/p>\n<ul>\n<li>Orta trafik (ayn\u0131 anda 200-500 kullan\u0131c\u0131): 4 vCPU, 8-16 GB RAM<\/li>\n<li>Y\u00fcksek trafik (ayn\u0131 anda 500-2000 kullan\u0131c\u0131): 8 vCPU, 16-32 GB RAM<\/li>\n<li>\u00c7ok y\u00fcksek trafik (API veya dev kampanya d\u00f6nemleri): 16+ vCPU, 32+ GB RAM, tercihen \u00e7oklu sunucu<\/li>\n<\/ul>\n<p>Depolama taraf\u0131nda IOPS de\u011feri ihmal edilmemeli. Log dosyalar\u0131, temp dosyalar, cache ve statik i\u00e7erikler ayn\u0131 disk \u00fczerinde yar\u0131\u015f\u0131yorsa, en g\u00fc\u00e7l\u00fc CPU bile sizi kurtarmaz. M\u00fcmk\u00fcnse loglar ve i\u00e7erik dosyalar\u0131 i\u00e7in ayr\u0131 diskler planlay\u0131n.<\/p>\n<h3>A\u011f topolojisi ve g\u00fcvenlik katmanlar\u0131<\/h3>\n<p>Y\u00fcksek trafikli site mimarisinde, IIS genellikle do\u011frudan internete a\u00e7\u0131lmaz. Tipik olarak \u00f6ne bir ters vekil (reverse proxy) veya donan\u0131msal load balancer gelir, arka tarafta ise bir veya birden fazla windows sunucu \u00fczerinde IIS worker s\u00fcre\u00e7leri \u00e7al\u0131\u015f\u0131r. Uygulama sunucusunun do\u011frudan d\u0131\u015f d\u00fcnyaya a\u00e7\u0131k olmamas\u0131, hem g\u00fcvenlik hem de performans a\u00e7\u0131s\u0131ndan b\u00fcy\u00fck avantaj sa\u011flar.<\/p>\n<p>E\u011fer modern bir bulut veya sanal sunucu altyap\u0131s\u0131 kullan\u0131yorsan\u0131z, \u00f6rne\u011fin <a href=\"https:\/\/www.vps.tc\/tr\/vps\">VPS.TC \u00fczerindeki VPS<\/a> ya da <a href=\"https:\/\/www.vps.tc\/tr\/bulut-sunucu\">bulut sunucu<\/a> servisleriyle, ayn\u0131 datacenter i\u00e7inde y\u00fck dengeleyici ve web sunucular\u0131n\u0131 ayr\u0131 makinelerde konumland\u0131rmak olduk\u00e7a pratik hale geliyor. B\u00f6ylece trafik dalgaland\u0131\u011f\u0131nda ek IIS d\u00fc\u011f\u00fcmleri ekleyip yatayda \u00f6l\u00e7ekleyebilirsiniz.<\/p>\n<h2>Y\u00fcksek trafikli senaryolar i\u00e7in temel IIS yap\u0131land\u0131rma ad\u0131mlar\u0131<\/h2>\n<p>\u015eimdi windows sunucu taraf\u0131nda kritik IIS yap\u0131land\u0131rma ba\u015fl\u0131klar\u0131na ge\u00e7elim. Burada her ayar, do\u011frudan \u00fcretim ortam\u0131nda hissetti\u011finiz metrikleri etkiler: cevap s\u00fcresi, hata oran\u0131, CPU kullan\u0131m\u0131, bellek t\u00fcketimi ve kuyruk dolma olaylar\u0131 gibi.<\/p>\n<h3>Application Pool mimarisini do\u011fru kurgulamak<\/h3>\n<p>Her y\u00fcksek trafikli site i\u00e7in ilk durak, Application Pool ayarlar\u0131d\u0131r. Varsay\u0131lan ayarlarla gelen bir\u00e7ok pool, geli\u015ftirme ortam\u0131nda idare eder ama \u00fcretim i\u00e7in agresif say\u0131labilecek geri d\u00f6n\u00fc\u015f\u00fcm (recycle) davran\u0131\u015flar\u0131na sahiptir. A\u015fa\u011f\u0131daki ilkeleri uygulamak, istikrar\u0131 ciddi bi\u00e7imde iyile\u015ftirir:<\/p>\n<ul>\n<li>Uygulamalar\u0131 mant\u0131kl\u0131 \u015fekilde ayr\u0131 App Pool alt\u0131nda \u00e7al\u0131\u015ft\u0131r\u0131n. A\u011f\u0131r i\u015f yapan API ile statik i\u00e7erik sunan siteyi ayn\u0131 pool alt\u0131nda toplamay\u0131n.<\/li>\n<li>&#8220;Start Automatically&#8221; \u00f6zelli\u011fini a\u00e7\u0131k tutun; sunucu restart sonras\u0131 pool otomatik aya\u011fa kalks\u0131n.<\/li>\n<li>&#8220;Idle Time-out&#8221; s\u00fcresini y\u00fcksek trafikli site i\u00e7in genellikle 0 (devre d\u0131\u015f\u0131) yapmak mant\u0131kl\u0131d\u0131r; aksi halde d\u00fc\u015f\u00fck trafikli anlarda pool durur, sonra gelen ilk istekte so\u011fuk ba\u015flama ya\u015fan\u0131r.<\/li>\n<li>&#8220;Regular Time Interval&#8221; ile saatlik recycle ayar\u0131n\u0131 k\u00f6r\u00fc k\u00f6r\u00fcne kullanmay\u0131n. Kritik uygulamalarda belirli zaman aral\u0131klar\u0131 yerine, m\u00fcmk\u00fcnse manuel veya gece d\u00fc\u015f\u00fck trafik saatlerinde zamanlanm\u0131\u015f recycle tercih edin.<\/li>\n<li>&#8220;Private Memory Limit&#8221; ve &#8220;Virtual Memory Limit&#8221; ayarlar\u0131nda ger\u00e7ek\u00e7i e\u015fikler belirleyin; bellek s\u0131z\u0131nt\u0131s\u0131 \u015f\u00fcphesi yoksa, bu limitleri gereksiz yere k\u0131s\u0131tlamay\u0131n.<\/li>\n<\/ul>\n<p>Bir\u00e7ok ekipte yap\u0131lan hata, memory leak korkusuyla \u00e7ok agresif recycle ayarlar\u0131 yapmak. Bunun sonucu, kullan\u0131c\u0131lar\u0131n ortas\u0131nda session kayb\u0131, uzun yan\u0131t s\u00fcreleri ve 503 hatalar\u0131 olur. Sorunu saklam\u0131\u015f olursunuz ama \u00e7\u00f6zmemi\u015f.<\/p>\n<h3>Worker process ve queue length ayarlar\u0131<\/h3>\n<p>App Pool alt\u0131nda \u00e7al\u0131\u015fan w3wp s\u00fcre\u00e7lerinin say\u0131s\u0131 (&#8220;Maximum Worker Processes&#8221; veya web garden) ve HTTP.SYS kuyru\u011fu (queue length) y\u00fcksek trafikte belirleyicidir. \u00c7o\u011fu senaryoda tek worker process idealdir; state managment, cache ve connection pool payla\u015f\u0131m\u0131 a\u00e7\u0131s\u0131ndan daha \u00f6ng\u00f6r\u00fclebilir davran\u0131r.<\/p>\n<p>Queue Length varsay\u0131lan\u0131 genellikle 1000 civar\u0131ndad\u0131r. \u00c7ok y\u00fcksek trafikli bir windows hosting ortam\u0131nda bu kuyruk dolarsa, 503 hatalar\u0131 almaya ba\u015flars\u0131n\u0131z. Kuyruk kapasitesini art\u0131rmak i\u00e7in Application Pool geli\u015fmi\u015f ayarlar\u0131ndan &#8220;Queue Length&#8221; de\u011ferini, test sonu\u00e7lar\u0131n\u0131za g\u00f6re 5000 veya 10000 seviyelerine \u00e7ekebilirsiniz. Ancak bu ayar\u0131 art\u0131rmak, sorunu \u00e7\u00f6zmez; sadece semptomu geciktirir. Kuyruk neden doluyor, onu da izlemek gerekir.<\/p>\n<h3>HTTP s\u0131k\u0131\u015ft\u0131rma ve statik i\u00e7erik optimizasyonu<\/h3>\n<p>Basit g\u00f6r\u00fcnen ama en y\u00fcksek kazan\u0131m sa\u011flayan ayarlardan biri, HTTP s\u0131k\u0131\u015ft\u0131rma ve statik dosya optimizasyonudur. Y\u00fcksek trafikli site \u00e7o\u011funlukla ayn\u0131 JS, CSS, g\u00f6rsel ve font dosyalar\u0131n\u0131 tekrar tekrar servis eder. IIS \u00fczerinde a\u015fa\u011f\u0131dakileri etkinle\u015ftirmek iyi bir ba\u015flang\u0131\u00e7t\u0131r:<\/p>\n<ul>\n<li>Statik s\u0131k\u0131\u015ft\u0131rma (static compression) etkin ve \u00f6nbelle\u011fe al\u0131nm\u0131\u015f \u015fekilde yap\u0131land\u0131r\u0131lmal\u0131.<\/li>\n<li>Dinamik i\u00e7erik s\u0131k\u0131\u015ft\u0131rmas\u0131 (dynamic compression) i\u00e7in CPU kullan\u0131m\u0131n\u0131 g\u00f6zlemleyerek kademeli a\u00e7\u0131n; yo\u011fun CPU t\u00fcketen sayfalarda dikkatli olun.<\/li>\n<li>&#8220;StaticContent&#8221; mod\u00fcl\u00fcnde uygun cache-control ve Expires \u00fcstbilgilerini (header) ayarlay\u0131n; CDN veya taray\u0131c\u0131 cache verimlili\u011fi artar.<\/li>\n<\/ul>\n<p>Bu ayarlar, do\u011frudan bant geni\u015fli\u011fi ve cevap s\u00fcresi \u00fczerinde etkilidir. Basit\u00e7e s\u00f6ylemek gerekirse; ayn\u0131 donan\u0131mla daha fazla kullan\u0131c\u0131ya hizmet vermi\u015f olursunuz.<\/p>\n<h2>web.config ve makine d\u00fczeyi ayarlarda dikkat edilmesi gerekenler<\/h2>\n<p>\u00c7o\u011fu proje, web.config i\u00e7ine rastgele eklenen ayarlarla y\u0131llarca ya\u015far. Y\u00fcksek trafik s\u00f6z konusu oldu\u011funda, bu dosya art\u0131k performans arac\u0131 haline gelir. \u00d6zellikle ASP.NET uygulamalar\u0131 i\u00e7in a\u015fa\u011f\u0131daki ba\u015fl\u0131klara bakmak \u015fart.<\/p>\n<h3>CustomErrors, tracing ve logging davran\u0131\u015flar\u0131<\/h3>\n<p>Geli\u015ftirme s\u00fcrecinde a\u00e7\u0131k duran ayr\u0131nt\u0131l\u0131 hata sayfalar\u0131, tracing mekanizmalar\u0131 ve verbose log ayarlar\u0131, \u00fcretimde ciddi y\u00fck olu\u015fturur. Y\u00fcksek trafikli site i\u00e7in a\u015fa\u011f\u0131daki pratikleri uygulay\u0131n:<\/p>\n<ul>\n<li>&#8220;customErrors&#8221; modunu \u00fcretimde her zaman &#8220;On&#8221; veya en az\u0131ndan &#8220;RemoteOnly&#8221; yap\u0131n.<\/li>\n<li>Detayl\u0131 tracing sadece spesifik endpoint veya k\u0131sa s\u00fcreli hata analizi i\u00e7in a\u00e7\u0131lmal\u0131; kal\u0131c\u0131 a\u00e7\u0131k b\u0131rakmay\u0131n.<\/li>\n<li>Uygulama loglamas\u0131n\u0131 dosya bazl\u0131 yap\u0131yorsan\u0131z, log boyutunu ve rotasyon politikas\u0131n\u0131 mutlaka belirleyin; tek dosya i\u00e7inde gigabaytlarca log tutmay\u0131n.<\/li>\n<\/ul>\n<p>Loglar\u0131 merkezi sisteme g\u00f6ndermek (ELK, Splunk, Azure Application Insights vb.) genellikle daha \u00f6l\u00e7eklenebilir bir yakla\u015f\u0131m. Ama hangi \u00e7\u00f6z\u00fcm\u00fc se\u00e7erseniz se\u00e7in, synchronous dosya yaz\u0131m\u0131ndan ka\u00e7\u0131n\u0131n.<\/p>\n<h3>Connection limitleri ve timeout de\u011ferleri<\/h3>\n<p>Y\u00fcksek trafikli bir API veya web uygulamas\u0131nda, upstream sistemlere (veritaban\u0131, cache, \u00fc\u00e7\u00fcnc\u00fc parti servisler) a\u00e7\u0131lan ba\u011flant\u0131 say\u0131s\u0131, b\u00fct\u00fcn sistemi kilitleyebilir. web.config i\u00e7inde connection string ayarlar\u0131n\u0131, connection pool parametrelerini ve HTTP timeout de\u011ferlerini g\u00f6zden ge\u00e7irmek gerekir.<\/p>\n<p>\u00d6rne\u011fin SQL Server i\u00e7in connection pool ayarlar\u0131n\u0131 optimize etmek, IIS taraf\u0131nda thread starvation sorunlar\u0131n\u0131 azalt\u0131r. Her iste\u011fin uzun s\u00fcren bir veritaban\u0131 \u00e7a\u011fr\u0131s\u0131nda bekledi\u011fi bir senaryoda, IIS taraf\u0131ndaki her optimizasyon s\u0131n\u0131rl\u0131 kal\u0131r.<\/p>\n<h2>Windows hosting ortam\u0131nda \u00f6l\u00e7eklenebilirlik ve y\u00fck dengeleme stratejileri<\/h2>\n<p>Tek bir windows sunucu, bir noktaya kadar i\u015fi ta\u015f\u0131r. \u00d6zellikle CPU kullan\u0131m\u0131n\u0131z s\u00fcrekli %70-80 seviyesinde geziyorsa ve dikeyde (daha g\u00fc\u00e7l\u00fc makine) b\u00fcy\u00fcmek maliyetli hale geldiyse, yatay \u00f6l\u00e7eklemeye ge\u00e7me zaman\u0131 gelir. IIS bu noktada iki farkl\u0131 yakla\u015f\u0131mla \u00f6ne \u00e7\u0131kar.<\/p>\n<h3>Uygulama sunucular\u0131n\u0131 \u00e7o\u011faltmak<\/h3>\n<p>En klasik y\u00f6ntem, ayn\u0131 uygulamay\u0131 birden fazla windows sunucu \u00fczerine kurup, \u00f6nlerine bir y\u00fck dengeleyici (load balancer) koymakt\u0131r. Bu, ister donan\u0131msal load balancer isterse yaz\u0131l\u0131msal bir reverse proxy olsun, mant\u0131k ayn\u0131d\u0131r: gelen istekler farkl\u0131 IIS d\u00fc\u011f\u00fcmlerine da\u011f\u0131t\u0131l\u0131r.<\/p>\n<p>Burada kritik soru \u015fudur: Oturum (session) y\u00f6netimi nas\u0131l? E\u011fer session bilgisi bellekte tutuluyorsa ve sticky session (client ayn\u0131 node a y\u00f6nlendirilir) kullanm\u0131yorsan\u0131z, kullan\u0131c\u0131 deneyimi bozulur. Daha sa\u011fl\u0131kl\u0131 yakla\u015f\u0131m, session bilgisini d\u0131\u015far\u0131 almakt\u0131r: Redis, SQL Server veya state server gibi. B\u00f6ylece herhangi bir windows sunucu iste\u011fi cevaplayabilir.<\/p>\n<h3>Uygulama durumunu d\u0131\u015f sistemlere ta\u015f\u0131mak<\/h3>\n<p>Cache, session, kullan\u0131c\u0131 durumu gibi veriler uygulama sunucusunun belle\u011finde tutulduk\u00e7a, yatayda geni\u015flemek zorla\u015f\u0131r. Y\u00fcksek trafikli site mimarisinde s\u0131k\u00e7a yap\u0131lan iyile\u015ftirmeler \u015funlard\u0131r:<\/p>\n<ul>\n<li>Session state in process yerine out-of-process veya SQL\/Redis \u00fczerinde tutulmas\u0131<\/li>\n<li>Uygulama cache inin da\u011f\u0131t\u0131k cache sistemlerine ta\u015f\u0131nmas\u0131<\/li>\n<li>Upload edilen dosyalar\u0131n yerel disk yerine payla\u015f\u0131ml\u0131 dosya sistemi veya nesne depolama servislerinde saklanmas\u0131<\/li>\n<\/ul>\n<p>B\u00f6ylece yeni bir windows sunucu eklemek, sadece IIS kurup ayn\u0131 uygulamay\u0131 deploy etmek kadar basit hale gelir. Altyap\u0131y\u0131 \u00f6rne\u011fin <a href=\"https:\/\/www.vps.tc\/tr\/sanal-veri-merkezi\">VPS.TC Sanal Veri Merkezi<\/a> gibi esnek bir katmanda kurdu\u011funuzda, \u00f6l\u00e7ekleme operasyonu dakikalar i\u00e7inde tamamlanabilir.<\/p>\n<h2>Kaynak kullan\u0131m\u0131 izleme ve performans testleri<\/h2>\n<p>IIS yap\u0131land\u0131rma i\u015finin en \u00e7ok ihmal edilen b\u00f6l\u00fcm\u00fc, izleme ve testtir. Bir\u00e7ok ekip, yaln\u0131zca ger\u00e7ek kullan\u0131c\u0131 trafi\u011fiyle s\u0131nanm\u0131\u015f sistemlere sahiptir. Bu da en k\u00f6t\u00fc senaryonun, en beklenmedik anda kar\u015f\u0131n\u0131za \u00e7\u0131kmas\u0131 anlam\u0131na gelir.<\/p>\n<h3>Windows sunucu \u00fczerinde temel izleme pratikleri<\/h3>\n<p>\u00d6ncelikle, canl\u0131 bir sistemde ne olup bitti\u011fini anl\u0131k g\u00f6rmek i\u00e7in birka\u00e7 temel ara\u00e7tan vazge\u00e7meyin. \u00d6rne\u011fin SSH benzeri \u015fekilde PowerShell ile ba\u011fland\u0131\u011f\u0131n\u0131zda a\u015fa\u011f\u0131daki komut, \u00e7al\u0131\u015fan IIS s\u00fcre\u00e7lerini h\u0131zl\u0131ca g\u00f6rmenizi sa\u011flar:<\/p>\n<pre><code class=\"language-powershell\">Get-Process w3wp<\/code><\/pre>\n<p>Bu komutla hangi uygulama havuzunun ne kadar CPU ve bellek kulland\u0131\u011f\u0131n\u0131 an\u0131nda g\u00f6rebilirsiniz. Daha derin analizler i\u00e7in Performance Monitor (perfmon) \u00fczerinde a\u015fa\u011f\u0131daki saya\u00e7lara \u00f6zellikle bak\u0131n:<\/p>\n<ul>\n<li>Processor(_Total) &#8211; % Processor Time<\/li>\n<li>Memory &#8211; Available MBytes<\/li>\n<li>ASP.NET veya .NET CLR Exceptions saya\u00e7lar\u0131<\/li>\n<li>Web Service veya HTTP Service saya\u00e7lar\u0131 (Current Connections, Queue Length)<\/li>\n<\/ul>\n<p>Bunlar\u0131 grafikli olarak izlemek, hangi saatlerde trafik pik yapt\u0131\u011f\u0131n\u0131, hangi kaynaklar\u0131n s\u0131n\u0131rda gezdi\u011fini net bi\u00e7imde ortaya koyar.<\/p>\n<h3>Yapay y\u00fck testleri ve dar bo\u011faz tespiti<\/h3>\n<p>Ger\u00e7ek kullan\u0131c\u0131 trafi\u011fi olu\u015fmadan \u00f6nce, yapay y\u00fck testi yapmak zor ama gereklidir. Apache JMeter, k6 gibi ara\u00e7larla saniyede ka\u00e7 istek geldi\u011finde sistemin bozulmaya ba\u015flad\u0131\u011f\u0131n\u0131 tespit edebilirsiniz. Bu testleri yaparken sadece ortalama cevap s\u00fcresine de\u011fil, hata oran\u0131na ve CPU\/IO kullan\u0131m\u0131na da bakmak \u00f6nemli.<\/p>\n<p>\u0130yi bir pratik de, web.config veya IIS ayarlar\u0131n\u0131 de\u011fi\u015ftirdikten sonra k\u0131sa s\u00fcreli stress testleri yapmakt\u0131r. Ayar\u0131n net etkisini, yaln\u0131zca grafiklere bakarak g\u00f6rebilirsiniz. \u00d6rne\u011fin dinamik s\u0131k\u0131\u015ft\u0131rmay\u0131 a\u00e7t\u0131\u011f\u0131n\u0131zda CPU artar ama yan\u0131t s\u00fcreleri d\u00fc\u015fer; sizin i\u00e7in optimum dengeyi test ederek bulman\u0131z gerekir.<\/p>\n<h2>G\u00fcvenlik, patch y\u00f6netimi ve felaket senaryolar\u0131<\/h2>\n<p>Performans konu\u015furken g\u00fcvenli\u011fi atlamak, \u00fcretim ortam\u0131nda yap\u0131labilecek en riskli hareketlerden biridir. Y\u00fcksek trafikli site ayn\u0131 zamanda sald\u0131rganlar i\u00e7in de cazip bir hedeftir. windows sunucu taraf\u0131nda a\u015fa\u011f\u0131daki ba\u015fl\u0131klar mutlaka g\u00fcnl\u00fck i\u015flerin par\u00e7as\u0131 olmal\u0131:<\/p>\n<ul>\n<li>D\u00fczenli Windows Update ve IIS ile ilgili g\u00fcvenlik yamalar\u0131n\u0131n uygulanmas\u0131<\/li>\n<li>Uygulama veya sistem konfig\u00fcrasyonu de\u011fi\u015fmeden \u00f6nce ve sonra snapshot veya yedek al\u0131nmas\u0131<\/li>\n<li>Web.config, sertifikalar ve hassas kimlik bilgilerinin \u015fifrelenmi\u015f \u015fekilde tutulmas\u0131<\/li>\n<li>RDP, WinRM gibi y\u00f6netim portlar\u0131n\u0131n do\u011frudan internete a\u00e7\u0131k olmamas\u0131<\/li>\n<\/ul>\n<p>Felaket senaryosu i\u00e7in en az\u0131ndan \u015fu sorular\u0131n cevab\u0131 haz\u0131r olmal\u0131: Sunucu tamamen kaybolursa uygulamay\u0131 ka\u00e7 dakikada ba\u015fka bir windows sunucu \u00fczerine aya\u011fa kald\u0131rabiliyorum? Veritaban\u0131 yede\u011fi hangi aral\u0131klarla al\u0131n\u0131yor ve geri d\u00f6n\u00fc\u015f test ediliyor mu? Bu sorulara net cevap veremiyorsan\u0131z, konfig\u00fcrasyon ne kadar iyi olursa olsun risk alt\u0131ndas\u0131n\u0131z.<\/p>\n<h2>IIS \u00fczerinde tipik sorunlar ve pratik \u00e7\u00f6z\u00fcm yollar\u0131<\/h2>\n<p>Ger\u00e7ek \u00fcretim ortam\u0131nda, belli \u015fikayetler tekrar tekrar kar\u015f\u0131n\u0131za \u00e7\u0131kar. Bunlar\u0131n bir k\u0131sm\u0131 yanl\u0131\u015f yorumlan\u0131r ve yanl\u0131\u015f yere odaklan\u0131l\u0131r. \u00d6rnek birka\u00e7 durum \u00fczerinden gidelim.<\/p>\n<h3>CPU s\u00fcrekli y\u00fcksek: Kod mu, konfig\u00fcrasyon mu?<\/h3>\n<p>CPU s\u00fcrekli %80 \u00fczerinde geziyorsa, ilk refleks genelde &#8220;sunucu yetersiz&#8221; olur. Oysa \u00e7o\u011fu durumda, verimsiz sorgular veya sonsuz d\u00f6ng\u00fcye yak\u0131n algoritmalar as\u0131l su\u00e7ludur. Yine de IIS taraf\u0131nda yapabilece\u011finiz birka\u00e7 \u015fey var:<\/p>\n<ul>\n<li>Failed Request Tracing ile uzun s\u00fcren istekleri yakalay\u0131n.<\/li>\n<li>Uygulama loglar\u0131 \u00fczerinden en \u00e7ok \u00e7al\u0131\u015fan endpointleri analiz edin.<\/li>\n<li>Gerekirse .NET profilleyici ile s\u0131cak pathleri ortaya \u00e7\u0131kar\u0131n.<\/li>\n<\/ul>\n<p>E\u011fer analiz sonunda ger\u00e7ekten CPU s\u0131n\u0131r\u0131na dayanm\u0131\u015fsan\u0131z, o zaman ya daha g\u00fc\u00e7l\u00fc bir windows sunucuya ge\u00e7mek ya da ek IIS d\u00fc\u011f\u00fcmleriyle yatayda \u00f6l\u00e7eklemek gerekir.<\/p>\n<h3>503 Service Unavailable ve kuyruk dolmas\u0131<\/h3>\n<p>Y\u00fcksek trafikli site ortam\u0131nda en sinir bozucu hata 503 t\u00fcr. Genellikle Application Pool durmas\u0131, kuyruk dolmas\u0131 veya worker crash i ile ilgilidir. Olas\u0131 ad\u0131mlar:<\/p>\n<ul>\n<li>Event Viewer alt\u0131nda System ve Application loglar\u0131n\u0131 kontrol edin.<\/li>\n<li>App Pool un ger\u00e7ekten \u00e7al\u0131\u015f\u0131p \u00e7al\u0131\u015fmad\u0131\u011f\u0131n\u0131 do\u011frulay\u0131n.<\/li>\n<li>Queue Length ve CPU limit ayarlar\u0131n\u0131 g\u00f6zden ge\u00e7irin.<\/li>\n<\/ul>\n<p>Bu tip sorunlar, \u00e7o\u011fu zaman test ortam\u0131nda fark edilmez; \u00e7\u00fcnk\u00fc ger\u00e7ek d\u00fcnyadaki trafik modeli laboratuvarda birebir \u00fcretmek zordur. Bu y\u00fczden canl\u0131 sistemde g\u00fc\u00e7l\u00fc izleme \u015fartt\u0131r.<\/p>\n<h2>\u00d6rnek konfig\u00fcrasyon profilleri<\/h2>\n<p>Teoriyi biraz daha somutla\u015ft\u0131rmak i\u00e7in, farkl\u0131 trafik seviyeleri i\u00e7in kabaca d\u00fc\u015f\u00fcn\u00fclebilecek konfig\u00fcrasyon profillerini bir tabloda toplayal\u0131m. Bunlar elbette genel hatlar; her proje i\u00e7in test ve \u00f6l\u00e7\u00fcm yapmadan birebir uygulanmamal\u0131.<\/p>\n<table>\n<tr>\n<th>Senaryo<\/th>\n<th>Donan\u0131m (VPS)<\/th>\n<th>IIS Ayarlar\u0131<\/th>\n<\/tr>\n<tr>\n<td>Orta Trafik Kurumsal Site<\/td>\n<td>4 vCPU, 8 GB RAM, SSD<\/td>\n<td>Tek App Pool, tek worker, idle timeout d\u00fc\u015f\u00fck, static compression a\u00e7\u0131k<\/td>\n<\/tr>\n<tr>\n<td>Yo\u011fun E-ticaret Sitesi<\/td>\n<td>8 vCPU, 16-32 GB RAM<\/td>\n<td>Stateless oturum, dinamik compression se\u00e7ici, queue length art\u0131r\u0131lm\u0131\u015f<\/td>\n<\/tr>\n<tr>\n<td>Y\u00fcksek Trafikli API<\/td>\n<td>12-16 vCPU, 32 GB RAM, \u00e7oklu node<\/td>\n<td>Birden fazla IIS nodu, merkezi loglama, agresif connection pooling<\/td>\n<\/tr>\n<\/table>\n<p>Bu tip bir profile g\u00f6re ba\u015flang\u0131\u00e7 kurulumu yapt\u0131ktan sonra, ger\u00e7ek trafik alt\u0131nda \u00f6l\u00e7\u00fcm al\u0131p ayarlar\u0131 rafine etmek en sa\u011fl\u0131kl\u0131 yol olur.<\/p>\n<h2>Y\u00fcksek trafikli IIS altyap\u0131s\u0131n\u0131 uzun vadede sa\u011fl\u0131kl\u0131 tutmak<\/h2>\n<p>Son noktaya gelirken, \u015funu net s\u00f6ylemekte fayda var: Y\u00fcksek trafikli site y\u00f6netmek, bir kere konfig\u00fcrasyon yap\u0131p b\u0131rakaca\u011f\u0131n\u0131z bir i\u015f de\u011fil. windows sunucu ve IIS birle\u015fimi do\u011fru kurguland\u0131\u011f\u0131nda son derece sa\u011flam \u00e7al\u0131\u015f\u0131r; ama i\u015fin s\u0131rr\u0131 s\u00fcrekli g\u00f6zlem, k\u00fc\u00e7\u00fck ayarlarla optimizasyon ve do\u011fru zamanda \u00f6l\u00e7ekleme hamlesi yapmakt\u0131r.<\/p>\n<p>Pratik bir yakla\u015f\u0131m izlemek isterseniz \u015fu s\u0131ray\u0131 takip edebilirsiniz: \u00d6nce uygulamay\u0131 g\u00fcvenilir bir windows hosting altyap\u0131s\u0131na (\u00f6rne\u011fin <a href=\"https:\/\/www.vps.tc\/tr\/vds-sanal-sunucu\">VPS.TC \u00fczerindeki VDS veya VPS<\/a> \u00e7\u00f6z\u00fcmlerine) ta\u015f\u0131y\u0131n, ard\u0131ndan temel IIS yap\u0131land\u0131rma ad\u0131mlar\u0131n\u0131 uygulay\u0131n, sonra da stres testleriyle dar bo\u011fazlar\u0131 bulun. Gerekti\u011finde yeni IIS d\u00fc\u011f\u00fcmleri ekleyerek veya mevcut sunucuyu g\u00fc\u00e7lendirerek \u00f6l\u00e7ekleyin.<\/p>\n<p>\u0130lk ad\u0131m olarak mevcut sunucunuzda App Pool ayarlar\u0131n\u0131z\u0131, queue length de\u011ferlerinizi ve s\u0131k\u0131\u015ft\u0131rma se\u00e7eneklerinizi kontrol edin. K\u00fc\u00e7\u00fck dokunu\u015flarla bile ciddi kazan\u0131mlar elde edildi\u011fini g\u00f6receksiniz. Sonras\u0131nda, otomatik izleme ve merkezi loglama kurarak sistemin nabz\u0131n\u0131 s\u00fcrekli tutman\u0131z, uzun vadede hem uykunuzu hem de uptime oranlar\u0131n\u0131z\u0131 koruyacakt\u0131r. K\u0131sacas\u0131, windows sunucu \u00fczerinde do\u011fru IIS yap\u0131land\u0131rma ile y\u00fcksek trafikli siteyi sadece ayakta tutmakla kalmaz, ayn\u0131 donan\u0131mda daha \u00e7ok kullan\u0131c\u0131ya sorunsuz hizmet verirsiniz.<\/p>\n<div class=\"faq-section\">\n<h2>S\u0131k\u00e7a Sorulan Sorular<\/h2>\n<div class=\"faq-item\">\n<h3>Y\u00fcksek trafikli bir site i\u00e7in windows sunucuya ka\u00e7 CPU ve ne kadar RAM ay\u0131rmal\u0131y\u0131m?<\/h3>\n<p>Net bir sihirli rakam yok ama pratik bir ba\u015flang\u0131\u00e7 i\u00e7in orta trafik sitelerde 4 vCPU ve 8-16 GB RAM, yo\u011fun e-ticaret veya API senaryolar\u0131nda ise en az 8 vCPU ve 16-32 GB RAM tercih edebilirsiniz. E\u011fer CPU kullan\u0131m\u0131 s\u00fcrekli %70-80 seviyesinde gezmeye ba\u015flad\u0131ysa, \u00f6nce kod ve sorgu optimizasyonunu kontrol edin, ard\u0131ndan dikey veya yatay \u00f6l\u00e7eklemeye gidin.<\/p>\n<\/div>\n<div class=\"faq-item\">\n<h3>IIS Application Pool geri d\u00f6n\u00fc\u015f\u00fcm ayarlar\u0131n\u0131 (recycle) nas\u0131l yap\u0131land\u0131rmal\u0131y\u0131m?<\/h3>\n<p>Y\u00fcksek trafikli sitelerde \u00e7ok s\u0131k geri d\u00f6n\u00fc\u015f\u00fcm genellikle zararl\u0131 olur. Idle Time-out de\u011ferini kritik uygulamalar i\u00e7in \u00e7o\u011fu zaman 0 a (devre d\u0131\u015f\u0131) \u00e7ekmek, d\u00fczenli saatlik recycle yerine d\u00fc\u015f\u00fck trafik saatlerinde zamanlanm\u0131\u015f recycle kullanmak daha sa\u011fl\u0131kl\u0131d\u0131r. Ayr\u0131ca Private Memory limitlerini ger\u00e7ek\u00e7i belirleyin; bellek s\u0131z\u0131nt\u0131s\u0131 kan\u0131t\u0131 yoksa a\u015f\u0131r\u0131 k\u0131s\u0131tlay\u0131c\u0131 limitlerden ka\u00e7\u0131n\u0131n ve her de\u011fi\u015fiklikten sonra izleme yap\u0131n.<\/p>\n<\/div>\n<div class=\"faq-item\">\n<h3>Y\u00fcksek trafikli site i\u00e7in tek g\u00fc\u00e7l\u00fc windows sunucu mu, yoksa birden fazla IIS d\u00fc\u011f\u00fcm\u00fc m\u00fc tercih etmeliyim?<\/h3>\n<p>K\u0131sa vadede tek g\u00fc\u00e7l\u00fc windows sunucu (dikey \u00f6l\u00e7ekleme) daha basit y\u00f6netilir, ancak uzun vadede esneklik ve ar\u0131za tolerans\u0131 i\u00e7in birden fazla IIS d\u00fc\u011f\u00fcm\u00fcne (yatay \u00f6l\u00e7ekleme) ge\u00e7mek daha sa\u011fl\u0131kl\u0131d\u0131r. Oturum y\u00f6netimini d\u0131\u015f sistemlere (Redis, SQL, state server) ta\u015f\u0131yabildi\u011finiz anda, y\u00fck dengeleyici arkas\u0131nda birden \u00e7ok web sunucusuna ge\u00e7mek performans ve dayan\u0131kl\u0131l\u0131k a\u00e7\u0131s\u0131ndan \u00f6nemli avantaj sa\u011flar.<\/p>\n<\/div>\n<div class=\"faq-item\">\n<h3>IIS \u00fczerinde 503 Service Unavailable hatalar\u0131n\u0131 nas\u0131l azaltabilirim?<\/h3>\n<p>503 hatalar\u0131 genellikle Application Pool un durmas\u0131, HTTP kuyru\u011funun dolmas\u0131 veya worker process \u00e7\u00f6kmesiyle ilgilidir. \u00d6nce Event Viewer loglar\u0131n\u0131 kontrol edin, App Pool un ger\u00e7ekten \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 do\u011frulay\u0131n ve Queue Length ayar\u0131n\u0131 y\u00fcksek trafikli siteye uygun bir seviyeye (\u00f6rne\u011fin 5000-10000) \u00e7ekmeyi d\u00fc\u015f\u00fcn\u00fcn. Ayn\u0131 zamanda CPU, bellek ve upstream sistem (veritaban\u0131, \u00fc\u00e7\u00fcnc\u00fc parti API) gecikmelerini izleyerek as\u0131l dar bo\u011faz\u0131 tespit etmeniz gerekir; sadece kuyruk de\u011ferini art\u0131rmak genelde kal\u0131c\u0131 \u00e7\u00f6z\u00fcm de\u011fildir.<\/p>\n<\/div>\n<\/div>\n<p><script type=\"application\/ld+json\">{\"@context\":\"https:\/\/schema.org\",\"@type\":\"FAQPage\",\"mainEntity\":[{\"@type\":\"Question\",\"name\":\"Y\u00fcksek trafikli bir site i\u00e7in windows sunucuya ka\u00e7 CPU ve ne kadar RAM ay\u0131rmal\u0131y\u0131m?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Net bir sihirli rakam yok ama pratik bir ba\u015flang\u0131\u00e7 i\u00e7in orta trafik sitelerde 4 vCPU ve 8-16 GB RAM, yo\u011fun e-ticaret veya API senaryolar\u0131nda ise en az 8 vCPU ve 16-32 GB RAM tercih edebilirsiniz. E\u011fer CPU kullan\u0131m\u0131 s\u00fcrekli %70-80 seviyesinde gezmeye ba\u015flad\u0131ysa, \u00f6nce kod ve sorgu optimizasyonunu kontrol edin, ard\u0131ndan dikey veya yatay \u00f6l\u00e7eklemeye gidin.\"}},{\"@type\":\"Question\",\"name\":\"IIS Application Pool geri d\u00f6n\u00fc\u015f\u00fcm ayarlar\u0131n\u0131 (recycle) nas\u0131l yap\u0131land\u0131rmal\u0131y\u0131m?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Y\u00fcksek trafikli sitelerde \u00e7ok s\u0131k geri d\u00f6n\u00fc\u015f\u00fcm genellikle zararl\u0131 olur. Idle Time-out de\u011ferini kritik uygulamalar i\u00e7in \u00e7o\u011fu zaman 0 a (devre d\u0131\u015f\u0131) \u00e7ekmek, d\u00fczenli saatlik recycle yerine d\u00fc\u015f\u00fck trafik saatlerinde zamanlanm\u0131\u015f recycle kullanmak daha sa\u011fl\u0131kl\u0131d\u0131r. Ayr\u0131ca Private Memory limitlerini ger\u00e7ek\u00e7i belirleyin; bellek s\u0131z\u0131nt\u0131s\u0131 kan\u0131t\u0131 yoksa a\u015f\u0131r\u0131 k\u0131s\u0131tlay\u0131c\u0131 limitlerden ka\u00e7\u0131n\u0131n ve her de\u011fi\u015fiklikten sonra izleme yap\u0131n.\"}},{\"@type\":\"Question\",\"name\":\"Y\u00fcksek trafikli site i\u00e7in tek g\u00fc\u00e7l\u00fc windows sunucu mu, yoksa birden fazla IIS d\u00fc\u011f\u00fcm\u00fc m\u00fc tercih etmeliyim?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"K\u0131sa vadede tek g\u00fc\u00e7l\u00fc windows sunucu (dikey \u00f6l\u00e7ekleme) daha basit y\u00f6netilir, ancak uzun vadede esneklik ve ar\u0131za tolerans\u0131 i\u00e7in birden fazla IIS d\u00fc\u011f\u00fcm\u00fcne (yatay \u00f6l\u00e7ekleme) ge\u00e7mek daha sa\u011fl\u0131kl\u0131d\u0131r. Oturum y\u00f6netimini d\u0131\u015f sistemlere (Redis, SQL, state server) ta\u015f\u0131yabildi\u011finiz anda, y\u00fck dengeleyici arkas\u0131nda birden \u00e7ok web sunucusuna ge\u00e7mek performans ve dayan\u0131kl\u0131l\u0131k a\u00e7\u0131s\u0131ndan \u00f6nemli avantaj sa\u011flar.\"}},{\"@type\":\"Question\",\"name\":\"IIS \u00fczerinde 503 Service Unavailable hatalar\u0131n\u0131 nas\u0131l azaltabilirim?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"503 hatalar\u0131 genellikle Application Pool un durmas\u0131, HTTP kuyru\u011funun dolmas\u0131 veya worker process \u00e7\u00f6kmesiyle ilgilidir. \u00d6nce Event Viewer loglar\u0131n\u0131 kontrol edin, App Pool un ger\u00e7ekten \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 do\u011frulay\u0131n ve Queue Length ayar\u0131n\u0131 y\u00fcksek trafikli siteye uygun bir seviyeye (\u00f6rne\u011fin 5000-10000) \u00e7ekmeyi d\u00fc\u015f\u00fcn\u00fcn. Ayn\u0131 zamanda CPU, bellek ve upstream sistem (veritaban\u0131, \u00fc\u00e7\u00fcnc\u00fc parti API) gecikmelerini izleyerek as\u0131l dar bo\u011faz\u0131 tespit etmeniz gerekir; sadece kuyruk de\u011ferini art\u0131rmak genelde kal\u0131c\u0131 \u00e7\u00f6z\u00fcm de\u011fildir.\"}}]}<\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Windows sunucu \u00fczerinde IIS \u00e7al\u0131\u015ft\u0131r\u0131rken y\u00fcksek trafikli site y\u00f6netmek i\u00e7in mimari tasar\u0131m, kritik IIS ayarlar\u0131, \u00f6l\u00e7ekleme stratejileri ve izleme pratiklerini ad\u0131m ad\u0131m ele alan kapsaml\u0131 rehber.<\/p>\n","protected":false},"author":1,"featured_media":247,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[784],"tags":[790,1059,1062,114,796,590,1065],"class_list":["post-249","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-windows","tag-iis-yapilandirma","tag-load-balancing","tag-performans-optimizasyonu","tag-vps","tag-windows-hosting","tag-windows-sunucu","tag-yuksek-trafikli-site"],"lang":"tr","translations":{"tr":249,"en":266},"pll_sync_post":[],"_links":{"self":[{"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/posts\/249","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/comments?post=249"}],"version-history":[{"count":1,"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/posts\/249\/revisions"}],"predecessor-version":[{"id":250,"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/posts\/249\/revisions\/250"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/media\/247"}],"wp:attachment":[{"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/media?parent=249"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/categories?post=249"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/tags?post=249"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}