VDS (Sanal Özel Sunucu) üzerinde çalışan web uygulamaları, sık sık yüksek kullanıcı trafiği altında yanıt vermemeye başlar. Uygulama şu anda çalışıyor gibi görünse de, gelen istekler sıraya giriyor ve saatler sonra işleniyor. Bu sorunun kökünde çoğu zaman yanlış yapılandırılmış Thread Pool (İş Parçacığı Havuzu) yatmaktadır. Thread Pool, eş zamanlı işlem yapan uygulamalarda kaç tane işi aynı anda yürütebileceğini belirler. Doğru ayar yapılmazsa, CPU ve RAM bol olsa bile, uygulama bottleneck oluşturur.

Thread Pool Nedir ve Neden Önemlidir?

Thread Pool, bir web sunucusunun kaç tane eş zamanlı isteği işleyebileceğini yöneten bir mekanizmadır. Örneğin, Tomcat, Jetty veya Node.js gibi uygulama sunucularında thread sayısı sınırlıdır. Eğer 100 thread tahsis edilmişse ve 100 istek işleniyorsa, 101. istek sırada bekler. Bu bekleme süresi kullanıcı açısından timeout olarak görülür.

VDS ortamında, paylaşımlı hosting'den farklı olarak, thread pool ayarlarını doğrudan kontrol edebilirsiniz. Ancak çoğu geliştirici varsayılan ayarları kullanır ve performans sorunu yaşayıncaya kadar bu ayarları incelemez.

Thread Pool Boyutunu Nasıl Hesaplayacaksınız?

Thread Pool boyutu, sunucunuzun CPU çekirdek sayısı ve uygulamanızın iş türüne bağlı olarak hesaplanmalıdır:

  • CPU-yoğun işler: Thread sayısı = CPU çekirdek sayısı (örn: 4 çekirdekli VDS için 4-8 thread)
  • I/O-yoğun işler (veritabanı, API çağrıları): Thread sayısı = CPU çekirdek sayısı × 4-8 (örn: 4 çekirdek için 16-32 thread)
  • Karma yük: CPU çekirdek sayısı × 2-4 olarak başlayıp, kaynak kullanımına göre ayarlayın

Örneğin, 8 çekirdekli, 16 GB RAM'li bir VDS'de API ağırlıklı Node.js uygulaması çalıştırıyorsanız, thread pool'u 32-64 arasında tutmak makul bir başlangıç noktasıdır.

Populer Uygulama Sunucularında Thread Pool Ayarı

Node.js (libuv): Node.js'de thread pool otomatik yönetilir, ancak UV_THREADPOOL_SIZE ortam değişkeni ile kontrol edilebilir:

export UV_THREADPOOL_SIZE=32

Java/Tomcat: server.xml dosyasında <Executor> etiketi ile yapılandırılır:

<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="64" minSpareThreads="8" />

Python/Gunicorn: Worker sayısı ve thread sayısı ayrı ayrı ayarlanır:

gunicorn --workers=4 --threads=8 --worker-class=gthread app.py

PHP-FPM: Process manager ayarında pm.max_children, pm.min_spare_servers ve pm.max_spare_servers parametreleri kontrol edilir.

Thread Pool Sorunu Nasıl Tanımlarsınız?

VDS'de aşağıdaki belirtiler, thread pool yetersizliğini gösterir:

  • Sunucu kaynaları (CPU, RAM) düşük kullanımda olmasına rağmen yanıt süresi 30+ saniye
  • Uygulamanın loglarında "Thread pool exhausted" veya "queue full" hataları
  • netstat -an | grep ESTABLISHED | wc -l komutuyla bakıldığında bağlantı sayısı thread pool sayısını aşıyor
  • İstek sırası (request queue) hızlı bir şekilde artıyor

Monitoring araçları (Prometheus, Grafana, New Relic) ile thread pool kullanım yüzdesini izleyerek, ne zaman saturasyon noktasına ulaştığını öğrenebilirsiniz.

Thread Pool Ayarlarını Dinamik Hale Getirmek

Statik bir sayı belirlemek yerine, uygulanızı otomatik olarak thread sayısını trafiğe göre ayarlayacak şekilde yapılandırmak daha etkilidir. Java'da DynamicThreadPool kütüphaneleri, Python'da concurrent.futures.ThreadPoolExecutor kullanılabilir. Node.js'de ise cluster module ile multi-process modeline geçilerek thread pool kaygısı hafifletilir.

VDS'de Thread Pool Performans İzlemesi

VDS sunucunuzda top, htop veya ps aux komutları ile açık thread sayısını görebilirsiniz. Düzenli loglar tutarak, peak saatlerde thread pool kullanımının ne olduğunu gözlemleyin. Ardından, sunucunuzun gerçek ihtiyacına uygun bir thread pool boyutu belirleyin. Çoğu zaman ilk denemede mükemmel bir ayar yapmak imkansızdır; iteratif bir şekilde test ve ölçüm yapılmalıdır.

Sonuç: VDS üzerinde çalışan yüksek trafik uygulamalarında thread pool optimizasyonu, basit görünse de en etkili performans iyileştirmelerinden biridir. Doğru hesaplanan thread pool boyutu, sunucunuzun kaynaklarını tamamen kullanarak yanıt süresini dramatik şekilde düşürür. Bogahost'un yönetilen VDS hizmetleri, thread pool ayarları da dahil olmak üzere, uygulama performansı için profesyonel danışmanlık sunmaktadır.