Proxy bağlamında throughput (veri işleme kapasitesi), proxy sunucusunun belirli bir zaman diliminde başarıyla işleyip ilettiği toplam veri hacmini ölçer. Bir proxy'nin ne kadar veriyi kaldırabildiğini sayısallaştırır ve istemci isteklerini ile kaynak sunucu yanıtlarını verimli biçimde aktarma kapasitesini yansıtır.
Proxy throughput'unu anlamak
Throughput, her proxy servisi için kritik bir performans metriğidir; kullanıcı deneyimini ve veri aktarımının operasyonel verimliliğini doğrudan etkiler. Veri hacmi için genellikle saniyede bit (bps), saniyede kilobit (Kbps), saniyede megabit (Mbps) veya saniyede gigabit (Gbps) olarak ölçülür. Bağlantı odaklı metriklerde ise saniyedeki istek sayısı (RPS) veya saniyedeki bağlantı sayısı (CPS) şeklinde de ifade edilebilir; bunlar proxy'nin eşzamanlı işlemleri kaldırma yeteneğini gösterir.
Bir proxy'nin throughput kapasitesi, aynı anda kaç istemciye hizmet verebileceğini ve verileri istemciler ile kaynak sunucular arasında ne kadar hızlı taşıyabileceğini belirler. Video akışı, büyük dosya indirmeleri veya yüksek hacimli API istekleri gibi hızlı veri aktarımı gerektiren uygulamalar için yüksek throughput şarttır. Düşük throughput ise yavaş yüklenme süreleri, gecikmeli yanıtlar ve genel bir hizmet kalitesi düşüşü olarak kendini gösterir.
Proxy throughput'unu etkileyen faktörler
Bir proxy sunucusunun etkin throughput'unu birbirine bağlı birçok faktör belirler:
Ağ altyapısı
Temel belirleyici, alttaki ağ bant genişliğidir. Buna proxy sunucusunun kendi internet bağlantı hızı (hem upstream hem downstream), kaynak sunuculara giden ağ bağlantıları ve istemcilere giden ağ yolları dâhildir. 1 Gbps ağ arayüzüne sahip bir proxy sunucusu, işlem gücü ne olursa olsun 1 Gbps'ten fazla throughput'a ulaşamaz. Ağ yolunun herhangi bir noktasındaki tıkanıklık etkin throughput'u düşürebilir.
Proxy sunucu donanımı
Proxy sunucusunun fiziksel kaynakları işlem kapasitesini doğrudan etkiler:
* CPU: İşlem gücü; SSL/TLS şifreleme/şifre çözme, istek ayrıştırma, başlık düzenleme, içerik filtreleme ve çok sayıda eşzamanlı bağlantıyı yönetme gibi görevler için kritiktir. Yüksek hacimli SSL/TLS trafiğinde veya karmaşık içerik işlemede CPU darboğazları belirginleşir.
* RAM: Sık erişilen içeriği önbelleğe almak, bağlantı durumlarını korumak ve worker süreçlerini desteklemek için yeterli bellek gerekir. Yetersiz RAM, aşırı disk I/O'suna (swap) veya düşük önbellek isabet oranına yol açar; her ikisi de performansı düşürür.
* Disk I/O: Önbellekleme yapan proxy'lerde disk okuma/yazma hızı hayati önemdedir. Bu konuda SSD'ler HDD'leri belirgin şekilde geride bırakır, özellikle yüksek eşzamanlı erişim örüntülerinde. Kalıcı günlük kaydı da disk I/O'su tüketir.
* Ağ arayüz kartları (NIC): NIC'lerin kapasitesi ve kalitesi, sunucunun kaldırabileceği maksimum veri hızını belirler. Yedeklilik için veya bant genişliğini birleştirmek için birden fazla NIC kullanılabilir.
Proxy yazılım yapılandırması
Proxy yazılımının yapılandırılma biçimi throughput'u derinden etkiler:
* Eşzamanlılık ayarları: Maksimum worker süreç/iş parçacığı sayısı, maksimum açık dosya tanımlayıcısı ve maksimum eşzamanlı bağlantı gibi parametreler, proxy'nin paralel istekleri kaldırma yeteneğini doğrudan sınırlar.
* Önbellekleme politikaları: Etkili önbellekleme, kaynak sunucular ve ağ üzerindeki yükü azaltır; içeriği doğrudan proxy'den sunarak algılanan throughput'u artırır. Önbellek boyutu, tahliye politikaları ve time-to-live (TTL) ayarları kritiktir.
* SSL/TLS offloading: SSL/TLS el sıkışmaları ile şifreleme/şifre çözme CPU yoğundur. Bunu özel donanıma (SSL hızlandırıcılar) veya ayrı sunuculara devretmek, ana proxy CPU'sunu diğer görevler için serbest bırakır.
* Günlük seviyeleri: Ayrıntılı günlük kaydı CPU, disk I/O ve bellek tüketir; throughput'u düşürebilir.
* Filtreleme ve kural setleri: Karmaşık veya kapsamlı filtreleme kuralları (örneğin WAF kuralları, içerik denetimi) istek başına daha fazla işlem gerektirir; gecikmeyi artırır ve genel throughput'u düşürür.
* Protokol desteği: HTTP/2 veya HTTP/3 gibi modern protokollerin verimli işlenmesi, ek yükü azaltarak ve çoğullamayı mümkün kılarak throughput'u artırabilir.
Upstream ve downstream performansı
Kaynak sunucuların (upstream) ve istemci cihazlarının/ağlarının (downstream) performansı da proxy'nin etkin throughput'unu etkiler. Hızlı bir proxy, yavaş bir kaynak sunucuyu veya bant genişliği kısıtlı bir istemciyi telafi edemez.
Trafik özellikleri
Trafiğin kendi doğası da rol oynar:
* İstek boyutu: Çok sayıda küçük istek (örneğin çok sayıda küçük varlık için), bağlantı kurma/kapatma ve başlık işleme nedeniyle CPU'yu daha çok zorlayabilirken, az sayıdaki büyük istekler ağ bant genişliğini zorlar.
* Bağlantı kalıcılığı: HTTP keep-alive veya kalıcı bağlantılar (HTTP/2 çoğullama) kullanmak, her istek için yeni TCP bağlantısı kurma yükünü azaltır ve verimliliği artırır.
* Protokol ek yükü: Farklı protokollerin ek yükü farklıdır. Örneğin HTTP/1.1 çoğu zaman birden fazla bağlantı gerektirirken, HTTP/2 birden fazla akış için tek bir bağlantı kullanır.
Proxy throughput'unu ölçmek
Proxy throughput'unun doğru ölçümü, çeşitli sistem ve uygulama seviyesi metriklerinin izlenmesini gerektirir.
Sistem seviyesinde izleme
top, htop, vmstat ve iostat gibi araçlar CPU, bellek ve disk I/O kullanımı hakkında bilgi verir. iftop, nload veya vnstat gibi ağ izleme araçları ağ arayüzü bant genişliği kullanımını takip eder.
# CPU, bellek ve load average izleme
top -bn1 | head -n 5
# Belirli bir arayüzde ağ bant genişliği kullanımını izleme (örn. eth0)
iftop -i eth0
# Disk I/O etkinliğini izleme
iostat -xdm 1 5
Uygulama seviyesi metrikler
Proxy servisleri genellikle şu metrikleri sunar:
* Saniyedeki giriş/çıkış baytı: Proxy üzerinden geçen veri aktarım hızının doğrudan ölçümü.
* Saniyedeki istek sayısı (RPS): Proxy'nin istemci isteklerini işleme hızını gösterir.
* Aktif bağlantılar: Proxy'nin o anda yönettiği açık bağlantı sayısı.
* Önbellek isabet oranı: Önbellekten karşılanan isteklerin yüzdesi; önbellekleme verimliliğini gösterir.
* Hata oranları: Yüksek hata oranları aşırı yüklü veya yanlış yapılandırılmış bir proxy'ye işaret edebilir ve etkin throughput'u düşürür.
Birçok proxy sunucusu bu metrikler için durum sayfaları veya API uç noktaları sağlar. Örneğin NGINX'in stub_status modülü veya HAProxy'nin istatistik sayfası gerçek zamanlı performans verisi sunar.
Yük testi
Maksimum sürdürülebilir throughput'u belirlemek için yük testi araçları vazgeçilmezdir. Apache JMeter, k6, Locust veya wrk gibi araçlar yüksek hacimli eşzamanlı kullanıcı ve istek simüle ederek proxy'nin baskı altındaki performansını ölçer.
# wrk ile bir proxy'yi test etme örneği
wrk -t12 -c400 -d30s --latency http://your-proxy-ip:port/test-path
Bu komut 12 iş parçacığı çalıştırır, 400 açık bağlantı tutar ve 30 saniye boyunca test yaparak gecikme istatistiklerini raporlar.
Proxy throughput'unu optimize etmek
Proxy throughput'unu optimize etmek; donanım yükseltmeleri, yazılım ince ayarı ve mimari değerlendirmelerin birleşimini gerektirir.
Donanım ölçeklendirme
- CPU yükseltmesi: Özellikle SSL/TLS yoğun iş yükleri için daha yüksek saat hızına ve daha fazla çekirdeğe sahip CPU'lar kullanın.
- Bellek genişletme: Daha büyük önbellekleri ve daha fazla eşzamanlı bağlantıyı desteklemek için RAM'i artırın.
- Daha hızlı depolama: Önbellekleme ve günlük kaydı için SSD veya NVMe sürücüler kullanın.
- Ağ yükseltmeleri: Daha yüksek bant genişlikli NIC'ler (örneğin 10 Gbps, 25 Gbps, 40 Gbps) kullanın ve ağ altyapısının bu hızları destekleyebildiğinden emin olun.
Yazılım yapılandırması ve ince ayarı
- Çekirdek parametresi ayarı: TCP tampon boyutlarını (
net.ipv4.tcp_rmem,net.ipv4.tcp_wmem) düzenleyin, dosya tanımlayıcı limitlerini (fs.file-max,ulimit -n) artırın ve ağla ilgili diğer çekirdek parametrelerini optimize edin. - Proxy'ye özgü ayarlar:
- Mevcut CPU çekirdeklerini kullanmak için worker süreç/iş parçacığı sayısını artırın.
- Önbelleği optimize edin: yeterli önbellek boyutu, uygun
max-agebaşlıkları ve verimli tahliye politikaları sağlayın. - Çoğullama ve daha düşük ek yük için HTTP/2 veya HTTP/3'ü etkinleştirin.
- Kaynak sunuculara açılan mevcut bağlantıları yeniden kullanmak için bağlantı havuzunu yapılandırın.
- Üretim ortamlarında ayrıntılı günlük kaydını en aza indirin.
- İşlem yükünü azaltmak için erişim kontrol listelerini (ACL) ve filtreleme kurallarını sadeleştirin.
- SSL/TLS optimizasyonu:
- Verimli şifre paketleri kullanın.
- El sıkışma yükünü azaltmak için SSL oturum önbelleğini ve TLS oturum biletlerini etkinleştirin.
- Özel SSL/TLS sonlandırma sunucularını veya donanım offloader'ları değerlendirin.
Mimari değerlendirmeler
- Yük dengeleme: Gelen trafiği bir yük dengeleyici (örneğin DNS round-robin, L4/L7 yük dengeleyiciler) aracılığıyla birden fazla proxy örneğine dağıtın. Bu, throughput'u yatay olarak ölçekler.
- Coğrafi dağıtım: Gecikmeyi azaltmak ve algılanan throughput'u artırmak için proxy'leri istemcilere ve/veya kaynak sunuculara daha yakın birden çok coğrafi konuma (edge proxy) yerleştirin.
- İçerik dağıtım ağları (CDN): Statik içerik dağıtımını devretmek için CDN'lerle entegre olun; böylece proxy kaynakları dinamik veya kritik trafiğe ayrılır.
Throughput, gecikme ve bant genişliği karşılaştırması
Birbiriyle ilişkili olsalar da throughput, gecikme (latency) ve bant genişliği farklı kavramlardır:
| Özellik | Throughput | Gecikme | Bant genişliği |
|---|---|---|---|
| Tanım | Birim zamanda aktarılan gerçek veri hacmi. | Tek bir veri biriminin yol alma gecikmesi. | Bir yolun maksimum veri aktarım kapasitesi. |
| Birimler | bps, Kbps, Mbps, Gbps, RPS, CPS | Milisaniye (ms) | bps, Kbps, Mbps, Gbps |
| Etkisi | Genel veri aktarım hızı, hacim kapasitesi. | Yanıt verme hızı, gerçek zamanlı etkileşim. | Olası maksimum veri hızı. |
| Benzetme | Borudan saatte ne kadar su aktığı. | Tek bir su damlasının çıkışa ulaşma süresi. | Borunun genişliği. |
Yüksek bant genişlikli bir bağlantı, yüksek throughput için potansiyel sağlar. Ancak bant genişliği yüksek olsa bile throughput; sunucu işlem gücü, ağ tıkanıklığı veya protokol ek yükü gibi faktörlerle sınırlanabilir. Zaman gecikmesi olan latency, tek tek isteklerin ne kadar hızlı işlendiğini etkiler; yüksek gecikme, veri aktarımlarının veya onayların başlamasını geciktirerek etkin throughput'u dolaylı olarak düşürebilir. İyi çalışan bir proxy, gecikmeyi en aza indirirken throughput'u en üst düzeye çıkarmayı hedefler.
HTTP protokol sürümlerinin etkisi
HTTP protokollerinin evrimi, proxy'lerin throughput'u ele alma biçimini önemli ölçüde etkilemiştir:
HTTP/1.1
- Bağlantı modeli: Genellikle istek başına bir TCP bağlantısı ya da
Keep-Aliveile yeniden kullanım. - Head-of-line blocking: Aynı bağlantıdaki önceki bir istek takılırsa sonraki istekler beklemek zorunda kalır.
- Throughput etkileri: Karmaşık sayfalar için çok sayıda açık bağlantı gerektirebilir; bu da ek yükü artırır ve eşzamanlı istekleri sınırlayabilir. Proxy'lerin çoğu zaman çok sayıda bağlantıyı yönetmesi gerekir.
HTTP/2
- Bağlantı modeli: Birden fazla eşzamanlı akış için tek bir TCP bağlantısı (çoğullama).
- Özellikler: Başlık sıkıştırma, server push, akış önceliklendirme.
- Throughput etkileri: Bağlantı ek yükünü azaltır, head-of-line blocking'i (uygulama katmanında) hafifletir ve ağ kaynaklarını verimli kullanır. Proxy'ler daha az TCP el sıkışmasından ve daha iyi kaynak kullanımından yararlanır. Ancak HTTP/2 genellikle TLS üzerinden çalıştığı için SSL/TLS ek yükü hâlâ önemlidir.
HTTP/3
- Bağlantı modeli: UDP üzerinde QUIC (Quick UDP Internet Connections) tabanlıdır.
- Özellikler: Yerleşik TLS 1.3, head-of-line blocking olmadan akış çoğullama (taşıma katmanında), daha hızlı bağlantı kurulumu (0-RTT/1-RTT), gelişmiş paket kaybı kurtarma.
- Throughput etkileri: Daha düşük gecikme ve güvenilmez ağlarda daha iyi performans için tasarlanmıştır. UDP tabanlı yapısı daha verimli veri aktarımı ve daha düşük gecikme sağlayabilir; bu da özellikle mobil veya yüksek paket kayıplı ortamlarda daha yüksek etkin throughput'a dönüşür. Proxy'lerin en iyi performans için UDP ve QUIC desteklemesi gerekir.
