CPU Kullanımı Nedir? CPU Limitleri Ne Anlama Gelir?

CPU yani işlemci, bilgisayarlarda tüm işlemleri yapan temel bileşendir. Bir bilgisayarın beynidir demek hatalı bir tabir olmayacaktır çünkü diğer tüm bileşenlerin yönetilmesi ve bilgisayarda yapılan her türlü işlemin hesaplanması CPU’nun görevidir.

Hosting hizmetlerinin sunulduğu sunucular ise, kesintisiz çalışmak üzere tasarlanmış bilgisayarlardan başka bir şey değildir.

Dünyadaki tüm web siteleri HTML tabanlıdır. HTML, tarayıcınızda bir sitenin nasıl görüntüleneceğinden sorumludur ve tarayıcınız, HTML kodları işleyerek bir web sitesini size doğru şekilde gösterir. Tabi ki bu süreçte CSS/Javascript vb. etkenler olsa da bunlar bu yazının konusu değil.

Bir PHP scripti ele alırsak, PHP kodlar, sunucu tarafında işlenir ve HTML kodlara çevrilerek tarayıcıya gönderilir. Yani yazılımcının kodu yazarken yapmak istediği her türlü hesaplama, her türlü kontrol ve her türlü işlem, sunucu tarafından işlenerek HTML kodlara dönüştürülür. Basit bir örnek verecek olursak, bir üye girişi sayfasında, gönderilen kullanıcı adı ve şifrenin doğru olup olmadığınu kontrol etmek için PHP kodlar kullanılır. Kullanıcı doğru bilgilerle giriş yapıyorsa bir oturum başlatıp sayfada özelliştirilmiş yazılar gösterilmesi(Hoşgeldiniz xxxx gibi) ya da bu kişinin sitede sayfaları gezerken oturumunun açık olup olmadığı gibi her türlü kontrol, PHP yazılım tarafından yapılır ve yazılım hazırlandığı kriterler ölçüsünde HTML üreterek tarayıcıya gönderir, böylece ortaya görüntülenebilecek bir web sayfası çıkar.

Bütün bu işlemlerin, temelde herhangi bir bilgisayar programından farkı bulunmamaktadır. Windows bilgisayarınızda .exe olan bir programı çalıştırabilirsiniz ve bu program çalışırken özelliklerine göre bir CPU ve RAM kullanımı yapar, web sitelerinde de durum tamamen bundan ibarettir. Arka planda çalışan PHP kodlar, MySQL sorguları gibi bir çok program, web sitenizin çalışması için seferber olur ve ortaya bir HTML çıkarıp tarayıcıya göndermek için çalışır.

Sadece HTML’den ibaret olan sayfalar, sunucu tarafında bir işlem gerektirmediği için, yaptıkları CPU/RAM kullanımları son derece önemsizdir. Ancak PHP/ASP gibi yazılımlar için bu durum böyle değildir, yazılan kodlara ve yapılan işlemlere göre sistem bir CPU kullanımı yapar yani işlemci gücü kullanır.

Daha net bir örnek vermek gerekir ise, WordPress bir sitede, bir ziyaretçi siteye girdiğinde WordPress’e ait PHP kodlar çalışmaya başlar. Bu kodlar MySQL üzerinde de sorgular çalıştırır ve veritabanından yazıları alır, kurulu tema ve eklentiler ayrı kodlar çalıştırıp istenen işleri yapar ve sonuç olarak ziyaretçi, arkaplanda PHP kodların işlediği ve HTML’e dönüştürdüğü bir sayfayı görüntüler. Sitenin açılma süresi boyunca, bu işlemler arkaplanda çalışıyor demektir.

Buna göre, bir web sitesinin hızı için en önemli etkenin sitede çalışan yazılım olduğunu söylemek hatalı değildir.

Her türlü görsel, javascript, HTML gibi statik yani sunucu tarafında işleme tabi tutulmayan öğeler, büyüklüklerine göre açılış hızına etki etse de çok büyük içerikler kullanılmadıkça bu öğeler hız açısından önemsizdir. Örneğin, web sitenizin anasayfasına her biri 5MB boyutunda 5 adet resim koyarsanız, sitenize bir ziyaretçi girdiğinde sitenin yüklenmesi için 25MB dosya indirmesi gerekir. Bu süreçte sunucu tarafında bir kod çalıştırılmaz, bu yüzden bu işlemin CPU kullanımı yok sayılabilecek kadar düşüktür, ancak kullanıcı internet hızına göre 25MB dosyayı indirene kadar zaman kaybedecek ve site geç açılıyor olacaktır.

Bunun yanında ise HTML, görseller ve her türlü statik öğrenin toplamının 1MB civarında olduğu bir web sitesini ele alırsak, ortalama bir kullanıcınun internet bağlantısının bu veriyi indirmesi 1 saniye altında sürecek olsa da, arkaplanda çok fazla PHP kodları ve MySQL sorguları çalışıyor olabilir ve bu işlemler tamamlanana kadar saniyeler geçebilir, bu sebeple site geç açılabilir.

