Ana içeriğe atla

Genel Bakış

Gateway performansı birçok faktöre bağlıdır:
  • Donanım kaynakları: CPU core sayısı, bellek miktarı
  • Trafik profili: Eşzamanlı istek sayısı, istek boyutu, SSE/streaming kullanımı
  • Politika karmaşıklığı: Uygulanan politikaların sayısı ve ağırlığı (örneğin Content Filtering gibi CPU-yoğun politikalar)
  • Backend yanıt süresi: Hedef servisin gecikme profili
Tuning yaklaşımı — öncelik sırası:
  1. Otomatik profil — Çoğu ortam için yeterlidir, müdahale gerekmez
  2. Tier önerileri — Kaynak boyutuna göre hazır parametre setleri (bu sayfa)
  3. Manuel ayar — Yük testi sonuçlarına göre ince ayar

Tier Bazlı Önerilen Ayarlar

Aşağıdaki tablolar, farklı donanım profilleri için önerilen Gateway Worker ayarlarını göstermektedir. Bu değerler, üretim öncesi yük testleri ile doğrulanmalıdır.

Tier 1 — 2 Core / 2 GB RAM

Düşük trafikli ortamlar, geliştirme ve PoC senaryoları için uygundur.
ParametreÖnerilen Değer
tuneIoThreads2
tuneWorkerThreads512
tuneWorkerMaxThreads1024
tuneRoutingConnectionPoolMinThreadCount512
tuneRoutingConnectionPoolMaxThreadCount2048
tuneRoutingConnectionPoolMaxConnectionTotal2048
tuneElasticsearchClientIoThreadCount8
tuneAsyncExecutorCorePoolSize512
tuneAsyncExecutorMaxPoolSize1024
tuneAsyncExecutorQueueCapacity1000
Tier 1 Ortam Değişken Bloğu Örneği:
tuneIoThreads=2
tuneWorkerThreads=512
tuneWorkerMaxThreads=1024
tuneRoutingConnectionPoolMinThreadCount=512
tuneRoutingConnectionPoolMaxThreadCount=2048
tuneRoutingConnectionPoolMaxConnectionTotal=2048
tuneElasticsearchClientIoThreadCount=8

Tier 2 — 4 Core / 4 GB RAM

Orta ölçekli üretim ortamları için önerilir. Çoğu kurulum için dengeli bir başlangıç noktasıdır.
ParametreÖnerilen Değer
tuneIoThreads4
tuneWorkerThreads1024
tuneWorkerMaxThreads2048
tuneRoutingConnectionPoolMinThreadCount1024
tuneRoutingConnectionPoolMaxThreadCount4096
tuneRoutingConnectionPoolMaxConnectionTotal4096
tuneElasticsearchClientIoThreadCount16
tuneAsyncExecutorCorePoolSize1024
tuneAsyncExecutorMaxPoolSize2048
tuneAsyncExecutorQueueCapacity1000
Tier 2 Ortam Değişken Bloğu Örneği:
tuneIoThreads=4
tuneWorkerThreads=1024
tuneWorkerMaxThreads=2048
tuneRoutingConnectionPoolMinThreadCount=1024
tuneRoutingConnectionPoolMaxThreadCount=4096
tuneRoutingConnectionPoolMaxConnectionTotal=4096
tuneElasticsearchClientIoThreadCount=16

Tier 3 — 8 Core / 8 GB RAM

Yüksek trafikli üretim ortamları için önerilir.
ParametreÖnerilen Değer
tuneIoThreads8
tuneWorkerThreads2048
tuneWorkerMaxThreads4096
tuneRoutingConnectionPoolMinThreadCount1024
tuneRoutingConnectionPoolMaxThreadCount8192
tuneRoutingConnectionPoolMaxConnectionTotal8192
tuneElasticsearchClientIoThreadCount32
tuneAsyncExecutorCorePoolSize2048
tuneAsyncExecutorMaxPoolSize4096
tuneAsyncExecutorQueueCapacity2000
Tier 3 Ortam Değişken Bloğu Örneği:
tuneIoThreads=8
tuneWorkerThreads=2048
tuneWorkerMaxThreads=4096
tuneRoutingConnectionPoolMinThreadCount=1024
tuneRoutingConnectionPoolMaxThreadCount=8192
tuneRoutingConnectionPoolMaxConnectionTotal=8192
tuneElasticsearchClientIoThreadCount=32
JVM Parametreleri: Tüm tier’larda otomatik bellek profili sistemi önerilir (JAVA_OPTS eklemeye gerek yoktur). Profil detayları ve manuel GC yapılandırması için JVM Garbage Collector Ayarlama sayfasına bakın.

Thread Tuning

Worker Threads

Worker thread’ler, gelen HTTP isteklerini işleyen temel thread pool’dur.
ParametreVarsayılanAçıklama
tuneWorkerThreads1024Minimum Worker thread sayısı — sunucu başlangıcında oluşturulan thread’ler
tuneWorkerMaxThreads2048Maksimum Worker thread sayısı — yük altında büyüyebileceği üst sınır

CPU’ya Göre Önerilen Thread Değerleri

CPU CoretuneWorkerThreadstuneWorkerMaxThreads
15121024
210242048
420484096
840968192
Genel kural: tuneWorkerThreads ≈ CPU × 512, tuneWorkerMaxThreads ≈ CPU × 1024. Bu değerler Undertow’un (Gateway’in kullandığı HTTP sunucusu) thread yönetim modeline dayanır.

IO Threads

