Apache Tomcat s výchozím nastavením zvládne desítky soubeznnych uzivatelu. Pro stovky a tisíce potřebujete tuning. Tady jsou naše zkusenosti s Tomcat 7 pod vysokou zatezi.
Connector — NIO vs. BIO¶
Výchozí BIO connector (blocking I/O) alokuje thread per connection. S 200 concurrent connections = 200 threadů. NIO connector (non-blocking I/O) zvládá tisíce spojení s desítkami threadů. Pro produkcni servery vždy NIO: protocol=org.apache.coyote.http11.Http11NioProtocol.
Thread pool¶
maxThreads: maximální počet threadů pro zpracování requestu. Pro NIO: 150-300 podle zateze. acceptCount: fronta requestu čekajících na thread — pokud je plná, server vrací 503. minSpareThreads: minimalni počet pripravenych threadů.
Keep-Alive¶
HTTP keep-alive drží spojení otevrene pro vicee requestu. Snižuje overhead TCP handshaku. maxKeepAliveRequests=100, keepAliveTimeout=15000 ms. Na loadbalanced prostredi muze byt agresivnější keepalive kontraproduktivní.
Komprese¶
compression=on, compressionMinSize=2048, compressibleMimeType pro text/html, text/css, application/javascript. Ušetří bandwidth za cenu CPU. Pro staticke soubory lepsi komprimovat předem na disku.
Access log¶
Zapnete access log s response time patternem (%D). Analýza access logu odhaluje pomalé requesty, které JMX metriky nezachytí.
Shrnuti¶
NIO connector, spravne nastaveny thread pool, keep-alive a komprese. Měřte pred a po zmene — tuning bez benchmarku je hádání.
Potřebujete pomoc s implementací?
Naši experti vám pomohou s návrhem, implementací i provozem. Od architektury po produkci.
Kontaktujte nás