Apache Tomcat Tuning for Production



Similar documents
Tomcat Tuning. Mark Thomas April 2009

Agenda. Tomcat Versions Troubleshooting management Tomcat Connectors HTTP Protocal and Performance Log Tuning JVM Tuning Load balancing Tomcat

Apache and Tomcat Clustering Configuration Table of Contents

Apache Tomcat Tips and Tricks from the Pros

Scaling Progress OpenEdge Appservers. Syed Irfan Pasha Principal QA Engineer Progress Software

Apache Tomcat. Load-balancing and Clustering. Mark Thomas, 20 November Pivotal Software, Inc. All rights reserved.

Apache Tomcat & Reverse Proxies

MID-TIER DEPLOYMENT KB

NetIQ Access Manager 4.1

JBoss Seam Performance and Scalability on Dell PowerEdge 1855 Blade Servers

Exploring Oracle E-Business Suite Load Balancing Options. Venkat Perumal IT Convergence

Apache Tomcat Clustering

Practical Performance Understanding the Performance of Your Application

MEASURING WORKLOAD PERFORMANCE IS THE INFRASTRUCTURE A PROBLEM?

Business white paper. HP Process Automation. Version 7.0. Server performance

PeopleSoft Online Performance Guidelines

Configuring Nex-Gen Web Load Balancer

IT Best Practices Audit TCS offers a wide range of IT Best Practices Audit content covering 15 subjects and over 2200 topics, including:

24x7 Scheduler Multi-platform Edition 5.2

Application Performance Testing Basics

Tuning WebSphere Application Server ND 7.0. Royal Cyber Inc.

Liferay Performance Tuning

An Oracle White Paper July Oracle Primavera Contract Management, Business Intelligence Publisher Edition-Sizing Guide

A Comparative Study on Vega-HTTP & Popular Open-source Web-servers

[TFS 4.1 ADVANCED GUIDE]

An Oracle White Paper September Advanced Java Diagnostics and Monitoring Without Performance Overhead

LOAD BALANCING TECHNIQUES FOR RELEASE 11i AND RELEASE 12 E-BUSINESS ENVIRONMENTS

tc Server Webinar Series Deployments

B M C S O F T W A R E, I N C. BASIC BEST PRACTICES. Ross Cochran Principal SW Consultant

Tuning Tableau Server for High Performance

Intro to Load-Balancing Tomcat with httpd and mod_jk

Blackboard Learn TM, Release 9 Technology Architecture. John Fontaine

Tuning Your GlassFish Performance Tips. Deep Singh Enterprise Java Performance Team Sun Microsystems, Inc.

Mission-Critical Java. An Oracle White Paper Updated October 2008

Understanding Slow Start

Stingray Traffic Manager Sizing Guide

Cognos8 Deployment Best Practices for Performance/Scalability. Barnaby Cole Practice Lead, Technical Services

Oracle WebLogic Server 11g: Monitor and Tune Performance

THE BUSY DEVELOPER'S GUIDE TO JVM TROUBLESHOOTING

bbc Adobe LiveCycle Data Services Using the F5 BIG-IP LTM Introduction APPLIES TO CONTENTS

WebSphere Performance Monitoring & Tuning For Webtop Version 5.3 on WebSphere 5.1.x

Best practices for performance tuning JBoss Enterprise

Apache Jakarta Tomcat

Sample. WebCenter Sites. Go-Live Checklist

Resource Utilization of Middleware Components in Embedded Systems

Challenges of Sending Large Files Over Public Internet

Implementing a Well- Performing and Reliable Portal

Deployment Checklist. Liferay Portal 6.1 Enterprise Edition

TFE listener architecture. Matt Klein, Staff Software Engineer Twitter Front End

INCREASE SYSTEM AVAILABILITY BY LEVERAGING APACHE TOMCAT CLUSTERING

Winning the J2EE Performance Game Presented to: JAVA User Group-Minnesota

ZEN LOAD BALANCER EE v3.04 DATASHEET The Load Balancing made easy

SharePoint Performance Optimization

Availability Digest. Redundant Load Balancing for High Availability July 2013