PHP-ASP, MySQL ve benzeri her türlü sunucu tabanlı yazılımın bir bilgisayar programı olduğunu anladığımıza göre, şimdi biraz daha detaya inebiliriz.

İyi kodlanmış, gereksiz işlemler ve sorgularla boş yere sunucuyu yormayan ve web siteleri için hazırlanan yazılımlar, genellikle sunucu tarafından 1sn’nin altında bir sürede işlenir ve bu süreçte çok düşük işlemci gücü kullanırlar. Yine WordPress’den örnek vermek gerekirse, WordPress ne yazık ki barındırdığı özellikler sebebiyle bu şekilde düşük işlem gücüne sahip duyan bir yazılım olarak lanse edilemez, aksine oldukça yüksek işlemci gücü kullanır. Kurulan tema ve buna bağlı özellikler, kurulan eklentiler yani eklenen her özellik de ilave olarak PHP hesaplamaları ve sorgularına yol açacak olup web sitesini yavaşlatacak, oldukça yüksek işlemci kullanan ve uzun süre boyunca bu hesaplamaların sonlanmadığı siteler ziyaretçilere yavaş açılan sayfalar olarak geri dönecektir. Çünkü arka planda çalışan kodlar işlem yaparak ziyaretçiye HTML sunmak için çalışmaktadır. Tam olarak bu noktada ise “cache” yani önbellekleme eklentileri devreye girmekte olup, her yeni ziyaretçide bu HTML’i oluşturmak için hesaplamalar yapmak yerine, bu tip eklentiler oluşturulan HTML’i kaydeder ve sonraki ziyaretçiye tekrar bu hesaplamaları yapıp işlemci gücü harcamadan ve zaman kaybetmeden sunar. İyi hazırlanmış cache yazılımları bunu yaparken oldukça düşük CPU gücü kullanır. Örnek olarak, web sitenize girildiğinde yazılımınız 3 saniye boyunca %60 CPU kullanarak sayfayı sunabiliyorsa, iyi bir cache yazılımı ile 1sn’den kısa sürede ve %5’in altında CPU kullanımı ile sayfayı sonraki ziyaretçiye sunabilirsiniz.

Linux sistemlerde, %100 CPU kullanımı demek, 1-core kullanım anlamına gelmektedir. Yani 8 çekirdekli bir işlemci olan bir Linux sistemde, kullanılabilecek CPU miktarı %800’dür. 32 çekirdekli bir sistemde ise %3200 olacaktır. Dolayısıyla web hosting hizmetlerinde size %100 CPU limiti sunuluyorsa, o sunucudaki tüm çekirdekler dahil tüm işlemci gücünü kullanabileceğiniz anlamına gelmemektedir.

Web siteniz yüksek ziyaretçi alıyorsa, yazılımınızın CPU kullanımı normalden daha da önemlidir. Çünkü web siteniz sayfayı sunabilmek için 2 saniye boyunca %50 CPU kullanıyorsa, aynı anda 2 kişi girdiğinde 2 saniye boyunca %100 CPU kullanımı yapacak demektir. Bu da demektir ki, aynı anda siteye giren 3. ziyaretçi, diğer 2 işlemin sonlanmasını bekleyecek, sonra kendi girişi için tekrar işlem başlayacak, yani sayfaya 4 saniye gibi bir sürede ulaşabilecektir. Daha yüksek CPU kullanımı yapan yazılımlarda bu durum daha da kötü bir hale gelecek ve site bir noktadan sonra açılmaz hale gelecektir. Çok yüksek ziyaretçi alıp yazılımı çok iyi şekilde optimize edilmiş web siteleri hiçbir sorun yaşamazken ve çok hızlı çalışırken, sorunlu yazılıma sahip web siteleri sadece 1-2 kişinin girişiyle bile ciddi yavaşlıklar yaşayabilmekte ve açılmaz hale gelebilmektedir.

Sonuca bağlamak gerekirse, web sitesindeki HTML, CSS, Javascript, görsel vb. statik öğelerin web sitesi hızına sadece bağlantı hızı(bant genişliği) boyutunda etkisi olurken, arkaplanda çalışan yazılımınızın yaptığı işlemler sunucunun yanıt süresini belirler. GTmetrix gibi online sorgulama araçları, web sitenizin statik öğelerini kontrol ederek resim boyutlarını küçültmeniz, Javascript/CSS vb. statik öğeleri düzenlemeniz konusunda sizleri yönlendirir ve bant genişliğine yönelik optimizasyonlar önerir. Bunların optimize edilmesi ne kadar önemli olsa da, bu düzenlemelerin CPU kullanımına hiçbir etkisi olmayacaktır. CPU kullanımının azaltılması için arkaplanda çalışan yazılımın kodlarının incelenmesi ve gereksiz her türlü hesaplamanın kaldırılması, gereksiz her türlü veritabanı sorgusunun sadeleştirilmesi/kaldırılması gibi işlemler gerekir. Böylece sunucu, çalıştırmak istediğiniz yazılımı daha kısa sürede ve daha az CPU gücü kullanarak çalıştırır ve web siteniz çok daha hızlı çalışır bir hale gelir.

Bir yanıt yazın