Apache Tomcat s vychozim nastavenim zvladne desitky soubeznnych uzivatelu. Pro stovky a tisice potrebujete tuning. Tady jsou nase zkusenosti s Tomcat 7 pod vysokou zatezi.
Connector — NIO vs. BIO¶
Vychozi BIO connector (blocking I/O) alokuje thread per connection. S 200 concurrent connections = 200 threadu. NIO connector (non-blocking I/O) zvlada tisice spojeni s desitkami threadu. Pro produkcni servery vzdy NIO: protocol=org.apache.coyote.http11.Http11NioProtocol.
Thread pool¶
maxThreads: maximalni pocet threadu pro zpracovani requestu. Pro NIO: 150-300 podle zateze. acceptCount: fronta requestu cekajicich na thread — pokud je plna, server vraci 503. minSpareThreads: minimalni pocet pripravenych threadu.
Keep-Alive¶
HTTP keep-alive drzi spojeni otevrene pro vicee requestu. Snizuje overhead TCP handshaku. maxKeepAliveRequests=100, keepAliveTimeout=15000 ms. Na loadbalanced prostredi muze byt agresivnejsi keepalive kontraproduktivni.
Komprese¶
compression=on, compressionMinSize=2048, compressibleMimeType pro text/html, text/css, application/javascript. Usetri bandwidth za cenu CPU. Pro staticke soubory lepsi komprimovat predem na disku.
Access log¶
Zapnete access log s response time patternem (%D). Analyza access logu odhaluje pomale requesty, ktere JMX metriky nezachyti.
Shrnuti¶
NIO connector, spravne nastaveny thread pool, keep-alive a komprese. Merte pred a po zmene — tuning bez benchmarku je hadani.