Out and About with Apache Traffic Server Leif Hedstrom November 2011.

Slides:



Advertisements
Similar presentations
Paging Andrew Whitaker CSE451.
Advertisements

Paging: Design Issues. Readings r Silbershatz et al: ,
1 Leif Hedstrom Chief Architect, Cisco Cloud Services July 8, 2012.
Caching and Virtual Memory. Main Points Cache concept – Hardware vs. software caches When caches work and when they don’t – Spatial/temporal locality.
IO-Lite: A Unified Buffering and Caching System By Pai, Druschel, and Zwaenepoel (1999) Presented by Justin Kliger for CS780: Advanced Techniques in Caching.
Study of Hurricane and Tornado Operating Systems By Shubhanan Bakre.
Flash: An efficient and portable Web server Authors: Vivek S. Pai, Peter Druschel, Willy Zwaenepoel Presented at the Usenix Technical Conference, June.
Dynamic Adaptive Streaming over HTTP2.0. What’s in store ▪ All about – MPEG DASH, pipelining, persistent connections and caching ▪ Google SPDY - Past,
Choosing A Proxy Server OSCON 2014 Bryan Call Yahoo.
 The IP address and port combination at which the NetScaler appliance receives client requests for the associated web application.  A public endpoint.
Deploying Apache Traffic Server
Chapter 4: Threads. Overview Multithreading Models Threading Issues Pthreads Windows XP Threads.
1 Design and Implementation of A Content-aware Switch using A Network Processor Li Zhao, Yan Luo, Laxmi Bhuyan University of California, Riverside Ravi.
7/9/2001 Edward Chow Content Switch 1 Clients Content Delivery Network (CDN) Host Server Mind Spring PSINet Sprint UUnet Huge Requests.
Accurate and Efficient Replaying of File System Traces Nikolai Joukov, TimothyWong, and Erez Zadok Stony Brook University (FAST 2005) USENIX Conference.
Capriccio: Scalable Threads for Internet Services Rob von Behren, Jeremy Condit, Feng Zhou, Geroge Necula and Eric Brewer University of California at Berkeley.
Threads 1 CS502 Spring 2006 Threads CS-502 Spring 2006.
Content Delivery Networks. History Early 1990s sees 100% growth in internet traffic per year 1994 o Netscape forms and releases their first browser.
World Wide Web Caching: Trends and Technology Greg Barish and Katia Obraczka USC Information Science Institute IEEE Communications Magazine, May 2000 Presented.
Xen and the Art of Virtualization. Introduction  Challenges to build virtual machines Performance isolation  Scheduling priority  Memory demand  Network.
Replay Debugging for Distributed Systems Dennis Geels, Gautam Altekar, Ion Stoica, Scott Shenker.
Windows Server 2008 Chapter 8 Last Update
Basics of Operating Systems March 4, 2001 Adapted from Operating Systems Lecture Notes, Copyright 1997 Martin C. Rinard.
Apache Architecture. How do we measure performance? Benchmarks –Requests per Second –Bandwidth –Latency –Concurrency (Scalability)
ATS SSL Updates ATS Summit Spring 2015 Susan Hinrichs.
 A JavaScript runtime environment running Google Chrome’s V8 engine ◦ a.k.a. a server-side solution for JS ◦ Compiles JS, making it really fast  Runs.
PHP on Windows Overview. AGENDA MS Support for PHP community WS08 +PHP FASTCGI Enhancing PHP with IIS Extending PHP with.NET.
1 CSE544 Database Architecture Tuesday, February 1 st, 2011 Slides courtesy of Magda Balazinska.
Caching and Virtual Memory. Main Points Cache concept – Hardware vs. software caches When caches work and when they don’t – Spatial/temporal locality.
Network Configuration Charles (Cal) Loomis & Mohammed Airaj LAL, Univ. Paris-Sud, CNRS/IN2P October 2013.
SEDA: An Architecture for Well-Conditioned, Scalable Internet Services
NECP: the Network Element Control Protocol IETF WREC Working Group November 11, 1999.
1 Chapter 6: Proxy Server in Internet and Intranet Designs Designs That Include Proxy Server Essential Proxy Server Design Concepts Data Protection in.
Physical Database Design & Performance. Optimizing for Query Performance For DBs with high retrieval traffic as compared to maintenance traffic, optimizing.
Uncovering the Multicore Processor Bottlenecks Server Design Summit Shay Gal-On Director of Technology, EEMBC.
The HDF Group Multi-threading in HDF5: Paths Forward Current implementation - Future directions May 30-31, 2012HDF5 Workshop at PSI 1.
CS533 - Concepts of Operating Systems Virtual Memory Primitives for User Programs Presentation by David Florey.
Hypertable Doug Judd Zvents, Inc.. hypertable.org Background.
NetCache Architecture and Deployment Peter Danzig Network Appliance, Santa Clara, CA 元智大學 系統實驗室 陳桂慧
Supporting Multi-Processors Bernard Wong February 17, 2003.
 Virtual machine systems: simulators for multiple copies of a machine on itself.  Virtual machine (VM): the simulated machine.  Virtual machine monitor.
