Oscon 2010 - ATS

Post on 08-May-2015

3.048 views 1 download

description

Apache Traffic Server presentation at Oscon 2010.

Transcript of Oscon 2010 - ATS

Driving Apache Traffic Server

Leif HedstromEngineer, Yahoo Inc.

leif@ogre.comzwoop@apache.org

@zwoop

http://www.flickr.com/photos/zackbrescia/3292033740/

History and introduction to intermediaries

Configuration

Use cases

Origins of the software

Forward Proxy

Reverse Proxy

Intercepting Proxy

Plenty of FOSS Proxy Servers

Choosing an intermediary

SMP Scalability and performance

Traffic Server threads model

Traffic Server performance350,000 requests / sec in production CDN

- 30 Gbps / second (95-percentile)Many more request handled for HTML105,000 requests / sec with small content

out of cache, for a single (lab) box3.6Gbps out of a single box, with larger

content (4x GigE NIC bonded)

(all numbers from Y! CDN and lab testing).

HTTP/1.1 Features

ATS HAproxy nginx Squid Varnish mod_proxy

Worker Threads Y N N N Y Y

Multi-Process N Y Y N Y Y

Event-driven Y Y Y Y N N?

Plugin APIs Y N Y part Y Y

Forward Proxy Y N N Y N Y

Reverse Proxy Y Y Y Y Y Y

Transp. Proxy Y Y N Y N N

Load Balancer part Y Y Y Y Y

Cache Y N Y Y Y Y

ESI soon N N Y Y N

ICP Y N N Y N N

Keep-Alive Y N Y Y Y Y

SSL Y N Y Y N Y

Pipeline Y N Y Y N Y

Ease of use, extensible

http://www.flickr.com/photos/stuartpilbrow/3345896050/

Traffic Server making Ops easyTraffic Server will restart automatically if it

crashes

Traffic Server will kill itself if it isn’t responding

Traffic Server can reload most configurations without server restarts

Adding plugins is a matter of dropping in the shared object, and restarting

Stats and configurations are accessible via command line utilities

Configurations

Critical in records.configCONFIG proxy.config.exec_thread.autoconfig INT 1

CONFIG proxy.config.exec_thread.autoconfig.scale FLOAT 2.0

CONFIG proxy.config.exec_thread.limit INT 2

CONFIG proxy.config.http.server_port INT 8080

CONFIG proxy.config.http.cache.http INT 1

CONFIG proxy.config.cache.ram_cache.size INT 512M

CONFIG proxy.config.reverse_proxy.enabled INT 1

CONFIG proxy.config.url_remap.remap_required INT 1

CONFIG proxy.config.url_remap.pristine_host_hdr INT 0

CONFIG proxy.config.ssl.enabled INT 0

CONFIG proxy.config.ssl.server.cert.filename STRING server.pem

CONFIG proxy.config.url_remap.remap_required INT 1

CONFIG proxy.config.url_remap.remap_required INT 0

QUICK DEMO

Use Case: Content Delivery Network

CDN on the Edge

Traffic Server CDN configuration

CONFIG proxy.config.http.server_port INT 80CONFIG proxy.config.cache.ram_cache.size INT 4096MCONFIG proxy.config.url_remap.remap_required INT 1

map http://cdn.example.com/js http://js.example.comreverse_map http://js.example.com http://cdn.example.com/js

map http://cdn.example.com/css http://css.example.comreverse_map http://css.example.com http://cdn.exampe.com/css

map http://cdn.example.com/img http://img.example.comreverse_map http://img.example.com http://cdn.example.com/img

/dev/sd2

Common enemies of performance

TCP 3-way Handshake

Congestion avoidance

Use case: TCP Connection Management

ATS Connection mgmt configuration

CONFIG proxy.config.http.server_port INT 80CONFIG proxy.config.cache.ram_cache.size INT 0CONFIG proxy.config.url_remap.remap_required INT 1

CONFIG proxy.config.http.send_http11_requests INT 1CONFIG proxy.config.http.share_server_sessions INT 1CONFIG proxy.config.http.server_max_connections INT 2000

CONFIG proxy.config.http.keep_alive_no_activity_timeout_out INT 60CONFIG proxy.config.http.transaction_no_activity_timeout_out INT 60

map http://www.example.com/ http://real-www.example.com

Executive Summary Understand your requirements

Evaluate available solutions

Building a CDN is easy

Apache Traffic Server is

- Fast and SMP scalable

- Battle hardened

- HTTP/1.1 compliant

- Easy to configure and manage

- Actively developed

- Free as in beer! (Now lets go have some)

trafficserver.apache.org

The concurrency problem

Solution 1: Multithreading

Problems with multi-threading

Solution 2: Event Processing

Problems with event processors