IO thread’ler, network I/O işlemlerini (socket okuma/yazma) yöneten düşük seviyeli thread’lerdir.
ParametreVarsayılanAçıklama
tuneIoThreadsCPU core sayısıIO Thread sayısı
IO thread sayısı genellikle CPU core sayısına eşit tutulur. Artırmak çoğu senaryoda fayda sağlamaz; bağlam değiştirme (context switching) maliyetine yol açabilir.

Async Executor Thread Pool

RestApi Politikası, Script Politikası, loglama ve trafik aynalama gibi asenkron işlemler bu ayrı thread pool’u kullanır.
ParametreVarsayılanAçıklama
tuneAsyncExecutorCorePoolSizetuneWorkerThreads ile aynıPool’da canlı tutulan minimum thread sayısı
tuneAsyncExecutorMaxPoolSizetuneWorkerMaxThreads ile aynıOluşturulabilecek maksimum thread sayısı
tuneAsyncExecutorQueueCapacitytuneMaxQueueSize > 0 ise bu değer, aksi halde 1000Thread’ler dolduğunda kuyrukta bekleyebilecek maksimum görev sayısı
Thread Pool Boyutlandırma Uyarısı:Asenkron executor thread pool’u, ana worker thread pool’undan bağımsızdır. Toplam thread sayısının (worker + async executor) sisteminizin kapasitesini aşmadığından emin olun. Thread sayılarını belirlerken CPU core sayısı ve kullanılabilir belleği göz önünde bulundurun.

Connection Pool Tuning

Routing Connection Pool

Backend servislere yapılan HTTP bağlantılarını yöneten pool’dur. Yüksek eşzamanlı istek hacminde bu değerler kritiktir.
ParametreVarsayılanAçıklama
tuneRoutingConnectionPoolMinThreadCountMinimum bağlantı thread sayısı
tuneRoutingConnectionPoolMaxThreadCountMaksimum bağlantı thread sayısı
tuneRoutingConnectionPoolMaxConnectionPerHost1024Tek bir backend host’a açılabilecek maksimum bağlantı sayısı
tuneRoutingConnectionPoolMaxConnectionTotal2048Tüm backend host’lara açılabilecek toplam maksimum bağlantı sayısı
Ne zaman artırılmalı:
  • 503 hataları veya connection timeout logları görüldüğünde
  • Backend servisler yavaş yanıt verdiğinde ve bağlantılar tükendiğinde
  • Eşzamanlı istek sayısı mevcut pool limitlerini aştığında

Cache Connection Pool

Cache servisleriyle yapılan bağlantıları yönetir.
ParametreVarsayılanAçıklama
tuneCacheConnectionPoolMaxConnectionTotal2048Cache Connection Pool toplam maksimum bağlantı sayısı

API Call Connection Pool

Rest API Politikası ve benzeri politikalar tarafından yapılan harici API çağrılarını yönetir.
ParametreVarsayılanAçıklama
tuneApiCallConnectionPoolMaxConnectionPerHost256Host başına maksimum bağlantı sayısı
tuneApiCallConnectionPoolMaxConnectionTotal4096Toplam maksimum bağlantı sayısı

Timeout Tuning

ParametreVarsayılanAçıklama
tuneReadTimeout30000 ms (30 sn)İstemciden veri okuma timeout’u. Client veri göndermezse bu süre sonunda bağlantı kapatılır
tuneStreamingReadTimeout0 ms (sınırsız)SSE/LLM streaming bağlantıları için istemci tarafı okuma timeout’u
tuneNoRequestTimeout60000 ms (60 sn)Bağlantı kurulduktan sonra istek gelmeme timeout’u

Timeout Parametrelerinin Birbirleriyle İlişkisi

İstemci bağlantısı → tuneNoRequestTimeout (istek bekleme)
                   → İstek geldi → tuneReadTimeout (veri okuma)
                                 → Streaming? → tuneStreamingReadTimeout
  • tuneNoRequestTimeout: Bağlantı açıldı ancak HTTP isteği gönderilmedi — boş bağlantıları temizler
  • tuneReadTimeout: İstek işlenirken istemci veri göndermeyi durdurdu — takılı istekleri temizler
  • tuneStreamingReadTimeout: SSE, Server-Sent Events, LLM streaming gibi uzun ömürlü bağlantılarda normal tuneReadTimeout yetersiz kalır
SSE/LLM Streaming Senaryoları:Streaming bağlantılarda istemci uzun süre veri göndermediği için normal tuneReadTimeout bağlantıyı erken kapatabilir. tuneStreamingReadTimeout ile streaming bağlantılarına özel timeout değeri atanır. Varsayılan 0 (sınırsız) değeri çoğu senaryo için uygundur; ancak kaynak sızıntısını önlemek için ortamınıza uygun bir üst limit belirleyebilirsiniz.

Benchmark Referans

Tier bazlı performans karşılaştırmaları ve detaylı benchmark sonuçları için Kapasite Planlama sayfasına bakın.
Benchmark sonuçları ideal koşullarda (hızlı backend, minimal network gecikmesi, sade politika zinciri) ölçülmüştür. Production ortamları için mutlaka kendi trafik desenlerinize göre yük testleri yapın.

İlgili Sayfalar

JVM Garbage Collector Ayarlama

Otomatik bellek profili, GC seçenekleri ve heap yapılandırması

Kapasite Planlama

Donanım boyutlandırma, RAM hesaplama ve benchmark sonuçları

Gateway Runtime'ları

Gateway ortamlarının UI üzerinden yapılandırılması ve parametre referansı

Pod Thread Sayısı Periyodik İzleme

Thread kullanımının zamana göre izlenmesi ve uyarı mekanizmaları