Job Reference Guide. SLAMD Distributed Load Generation Engine. Version 1.8.2

JVM Garbage Collector settings investigation

Web Application s Performance Testing

Apache Tomcat. Tomcat Clustering: Part 2 Load balancing. Mark Thomas, 15 April Pivotal Software, Inc. All rights reserved.

Java Performance. Adrian Dozsa TM-JUG

10 Configuring Packet Filtering and Routing Rules

Adobe LiveCycle Data Services 3 Performance Brief

Java Performance Tuning

Transport Layer Protocols

Enterprise Manager Performance Tips

Java Troubleshooting and Performance

Filr 2.0 Administration Guide. April 2016

Running SAP Solutions in the Cloud How to Handle Sizing and Performance Challenges. William Adams SAP AG

ZEN LOAD BALANCER EE v3.02 DATASHEET The Load Balancing made easy

Table of Contents. Chapter 1: Installing Endpoint Application Control. Chapter 2: Getting Support. Index

Load Balancing Web Applications

Performance Testing of Java Enterprise Systems

Best practices for performance tuning JBoss Enterprise

Performance Analysis of Web based Applications on Single and Multi Core Servers

JBOSS OPERATIONS NETWORK (JBOSS ON) MONITORING

GLOBAL DIGITAL ENTERTAINMENT CONTENT AND SERVICES PROVIDER JESTA DIGITAL MIGRATES TO THE ULTRAESB

Delivering Quality in Software Performance and Scalability Testing

Network Instruments white paper

Top 10 reasons your ecommerce site will fail during peak periods

CHAPTER 1 - JAVA EE OVERVIEW FOR ADMINISTRATORS

Configuring Citrix NetScaler for IBM WebSphere Application Services

Application Performance in the Cloud

Advanced Liferay Architecture: Clustering and High Availability

Oracle WebLogic Server 11g Administration

Holly Cummins IBM Hursley Labs. Java performance not so scary after all

Tool - 1: Health Center

Customer Service Description Next Generation Network Firewall

JVM Performance Study Comparing Oracle HotSpot and Azul Zing Using Apache Cassandra

HAProxy. Free, Fast High Availability and Load Balancing. Adam Thornton 10 September 2014

Performance Optimization For Operational Risk Management Application On Azure Platform

University of Southern California Shibboleth High Availability with Terracotta

In Memory Accelerator for MongoDB

WEBAPP PATTERN FOR APACHE TOMCAT - USER GUIDE

BASICS OF SCALING: LOAD BALANCERS

CSE331: Introduction to Networks and Security. Lecture 12 Fall 2006

Why SSL is better than IPsec for Fully Transparent Mobile Network Access

Improving DNS performance using Stateless TCP in FreeBSD 9

Oracle Database Security and Audit

Agile Performance Testing

