Driving Apache Traffic Server

Document Sample
Driving Apache Traffic Server Powered By Docstoc
					Driving Apache Traffic
Leif Hedstrom
Engineer, Yahoo Inc.


History and introduction to


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 performance
 350,000 requests / sec in production CDN
  - 30 Gbps / second (95-percentile)
 Many more request handled for HTML
 105,000 requests / sec with small content
  out of cache, for a single (lab) box
 3.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
      Traffic Server making Ops easy
 Traffic Server will restart automatically if it
 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
plugin.config    ip_allow.config
records.config   storage.config
partition.config logs_xml.config
hosting.config   parent.config
cache.config     remap.config
update.config    icp.config
records.config   storage.config

                Critical in records.config
CONFIG 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
Use Case: Content Delivery Network
CDN on the Edge
 Traffic Server CDN configuration
CONFIG proxy.config.http.server_port INT 80
CONFIG proxy.config.cache.ram_cache.size INT 4096M
CONFIG proxy.config.url_remap.remap_required INT 1

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

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

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

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 80
CONFIG proxy.config.cache.ram_cache.size INT 0
CONFIG proxy.config.url_remap.remap_required INT 1

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

CONFIG proxy.config.http.keep_alive_no_activity_timeout_out INT 60
CONFIG 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
  - HTTP/1.1 compliant
  - Battle hardened
  - Easy to configure and manage
  - Actively developed
  - Free as in beer
The concurrency problem
Solution 1: Multithreading
Problems with multi-threading
Solution 2: Event Processing
Problems with event processors

Shared By: