Tiesto

WFN Üye
Konular
635
Mesajlar
635
Çözüm
0
Ticaret Puanı
0
Üyelik
24 Gün
Konum
Antalya
Web Sitesi
Var
Alanı
Domain Uzmanı
1/1
Konu sahibi
İlk ölçüm için Linux sunucuda curl kullanın. Komut, DNS çözümleme, TCP bağlantısı, TLS el sıkışması, sunucunun ilk yanıtı ve toplam indirme süresini ayrı ayrı gösterir. Böylece gecikmenin ağdan mı, HTTPS işleminden mi, uygulamanın yanıt üretmesinden mi yoksa sayfanın indirilmesinden mi kaynaklandığını ayırabilirsiniz. Ölçümü aynı URL için birkaç kez tekrarlayıp ortalama ve en yüksek değerleri karşılaştırın; tek bir sonuç kesin performans göstergesi değildir.

curl ile temel yanıt süresini ölçme​


Ölçüm yapacağınız sunucuya SSH ile bağlanın. curl kurulu değilse kullandığınız dağıtımın paket yöneticisiyle kurun. Ardından örnek URL yerine ölçmek istediğiniz sayfanın adresini yazarak şu komutu çalıştırın:

Bash:
curl -o /dev/null -s -w 'DNS:        %{time_namelookup}s\nTCP:        %{time_connect}s\nTLS:        %{time_appconnect}s\nİlk byte:   %{time_starttransfer}s\nToplam:     %{time_total}s\nHTTP kodu:  %{http_code}\n' https://www.ornek-site.tld/

-o /dev/null yanıt gövdesini kaydetmeden atar, -s ilerleme çıktısını gizler, -w ise seçtiğiniz süreleri yazdırır. Komutun sonunda HTTP durum kodu da görünür. Örneğin varsayımsal olarak Toplam: 0.842s ve İlk byte: 0.310s görürseniz sunucu ilk yanıtı yaklaşık 310 milisaniyede üretmiş, yanıtın tamamı ise 842 milisaniyede indirilmiş demektir.

HTTPS kullanmayan bir adresi ölçerken TLS değeri anlamlı olmayabilir. HTTPS yönlendirmesini de ölçmek istiyorsanız -L seçeneğini ekleyin:

Bash:
curl -L -o /dev/null -s -w 'HTTP kodu: %{http_code}\nİlk byte: %{time_starttransfer}s\nToplam: %{time_total}s\n' https://www.ornek-site.tld/

Bu ölçümde yönlendirmelerin süresi toplam sonuca eklenir. Yönlendirme olup olmadığını ayrıca incelemek için -I ile yalnızca HTTP üstbilgilerini isteyebilirsiniz; ancak bu istek, normal sayfa isteğiyle her sunucuda tamamen aynı davranmayabilir. Gerçek kullanıcı isteğine daha yakın karşılaştırma için normal GET ölçümünü esas alın.

Çıktıdaki süreler neyi gösterir?​


Aşağıdaki değerleri birlikte yorumlayın. Sürelerin anlamı, ölçümü sunucunun kendisinden mi yoksa dış ağdaki başka bir makineden mi yaptığınıza göre değişebilir.
DeğerNe ölçer?Yüksekse ilk kontrol
DNSAlan adının IP adresine çevrilme süresiDNS hizmeti, kayıtlar ve ölçüm noktasının ağı
TCPSunucuyla TCP bağlantısının kurulma süresiAğ yolu, güvenlik duvarı ve sunucuya uzaklık
TLSHTTPS bağlantısının kurulma süresiTLS yapılandırması, CPU yükü ve bağlantı yeniden kullanımı
İlk byteİstek gönderildikten sonra ilk yanıt byte'ının gelmesine kadar geçen süreWeb sunucusu, PHP/uygulama, veritabanı ve dış API çağrıları
Toplamİsteğin başlangıcından yanıtın tamamının alınmasına kadar geçen süreİçerik boyutu, sıkıştırma, istemci ağı ve indirme hızı
İlk byte süresi yüksek, DNS ve bağlantı süreleri düşükse sorun genellikle uygulamanın isteği hazırlamasındadır. Bu durum PHP işlemleri, veritabanı sorguları, dosya erişimi, dış servislere yapılan çağrılar veya sunucu kaynak baskısıyla ilişkili olabilir; tek başına curl çıktısı hangi kod satırının yavaş olduğunu kanıtlamaz. Web sunucusu ve uygulama günlüklerini aynı zaman aralığında inceleyin.