CSC Multiprocessor Programming, Spring, 2012 Chapter 11 – Performance and Scalability Dr. Dale E. Parson, week 12.
DotSlash – or how to deal with 15 minutes of fame Weibin Zhao Henning Schulzrinne Columbia University CATT/WICAT Annual Research Review November 14, 2003.
6.894: Distributed Operating System Engineering Lecturers: Frans Kaashoek Robert Morris
CSC 360, Instructor: Kui Wu Thread & PThread. CSC 360, Instructor: Kui Wu Agenda 1.What is thread? 2.User vs kernel threads 3.Thread models 4.Thread issues.
Threads. Readings r Silberschatz et al : Chapter 4.
Performance Optimization in Apache 2.0 Development: How we made Apache faster, and what we learned from the experience O’Reilly Open.
John Rushford Apache Traffic Server Multi-Site Origin and Secondary Consistent Hash Feature John Rushford
Web Cache. What is Cache? Cache is the storing of data temporarily to improve performance. Cache exist in a variety of areas such as your CPU, Hard Disk.
Tuning Threaded Code with Intel® Parallel Amplifier.
Driving Apache Traffic Server Leif Hedstrom Engineer, Yahoo Inc. @zwoop.
Embedded Real-Time Systems
© 2014 MapR Technologies 1 Ted Dunning. © 2014 MapR Technologies 2 Me, Us Ted Dunning, MapR Chief Application Architect, Apache Member –Committer PMC.
Threads vs. Events SEDA – An Event Model 5204 – Operating Systems.
Multilevel Memories (Improving performance using alittle “cash”)
ECE/CS 552: Virtual Memory
Yahoo’s Adventure with ATS
Edge computing (1) Content Distribution Networks
DPDK Accelerated Load Balancer
CDA 5155 Caches.
CPU scheduling decisions may take place when a process:
Getting to the root of concurrent binary search tree performance
TSConfig & Lua Config Better together
Prof. Leonardo Mostarda University of Camerino
Speed is key My personal quest for a faster website
Support for Adaptivity in ARMCI Using Migratable Objects
Client/Server Computing and Web Technologies
Paging Andrew Whitaker CSE451.
Bryan Call ATS Spring Summit 2017
Presentation transcript:

Out and About with Apache Traffic Server Leif Hedstrom November 2011

Who am I? One of the drivers to open source Traffic Server (at Yahoo) Committer for Apache Traffic Server VP of Apache Traffic Server PMC ASF member Go Daddy’s Principal Architect for +zwoop

History of Traffic Server

Plenty of FOSS Proxy Servers

ATSHAproxyngin x SquidVarnishmod_proxy Worker Threads YNNNYY Multi-Process NYYNYY Event-driven YYYYsometimesY Plugin APIs YNYpartYY Forward Proxy YNNYNY Reverse Proxy YYYYYY Transp. Proxy YYNYNN Load Balancer weakYYYYY Persistent Cache YNYYsortaY ESI YNNYkindaN ICP YNNYNN Keep-Alive YNYYYY SSL YNYYNY Pipeline YNYYNY Features

Mandatory useless benchmark …

Less useless benchmark …

Intermediaries - Forward Proxy

Intermediaries - Reverse Proxy

Intermediaries - Intercepting Proxy

Common enemies of performance 3-Way handshake Congestion control DNS lookups