Basic TCP/IP networking knowledge of client/server concepts Basic Linux commands and desktop navigation (if don't know we will cover it )

EWeb: Highly Scalable Client Transparent Fault Tolerant System for Cloud based Web Applications

Transcription:

Apache Tomcat Tuning for Production Filip Hanik & Mark Thomas SpringSource September 2008 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 1

About SpringSource Created, developed and leads Spring Rod Johnson, CEO and father of Spring Deep Apache involvement Provide full commercial support for Apache Tomcat Offer a host of production ready Apache and Spring-based products Offices worldwide US, UK, France, Netherlands, Germany, Australia and Canada Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 2

About the presenters Apache Tomcat Committers for 5+ years Apache Software Foundation members SpringSource technologists - Apache development team - Senior Software Engineers and Consultants Performance, troubleshooting and security experts Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 3

Tomcat versions Focused on Tomcat 6.0.x 5.5.x bugs and security 4.1.x occasional bugs and security 3.x, 4.0.x, 5.0.x are unsupported 7.x is on the horizon with some initial discussions on the mailing list Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 4

Agenda Review of part 1 Logging The role of TCP and HTTP in performance Load balancing Tuning connectors for your network Timeouts are critical Content delivery & caching Tuning the JVM Q&A Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 5

Review of Part 1: The process Understand the system architecture Stabilise the system Set performance target Measure current performance Identify the current bottleneck Fix the root cause of the bottleneck Repeat until you meet the target Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 6

Review of Part 1: Availability Clustering Multiple Tomcat instances Load balancer httpd, IIS, hardware, etc. How stateful is your applciation? How seamless do you want fail over to be? Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 7

Review of Part 1: Reliability Redeployment can cause memory leaks Include redeployment in your testing Design for scalability Include clustering in your testing In highly concurrent environments turn off KeepAlive Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 8

Apache Tomcat in Production Applications usually account for >80% of request processing time Recall the tuning process Focus your efforts on the bottlenecks Don't try and guess the bottleneck Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 9

Apache Tomcat in Production Out Of The Box Tomcat Tomcat ready for production No JVM settings applied Tuning is fairly limited So lets get to it Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 10

Apache Tomcat in Production What will we tune? Adjust logging Tune connectors Tune content cache JVM settings Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 11

Production Logging Tomcat s logging is OK But one must understand what it does Catch-all logger goes to stdout and file No overflow protection Synchronized logging Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 12

Production Logging Remove duplicate logging (logging.properties) Default logs to stdout and file.handlers = 1catalina.org.apache.juli.FileHandler, java.util.logging.consolehandler Remove logging to stdout no rotation.handlers = 1catalina.org.apache.juli.FileHandler Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 13

Production Logging Overflow protection (logging.properties) Use if your logs have the risk of overflowing handlers = 1catalina.org.apache.juli.FileHandler, The logger name contains class file Swap in custom implementation (or JDK) handlers = 1catalina.java.util.logging.FileHandler, Tomcat accepts a custom class name Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 14

Production Logging Overflow protection (logging.properties) Size based rotation using JVM logger handlers = 1catalina.java.util.logging.FileHandler, No more than 5x20mb files 1catalina.java.util.logging.FileHandler.pattern = ${catalina.base}/logs/catalina.%g.log 1catalina.java.util.logging.FileHandler.limit = 20000000 1catalina.java.util.logging.FileHandler.count = 5 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 15

Production Logging Synchronous logging (logging.properties) Can become a bottleneck We don t want disk IO to become the limiting factor handlers = 1catalina.my.custom.AsyncFileHandler, Asynchronous file handlers must be able to Limit log queue in size Fall back to sync logging or Throw away overflow log records to avoid out of memory error Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 16

Apache Tomcat in Production Tuning Tomcat connectors server.xml <Connector> To properly tune one must Understand the TCP protocol Understand how the CPU works Understand load balancers and their algorithms Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 17

TCP Layer 4 in the OSI stack Session based TCP stack implementation keeps state Flow control Delivery guarantee Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 18

TCP: Session based Setup and break down handshakes Client response time Handshakes add to HTTP transaction time HTTP keep alive improves client response time HTTP keep alive takes up server resources Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 19

TCP: Stateful protocol Each connection represented by source address source port destination address destination port This is all the information a layer 4 load balancer has for load balancing Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 20

TCP: Flow control Prevents buffer overflow and lost data Server must adjust write speed to client s ability to read Servlet specification is blocking IO Utilize a thread for the entire HTTP transaction For static content, Tomcat offers SEND_FILE with APR and NIO connectors Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 21

TCP: No Keep-Alive User Agent Server TCP Setup (syn) TCP Setup (syn/ack) TCP Setup (ack) single HTTP transaction HTTP request HTTP response TCP Close (fin) TCP Close (fin,ack) TCP Close(ack) servlet thread in use Close can be done in different ways Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 22

TCP: Keep-Alive User Agent Server TCP Setup (syn) TCP Setup (syn/ack) TCP Setup (ack) multiple HTTP transactions HTTP request HTTP response servlet thread in use TCP Abort(ack) TCP Abort (rst) Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 23

TCP: Summary How does TCP affect our system? Traffic patterns High concurrency/short requests Low concurrency/long requests Static content Dynamic content Combination Variations It s these patterns that decide how to tune our system Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 24

HTTP Layer 7 in the OSI stack Stateless protocol Not tied to TCP Can be leveraged by load balancers Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 25

HTTPS HTTP over SSL Expensive handshake Keep alive makes a big difference Encryption hides HTTP from routing devices For any appliances, such as LB, this means Fallback to layer 4 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 26

Load Balancing: TCP/HTTP TCP Based on destination address/port Connection centric 1:1 Can lead to uneven loads HTTP Based on HTTP headers Can reuse server connections Can drain sessions Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 27

Load Balancing: Algorithms Load balancing Connection limits Reusing connections Traffic shaping Load balancing algorithm drive Tomcat configuration choices Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 28

Apache Tomcat: HTTP/S Our tuning options Threads Keep alive requests TCP Backlog (acceptcount) connectiontimeout Different connectors BIO Blocking Java connector, default APR Uses native C code for IO NIO Non blocking Java connectors Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 29

Apache Tomcat: HTTP/S Disclaimer Tuning options are meant for working and high performing applications Options will not fix bad application behavior If application is not tuned Effects of tuning will not be visible Situation can worsen Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 30

Which connector? Use BIO if: Stability is the highest priority APR and NIO are more recent Most content is dynamic Keep alive is not a determining factor protocol= org.apache.coyote.http11.http11protocol Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 31

Which connector? Use APR if: SSL is terminated at Tomcat Platforms are Linux or Windows Keep alive is important Lots of static content Using Comet feature protocol= org.apache.coyote.http11.http11aprprotocol Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 32

Which connector? Use NIO if: Compiling APR is not an option SSL is terminated at Tomcat Keep alive is important Lots of static content Using Comet features protocol= org.apache.coyote.http11.http11nioprotocol Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 33

Which connector? If uncertain: Use BIO connector Most mature code, both in Tomcat and JVM Will not break down Auto tune feature to disable keep alive When hitting 75% if maxthreads in connection count protocol= org.apache.coyote.http11.http11protocol protocol= HTTP/1.1 <!--same as above--> Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 34

Which connector? What about AJP?: We don t recommend it Doesn t perform better than HTTP You lose a lot of troubleshooting and configuration abilities using it protocol= AJP/1.3 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 35

Tuning threads maxthreads Typical range 200-800 Maximum nr of concurrent requests For BIO, max nr of open/active connections Good starting value 400 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 36

Tuning threads maxthreads= 400 Decrease if you see heavy CPU usage Application might be CPU bound instead of IO bound Find out what is causing CPU usage Increase if you don t see much CPU usage Applications could be synchronized -> no gain Take into account other resources, such as database connections Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 37

Tuning keep alive maxkeepaliverequests Typical values 1, 100-200 Represents the number of requests Tomcat will handle on a TCP connection Set to 1 disables keep alive connectiontimeout/keepalivetimeout controls the timeout in between requests Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 38

Tuning keep alive maxkeepaliverequests Set to 1 if Very high concurrency Not using SSL in Tomcat Using layer 4 load balancer Using BIO connector Set to >1 if Using SSL or low concurrency Layer 7 load balancer with advanced features Using APR or NIO connector BIO connector automatically disables keep alive for high connection counts Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 39

Tuning TCP backlog acceptcount Typical ranges 50-300 Represents nr of additional connections the OS should accept on your behalf Useful when Tomcat can t accept connections fast enough Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 40

Tuning TCP backlog acceptcount= 100 Increase if Very high concurrency (nr of connections) Connections getting rejected during peak traffic Keep alive should be off Decrease if Keep alive is on Connections getting accepted but never serviced Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 41

Tuning timeouts connectiontimeout Values from 2000-60000 Represents the SO_TIMEOUT value Essentially, max time between TCP packets during a blocking read or write Critical to a stable system Also used for keep alive timeout Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 42

Tuning timeouts connectiontimeout= 3000 Increase if Working with slow clients (dial up) Using a layer 7 load balancer with connection limit/pool and keep alive on Decrease if Need faster timeouts Default value of 20,000 (20secs) is too high for a web server Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 43

Content Delivery Dynamic content No caching done Tomcat has to deliver it blocking mode Worker thread is not released until all content has been delivered Changing connector wont change behavior Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 44

Content Delivery Static content Size based cache, default 10mb BIO - Tomcat has to deliver it blocking mode NIO/APR Tomcat can use SEND_FILE Release worker thread, deliver the content using a background thread when the client is ready to receive Increases concurrency Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 45

Content Delivery Configured in <Context> element 40MB cache (default 10MB) cache revalidation every 60 seconds (default 5 seconds) caching enabled (default true) <Context cachemaxsize= 40960 cachettl= 60000 cachingallowed= true > </Context> Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 46

JVM Tuning Key parameters for JVM tuning Memory Garbage collection They are not independent Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 47

JVM Tuning: The ideal Short lived objects never reach the Old Generation Short lived objects cleaned up by short minor garbage collections Long lived objects promoted to Old Generation Long lived objects cleaned up by (rare) full garbage collection Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 48

JVM Tuning: Memory -Xms/-Xmx Used to define size of Java heap Aim to set as low as possible Setting too high can cause wasted memory and long GC cycles -XX:NewSize/-XX:NewRatio Set to 25-33% of total Java heap Setting too high or too low leads to inefficient GC Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 49

JVM Tuning: GC GC pauses the application Regardless of GC algorithm Pause can range from milliseconds to seconds The pause will impact your response time How much does this matter? Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 50

JVM Tuning: GC -XX:MaxGCPauseMillis Set GC pause time goal More frequent GC Shorter pauses Goal is for major collections -XX:MaxGCMinorPauseMillis Applies to young generation Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 51

JVM Tuning: Try it out GC Settings JDK 1.5 and 1.6 -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode -XX:+CMSIncrementalPacing -XX:CMSIncrementalDutyCycleMin=0 -XX:CMSIncrementalDutyCycle=10 -XX:+UseParNewGC -XX:+CMSPermGenSweepingEnabled -XX:MaxGCPauseMillis=250 -XX:MaxGCMinorPauseMillis=100 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 52

JVM Tuning Much bigger topic Watch for future webinar Same tuning rules apply Doesn t compensate for bad, slow or poorly written applications Sun JDK options http://blogs.sun.com/watt/resource/jvm-options-list.html Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 53

SpringSource Products and Services SpringSource Support SpringSource ERS Commercial distribution of Apache Tomcat, HTTPd SpringSource Application Platform SpringSource Enterprise SpringSource dm Server Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 54

Apache Tomcat Support Enterprise level commercial support Guaranteed SLA s Guaranteed bug fixes Security notifications and patches Consulting Troubleshooting Training Security, performance and best practices reviews Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 55

Enterprise Support Options Severity Response Workaround Permanent Correction Platinum Plan Times: 24 x 7 x 365 Method: phone or web Level 1 1 Hour 72 Hours Next Release Level 2 4 Hours 5 Business Days Next Release Level 3 1 Business Day Next Release Next Release Gold Plan Times: 6AM 6PM local time, weekdays, excluding national holidays Method: phone or web Severity Response Workaround Permanent Correction Level 1 4 Hours 72 Hours Next Release Level 2 1 Business Day 5 Business Days Next Release Level 3 2 Business Days Next Release Next Release Silver Plan Times: 6AM 6PM local time, weekdays, excluding national holidays Method: web Severity Response Workaround Permanent Correction Level 1 1 Business Day None Next Release Level 2 2 Business Days None Next Release Level 3 4 Business Days None Next Release Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 56

SpringOne Americas 2008 Americas 2008 Dec 1-4, 2008 Hollywood, FL World s Biggest Conference on Spring & Tomcat Keynotes by Rod Johnson, Adrian Colyer Over 70 sessions in 5 technical tracks Technical Sessions, Case Studies, Best Practices Extensive sessions on production configuration of Tomcat in large scale enterprise systems Register now for special discounts www.springone.com Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 57

Thank You for Attending Find out more at: http://tomcat.apache.org SpringSource Enterprise support: http://springsource.com/support insidesales@springsource.com +1 800-444-1935 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 58

Questions? Filip Hanik filip.hanik@springsource.com Mark Thomas mark.thomas@springsource.com http://springsource.com Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 59