İçeriğe geç
Apache Tomcat

Apache Tomcat, Servlet/JSP tabanlı Java uygulamaları için olgun ve yaygın bir runtime’dır. Üretimde genellikle TLS terminasyonu, erişim kontrolü ve yük dağıtımı Nginx veya HAProxy’de; uygulama yaşam döngüsü Tomcat’te yönetilir.

Mono’da kullanım alanları

  • Java enterprise uygulama dağıtımı
  • Tomcat cluster ve oturum replikasyonu
  • JDBC bağlantı havuzu ve performans iyileştirme

Üretim yaklaşımı

Tomcat kurulumlarında Java sürümü, JVM kaynak sınırları, connector thread pool, datasource pool, health endpoint’i ve graceful shutdown birlikte ele alınır. Her instance aynı konfigürasyonun izlenebilir bir sürümünden üretilir. Böylece bir node’u bakım için çıkarmak, kullanıcı trafiğini kesmeden yapılabilir.

Tomcat mi Jetty mi, tam uygulama sunucusu mu?

Tomcat bir Servlet konteyneridir; bütün Jakarta EE özelliklerini sağlayan tam bir uygulama sunucusuyla eş tutulmamalıdır. Uygulamanın kullandığı API’ler ve framework, hangi runtime’ın uygun olduğunu belirler. Mevcut bir WAR paketinin çalışması, onun yeni bir ana sürüme değişiklik yapılmadan taşınabileceğini garanti etmez.

SenaryoKarar noktası
Mevcut WAR dağıtımıServlet sürümü, Java gereksinimi ve kullanılan kütüphaneler kontrol edilir.
Gömülü HTTP sunucusuFramework’ün Tomcat ve Jetty desteği, paketleme modeliyle birlikte değerlendirilir.
Tam Jakarta EE servisleriGerekli API’lerin uygulama tarafından mı, sunucu tarafından mı sağlandığı belirlenir.
Birden fazla uygulamaOrtak runtime tasarrufu ile ayrı süreçlerin hata izolasyonu karşılaştırılır.

Özellikle javax.* ile jakarta.* paket adları arasındaki geçiş, yalnızca sunucu paketini güncellemekten ibaret değildir. Uygulama bağımlılıkları, filtreler ve üçüncü taraf entegrasyonları birlikte test edilmelidir. Java ve Tomcat sürümlerinin destek yaşam döngüsü ayrıca izlenir.

Kapasite: daha fazla thread her zaman daha hızlı değildir

Bir istek thread’i veritabanı bağlantısı bekliyorsa thread sayısını artırmak veritabanına daha fazla eşzamanlı yük gönderebilir. Connector sınırları, JDBC havuzu ve veritabanının kabul edebileceği bağlantı sayısı ortak bir kapasite planına dayanmalıdır. CPU kullanımı düşükken yanıt süreleri yükseliyorsa bağlantı bekleme, dış servis gecikmesi veya kilitlenme araştırılır.

JVM heap boyutunun yanında garbage collection duraklamaları, native bellek ve konteyner bellek sınırı da önemlidir. Yalnızca ortalama yanıt süresine bakılmaz; p95/p99 gecikmesi, hata oranı ve istek kuyruğunun nasıl büyüdüğü izlenir. Thread dump ve heap dump dosyaları hassas uygulama verisi içerebileceğinden erişimleri kontrollü tutulur.

Oturum kaybı olmadan sürüm geçişi nasıl planlanır?

Yük dengeleyicide bir node’a yeni trafik durdurulur, devam eden istekler için boşaltma süresi tanınır ve yeni sürüm hazır olduğunda readiness kontrolüyle tekrar havuza alınır. Cookie tabanlı yönlendirme tek başına yedeklilik sağlamaz: oturum yalnızca arızalanan node’un belleğindeyse kullanıcı yeniden giriş yapmak zorunda kalabilir.

Paylaşılan oturum deposu veya replikasyon seçimi; veri hacmi, serileştirme uyumluluğu ve sürümler arası geçişle birlikte değerlendirilir. Veritabanı şeması değişiklikleri eski sürümle uyumlu değilse uygulama rollback’i de yeterli olmaz. Mono’nun yaklaşımı, runtime güncellemesini uygulama ve veri katmanı için tanımlanmış geri dönüş koşullarıyla birlikte yürütmektir.

İlgili hizmetlerimiz

Sıkça sorulan sorular

Apache Tomcat ne işe yarar?
Tomcat, Java Servlet ve Jakarta Servlet tabanlı web uygulamalarını çalıştıran bir servlet container ve HTTP runtime’ıdır. Uygulamanın ihtiyaçlarına göre doğrudan veya Nginx/HAProxy gibi bir reverse proxy arkasında çalıştırılır.
Tomcat cluster nasıl tasarlanır?
Öncelik uygulamayı stateless hâle getirmektir. Bu mümkün değilse session replication veya load balancer üzerinde cookie tabanlı stickiness değerlendirilir. Failover, deployment ve session kaybı staging ortamında mutlaka test edilmelidir.
Tomcat performansı nasıl iyileştirilir?
Connector thread pool, JVM heap, garbage collector, datasource connection pool ve upstream timeout değerleri birlikte ölçülür. Sadece heap artırmak, bağlantı havuzu veya veritabanı darboğazını çözmez.

Bir sonraki dönüşümü birlikte planlayalım.

Ekibimiz teknik gereksinimlerinizi anlamak ve hızlıca prototip çıkarmak için hazır.