Common enemies of performance 3-Way handshake Congestion control DNS lookups

TCP 3-way Handshake

Common enemies of performance 3-Way handshake Congestion control DNS lookups

Congestion control

Common enemies of performance 3-Way handshake Congestion control DNS lookups

vs

The concurrency problem

Solution 1: Multithreading

Problems with multi-threading

Solution 2: Event Processing

Problems with event processors

Traffic Server threads model

plugin.config records.config partition.config hosting.config cache.config update.config ip_allow.config storage.config logs_xml.config parent.config remap.config icp.config

records.config for reverse proxy CONFIG proxy.config.http.server_port INT 80 CONFIG proxy.config.cache.ram_cache.size INT 1G CONFIG proxy.config.cache.ram_cache_cutoff INT 1M 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.http.negative_caching_enabled INT 1 CONFIG proxy.config.http.negative_caching_lifetime INT 120 CONFIG proxy.config.http.cache.ignore_client_cc_max_age INT 1 CONFIG proxy.config.http.normalize_ae_gzip INT 1

records.config for reverse proxy CONFIG proxy.config.http.server_port INT 80 CONFIG proxy.config.cache.ram_cache.size INT 1G CONFIG proxy.config.cache.ram_cache_cutoff INT 1M 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.http.negative_caching_enabled INT 1 CONFIG proxy.config.http.negative_caching_lifetime INT 120 CONFIG proxy.config.http.cache.ignore_client_cc_max_age INT 1 CONFIG proxy.config.http.normalize_ae_gzip INT 1

records.config for forward proxy CONFIG proxy.config.http.server_port INT 8080 CONFIG proxy.config.cache.ram_cache.size INT 1G CONFIG proxy.config.cache.ram_cache_cutoff INT 1M CONFIG proxy.config.reverse_proxy.enabled INT 0 CONFIG proxy.config.url_remap.remap_required INT 0 CONFIG proxy.config.url_remap.pristine_host_hdr INT 0 CONFIG proxy.config.http.negative_caching_enabled INT 1 CONFIG proxy.config.http.negative_caching_lifetime INT 120 CONFIG proxy.config.http.cache.ignore_client_cc_max_age INT 1 CONFIG proxy.config.http.normalize_ae_gzip INT 1

remap.config examples map map reverse_map redirect regex_map map /

remap.config examples map map reverse_map redirect regex_map map /

remap.config examples map map reverse_map redirect regex_map map /

remap.config examples map map reverse_map redirect regex_map map /

remap.config examples map map reverse_map redirect regex_map map /

Some interesting features  RAM: Optional compression – Various compression levels supported – Very fast (virtually no overhead using the faster algo)  RAM: Several cache eviction algorithms – CLFUS algorithm avoids the classic problem on an LRU during “scans” ▫ And it’s not encumbered by any patents  Disk: Supports various block sizes (SSD)  Disk: Can be tuned for various object sizes  Disk: No file system overhead (RAW disks)

Future directions  Release early, and often  Full IPv6 support  NPN, SNI and other SSL improvements  Improved memory management, support debug features in e.g. jemalloc and tcmalloc  Optimizations for SSD (“stacked” caches)  More focus on plugins, and plugin APIs – Hopefully a real load balancer plugin!

Was this a huge waste of time, or?

A versatile tool 39

Yes, it’s fast, ridiculously fast 40

A vibrant community! 41

“If you are not using SSDs, you are wasting your life” Artur Bergman 42

“If you are not using SSDs, you are wasting your life” Artur Bergman “If you are not using a caching proxy server, you are wasting your SSDs” me 43

44

Four Horseman of Bad Performance – Data copies – Context Switches – Memory allocation – Lock contention – Avoid these!

records.config for reverse proxy CONFIG proxy.config.http.server_port INT 80 CONFIG proxy.config.cache.ram_cache.size INT 1G CONFIG proxy.config.cache.ram_cache_cutoff INT 1M 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.http.negative_caching_enabled INT 1 CONFIG proxy.config.http.negative_caching_lifetime INT 120 CONFIG proxy.config.http.cache.ignore_client_cc_max_age INT 1 CONFIG proxy.config.http.normalize_ae_gzip INT 1

Disk cache: “Cyclone”