530 likes | 682 Views
Content Delivery - in a DevOps World. Leif Hedstrom. Chief Architect, Cisco Cloud Services. July 8, 2012. One of the drivers to Open S ource Traffic Server Committer for Apache Traffic Server VP of Apache Traffic Server PMC ASF member Chief Architect, Cisco Cloud Services
E N D
Content Delivery- in a DevOps World Leif Hedstrom Chief Architect, Cisco Cloud Services July 8, 2012
One of the drivers to Open Source Traffic Server Committer for Apache Traffic Server VP of Apache Traffic Server PMC ASF member Chief Architect, Cisco Cloud Services zwoop@apache.org lhedstro@cisco.com @zwoop +zwoop Who am I?
It’s a disaster! http://www.flickr.com/photos/historyinanhour/4775644390/
Still a disaster, oh the humanity! http://www.flickr.com/photos/historyinanhour/4775644390/
In the mean time … http://people.apache.org/~weijin/weijin.jpg
Small fix, big results index 30ed932..b74defa 100644 --- a/iocore/net/UnixNetVConnection.cc +++ b/iocore/net/UnixNetVConnection.cc @@ -574,6 +574,9 @@ UnixNetVConnection::do_io_close(intalerrno /* = -1 */ ) write.vio.nbytes = 0; write.vio.op = VIO::NONE; + EThread *t = this_ethread(); + boolclose_inline = !recursion && nh->mutex->thread_holding == t; + INK_WRITE_MEMORY_BARRIER; if (alerrno && alerrno != -1) this->lerrno = alerrno; @@ -582,11 +585,8 @@ UnixNetVConnection::do_io_close(intalerrno /* = -1 */ ) else closed = -1; - if (!recursion) { - EThread *t = this_ethread(); - if (nh->mutex->thread_holding == t) - close_UnixNetVConnection(this, t); - } + if (close_inline) + close_UnixNetVConnection(this, t); }
I’m happy! http://www.flickr.com/photos/mhedstrom/6763754839/
So what is DevOps? • To me, it’s a collaborative, community driven way of developing software, services and IT solutions. • Tear down the borders (and rifts!) between Development and Operations. • Thrives on healthy Open Source communities.
Handling thousands of concurrent users Extensible (e.g. plugins, or scripts) Correctness HTTP/1.1 Keep-Alive Chunking etc. … and don’t forget features
When all you have is a hammer … http://www.flickr.com/photos/aai/6936657289/
Enemies of all content delivery Server latency 3-Way handshake Congestion control DNS lookups (Page flow)
Enemies of all content delivery Server latency 3-Way handshake Congestion control DNS lookups (Page flow)
Enemies of all content delivery Server latency 3-Way handshake Congestion control DNS lookups (Page flow)
Enemies of all content delivery Server latency 3-Way handshake Congestion control DNS lookups (Page flow)
http://news.example.com/ http://finance.example.com/ http://groups.example.com/
http://news.example.com/ http://finance.example.com/ http://groups.example.com/ vs http://www.example.com/news http://www.example.com/finance http://www.example.com/groups
gzip matters http://www.flickr.com/photos/marcovdz/4520986339/
A primary tool to fight 3-way handshake latency Helps against congestion control too But not always… Slow starts begins again after some idle time Keep-alive
IW = min (4*SMSS, max (2*SMSS, 4380 bytes)) (RFC2581) Typically, 2-4 packets Old Congestion Window Size Algorithm:
10 New Linux Initial Congestion Window Size Algorithm:
SPDY • Addresses many of the problems related to latency • Not a standard (yet) • SSL requirements, and other quirks, can be a hurdle
Data copies Context Switches Memory allocation Lock contention Four Horseman of Bad Performance