İlk byte hızlı, toplam süre belirgin biçimde yüksekse sunucu yanıtı üretmeye başlamış ancak büyük bir içerik göndermiş olabilir. HTML, görseller, JavaScript veya sıkıştırma ayarlarını kontrol edin. Bu sonuç, sayfanın tarayıcıda tamamen kullanılabilir hâle geldiğini de kanıtlamaz; tarayıcıdaki ek kaynaklar, JavaScript çalışması ve görsel oluşturma süresi ayrıca ölçülmelidir.

DNS veya TCP süresi yüksekse uygulamayı değiştirmeden önce ölçümü farklı bir ağdan tekrarlayın. Sunucunun kendi üzerinden yapılan istek, dış kullanıcıların yaşayacağı ağ gecikmesini göstermez. Dışarıdan yapılan istek ise ağ gecikmesini içerir; bu nedenle uygulamanın gerçek sunucu işlem süresini tek başına ayırmak zorlaşır.

Aynı isteği tekrarlayarak karşılaştırma​


Tek ölçüm yerine aynı URL'yi birkaç kez çalıştırın. Aşağıdaki örnek, varsayımsal olarak on istek gönderir ve her isteğin ilk byte ile toplam süresini ekrana yazar:

Bash:
for i in $(seq 1 10); do
  curl -o /dev/null -s -w "İstek $i | İlk byte: %{time_starttransfer}s | Toplam: %{time_total}s | HTTP: %{http_code}\n" https://www.ornek-site.tld/
done

İlk istek diğerlerinden belirgin biçimde yavaşsa önbelleğin ısınması, DNS önbelleği veya bağlantı kurulumu etkili olabilir. Tüm istekler benzer biçimde yavaşsa sabit bir uygulama, ağ veya kaynak sorunu araştırılmalıdır. Değerler birbiriyle çok farklıysa yalnızca ortalamaya bakmayın; en yüksek süreyi ve hangi istek sırasında oluştuğunu da dikkate alın. Yoğunluk altındaki davranışı görmek için ayrıca kontrollü yük testi gerekir; bu basit döngü, yük testi değildir.

Önbelleğin etkisini ayırmak için yanıt üstbilgilerini de kaydedebilirsiniz:

Bash:
curl -s -D - -o /dev/null -w 'İlk byte: %{time_starttransfer}s\nToplam: %{time_total}s\n' https://www.ornek-site.tld/

Çıktıda Cache-Control, Age, ETag veya sağlayıcıya özgü önbellek başlıkları bulunabilir. Önbellekten gelen hızlı bir yanıt, ziyaretçinin her istekte aynı süreyi alacağını göstermez; önbellek dışı ilk istek için uygulama ve veritabanı yolu ayrıca incelenmelidir.

Sonucu doğrulamak için izlenecek yol​


Ölçümü hem sunucunun kendisinden hem de kullanıcıya yakın ayrı bir makineden yapın. Sunucudan yapılan testte DNS, ağ ve dış erişim etkisi azalır; dış testte ziyaretçinin gerçek bağlantı yolu daha iyi temsil edilir. İki sonuç arasındaki fark büyüdükçe ağ, DNS, güvenlik duvarı veya coğrafi uzaklık ihtimali artar.

İlk byte süresi yüksek çıktığında ölçüm saatini, URL'yi, HTTP kodunu, ilk byte ve toplam süre değerlerini kaydedin. Aynı anda CPU, bellek, disk bekleme, PHP-FPM veya benzeri uygulama süreçleri ve veritabanı günlüklerini karşılaştırın. Belirli bir istek türünde hata oluşuyorsa yalnızca ana sayfayı değil, yavaş olduğu görülen URL'yi ve mümkünse istek zamanını paylaşarak uygulama veya sunucu desteği isteyin. Oturum çerezleri, erişim belirteçleri ve kişisel verileri tanılama çıktısına eklemeyin.

Ölçümden sonra web sunucusu günlüklerine geçici ayrıntılı zamanlama kaydı eklediyseniz işiniz bittiğinde gereksiz ayrıntılı kaydı kapatın. Yanıt süresini kalıcı olarak değerlendirmek için aynı URL, aynı protokol ve mümkün olduğunca aynı ölçüm noktalarıyla düzenli aralıklarla kayıt tutun; aksi hâlde farklı ağ koşullarını uygulamadaki değişikliklerle karıştırabilirsiniz.
 

Sende şimdi bize katılmak ister misin?

Kayıt ol

Bize katılım kolay ve ücretsizdir!

Foruma git ?

Bu konuyu görüntüleyen kullanıcılar

Bu konuyu şu anda görüntüleyen üye bulunmuyor.
Robotlar:
  • Anthropic