phusion (an introduction)
TRANSCRIPT
![Page 1: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/1.jpg)
![Page 2: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/2.jpg)
![Page 3: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/3.jpg)
Phusian
![Page 4: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/4.jpg)
Phusian?!
![Page 5: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/5.jpg)
Phusian
![Page 6: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/6.jpg)
Phusian
![Page 7: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/7.jpg)
Phusiona
![Page 8: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/8.jpg)
An introduction to painless deployment
![Page 9: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/9.jpg)
Motivation
![Page 10: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/10.jpg)
A Rails philosophy:convention over
configuration
![Page 11: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/11.jpg)
Convention over configuration for
deployment?
![Page 12: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/12.jpg)
Good opportunity for our first product!
![Page 13: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/13.jpg)
Our version of“Hello World” as an
IT company.
![Page 14: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/14.jpg)
Phusion PassengerAct 1
“Short intro”
![Page 15: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/15.jpg)
![Page 16: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/16.jpg)
Suitable for exotic setups as well
![Page 17: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/17.jpg)
Initial responses
![Page 18: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/18.jpg)
Lots of attention!
![Page 19: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/19.jpg)
Pleasantly surprised!
![Page 20: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/20.jpg)
Impressed!
![Page 21: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/21.jpg)
Ugh, FUD
![Page 22: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/22.jpg)
Acceptance of Rails
![Page 23: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/23.jpg)
“Rails is less used than PHP”, how come?
![Page 24: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/24.jpg)
“PHP gets the job done,so why learn Rails?”
![Page 25: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/25.jpg)
Cause the right tool for the job you must use!
![Page 26: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/26.jpg)
“Everybody knows PHP”
![Page 27: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/27.jpg)
No scarcity of PHP devs
![Page 28: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/28.jpg)
Rails devs on the other hand?
![Page 29: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/29.jpg)
Rails marketshare needs devs to grow,
![Page 30: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/30.jpg)
while other devs reluctant to do Rails
![Page 31: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/31.jpg)
Economic deadlock!
![Page 32: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/32.jpg)
Most hosts don’t support Rails
![Page 33: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/33.jpg)
this could lead to“PHP rocks, Rails
sucks”
![Page 34: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/34.jpg)
Why should I care?
![Page 35: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/35.jpg)
You’re part of the market as well!
![Page 36: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/36.jpg)
Phusion Passenger saves the day?
![Page 37: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/37.jpg)
Well, let’s see...
![Page 38: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/38.jpg)
Most hosts use Apache
![Page 39: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/39.jpg)
Ease of use matters!
![Page 40: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/40.jpg)
Time == Money
![Page 41: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/41.jpg)
Robustness matters
![Page 42: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/42.jpg)
Stability matters
![Page 43: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/43.jpg)
Should perform well
![Page 44: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/44.jpg)
Everyone can help!
![Page 45: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/45.jpg)
Commercial support
![Page 46: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/46.jpg)
The big guys are excited!
![Page 47: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/47.jpg)
"Apple is excited about Phusion Passenger as a convenient way to deploy Ruby on Rails
applications, complementary to Mongrel and mod_proxy_balancer.
We look forward to working with Phusion to ensure great Mac OS X support going
forward."
Ernest N. Prabhakar, Ph.D.Open Source Product Manager
Apple, Inc.
![Page 48: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/48.jpg)
Phusion Passenger saves the day?
![Page 49: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/49.jpg)
Never gonna give up ;-)
![Page 50: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/50.jpg)
Phusion PassengerAct 2
“New Developments”
![Page 51: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/51.jpg)
Premature Optimization
![Page 52: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/52.jpg)
Premature Optimization
![Page 53: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/53.jpg)
Load balance improvements
![Page 54: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/54.jpg)
From Round-Robin to Fair
![Page 55: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/55.jpg)
Round-whah?
![Page 56: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/56.jpg)
Round-Robin load balancing
Rails Rails Rails
Web server / load balancer
1 ... N
![Page 57: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/57.jpg)
Round-Robin load balancingHTTP request
Rails Rails Rails
Web server / load balancer
1 ... N
![Page 58: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/58.jpg)
Round-Robin load balancingHTTP request
Rails Rails Rails
Web server / load balancer
1 ... N
![Page 59: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/59.jpg)
Round-Robin load balancingHTTP request
Rails Rails Rails
Web server / load balancer
1 ... N
![Page 60: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/60.jpg)
Round-Robin load balancingHTTP request
Rails Rails Rails
Web server / load balancer
1 ... N
![Page 61: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/61.jpg)
Round-Robin load balancingHTTP request
Rails Rails Rails
Web server / load balancer
1 ... N
![Page 62: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/62.jpg)
Round-Robin load balancingHTTP request
Rails Rails Rails
Web server / load balancer
1 ... N
![Page 63: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/63.jpg)
Round-Robin load balancingHTTP request
Rails Rails Rails
Web server / load balancer
1 ... N
![Page 64: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/64.jpg)
What if one request takes a lot of time?
![Page 65: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/65.jpg)
Queue could get congested!
![Page 66: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/66.jpg)
Round-Robin problemHTTP request
Rails Rails Rails
Web server / load balancer
![Page 67: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/67.jpg)
Round-Robin problemHTTP request
Rails Rails Rails
Web server / load balancer
Shouldn’t have had that
burrito!
![Page 68: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/68.jpg)
Round-Robin problemHTTP request
Rails Rails Rails
Web server / load balancer
Unfair! Boring!Shouldn’t have had that
burrito!
![Page 69: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/69.jpg)
In this case, every N request is unresponsive
![Page 70: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/70.jpg)
Solution?
![Page 71: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/71.jpg)
Forward request to Rails instance with least
requests in its queue
![Page 72: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/72.jpg)
Fair load balancing!
![Page 73: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/73.jpg)
Fair load balancingHTTP request
Rails Rails Rails
Web server / load balancer
1 ... N
![Page 74: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/74.jpg)
Fair load balancingHTTP request
Rails Rails Rails
Web server / load balancer
1 ... N
![Page 75: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/75.jpg)
Fair load balancingHTTP request
Rails Rails Rails
Web server / load balancer
1 ... N
![Page 76: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/76.jpg)
Fair load balancingHTTP request
Rails Rails Rails
Web server / load balancer
1 ... N
![Page 77: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/77.jpg)
Fair load balancingHTTP request
Rails Rails Rails
Web server / load balancer
1 ... N
![Page 78: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/78.jpg)
Upload acceleration
![Page 79: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/79.jpg)
File uploads in Phusion Passenger 1.0.x
Web server
Rails
![Page 80: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/80.jpg)
File uploads in Phusion Passenger 1.0.x
Large file upload
Web server
Rails
Large file
![Page 81: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/81.jpg)
Long file uploads block Rails processes...
![Page 82: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/82.jpg)
Solution?
![Page 83: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/83.jpg)
Upload buffering!
![Page 84: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/84.jpg)
File uploads in Phusion Passenger 2.0.x
Rails
Web server
![Page 85: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/85.jpg)
File uploads in Phusion Passenger 2.0.x
Large file upload
RailsLarge file
Web server
Concurrent HTTP request
![Page 86: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/86.jpg)
File uploads in Phusion Passenger 2.0.x
Large file upload
RailsLarge file When done
Web server
Concurrent HTTP request
![Page 87: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/87.jpg)
What about VM size?
![Page 88: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/88.jpg)
VM size comparison
0
500
1,000
1,500
2,000
MB (avg)
Phusion Passenger 1.0.5 Phusion Passenger 2.0
![Page 89: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/89.jpg)
Phusion PassengerAct 3
“Enterpriseyness”
![Page 90: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/90.jpg)
Get dramatic increase in performance and
efficiency
![Page 91: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/91.jpg)
Phusion Passenger+
Ruby Enterprise Edition
![Page 92: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/92.jpg)
Phusion Passenger+
Ruby Enterprise Edition
![Page 93: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/93.jpg)
Ruby Enterprise Edition
• Copy-on-write optimization to the garbage collector of MRI
• Transparent solution
• Ease of use
• A solution for today’s performance and memory use problems with Ruby
![Page 94: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/94.jpg)
A copy-on-whah?
![Page 95: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/95.jpg)
Example
String A = “foo”;String B = A;
![Page 96: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/96.jpg)
Example
String A = “foo”;String B = A;
A and B refer to the same memory
![Page 97: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/97.jpg)
Memory Management Heuristic
A
B
“foo”
Only useful if there are no side effects!
![Page 98: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/98.jpg)
Example
String A = “foo”;String B = A;
Let’s write to ‘A’
![Page 99: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/99.jpg)
Example
String A = “foo”;String B = A;A.append(“bar”);
![Page 100: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/100.jpg)
Apply Copy on Write
A
B
“foo”
![Page 101: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/101.jpg)
Copying on write
A
B
“foo”
“foo”
![Page 102: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/102.jpg)
Situation after Copy on Write has been applied
A
B
“foobar”
“foo”
![Page 103: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/103.jpg)
No redundancy in memory use!
![Page 104: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/104.jpg)
Copy on Write in practice
A
B
Framework
Framework
Private memory
Private memory
![Page 105: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/105.jpg)
Copy on Write in practice
A
B
Framework
Framework
Private memory
Private memory
These two are the same
![Page 106: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/106.jpg)
Copy on Write in practice
A
B
Framework
Framework
Private memory
Private memory
These two could be the same
![Page 107: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/107.jpg)
Copy on Write in practice
A
B
Framework Private memory
![Page 108: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/108.jpg)
Copy on Write in practice
A
B
Framework
Private memory
Private memory
![Page 109: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/109.jpg)
Alternative for threads!
![Page 110: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/110.jpg)
Great theory, got numbers?
![Page 111: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/111.jpg)
Benchmark equip.
Processor C2D 1.72GHz
RAM 2GB
OS Ubuntu 7.10 32 bit
![Page 112: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/112.jpg)
Benchmark env.
Rails version 2.0.2
Ruby version 1.8.6(Ubuntu default)
![Page 113: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/113.jpg)
Benchmark case
Subject Typo 5.0.3
Concurrent users 12
Requests 20,000
![Page 114: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/114.jpg)
Memory comparison
0
60
120
180
240
MB (avg)
Apache Worker + Phusion Passenger + Ruby Enterprise EditionApache Prefork + Phusion Passenger
![Page 115: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/115.jpg)
Memory comparison
0
60
120
180
240
MB (avg)
Apache Worker + Phusion Passenger + Ruby Enterprise EditionApache Worker + Phusion Passenger
![Page 116: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/116.jpg)
Memory comparison
0
57.5
115.0
172.5
230.0
MB (avg)
Apache Worker + Phusion Passenger + Ruby Enterprise EditionNginx + Mongrel cluster
![Page 117: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/117.jpg)
Memory comparison
0
57.5
115.0
172.5
230.0
MB (avg)
Apache Worker + Phusion Passenger + Ruby Enterprise EditionNginx + Thin (with Unix sockets)
![Page 118: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/118.jpg)
Memory comparison
0
100
200
300
400
MB (avg)
Apache Worker + Phusion Passenger + Ruby Enterprise EditionLitespeed
![Page 119: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/119.jpg)
0
100
200
300
400
MB (avg)
Memory comparison overview
Apache Prefork + PassengerApache Worker + PassengerNginx + MongrelNginx + ThinLitespeedApache Worker + Ruby Enterprise Edition + Passenger
![Page 120: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/120.jpg)
Efficient, even with Apache!
![Page 121: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/121.jpg)
What about speed?
![Page 122: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/122.jpg)
Speed comparison
![Page 123: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/123.jpg)
Speed comparison
0
150
300
450
600
Req / Sec
Apache Worker + Phusion Passenger + Ruby Enterprise EditionApache Prefork + Phusion Passenger
![Page 124: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/124.jpg)
Speed comparison
0
150
300
450
600
Req / Sec
Apache Worker + Phusion Passenger + Ruby Enterprise EditionApache Worker + Phusion Passenger
![Page 125: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/125.jpg)
Speed comparison
0
150
300
450
600
Req / Sec
Apache Worker + Phusion Passenger + Ruby Enterprise EditionNginx + Mongrel cluster
![Page 126: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/126.jpg)
Speed comparison
0
150
300
450
600
Req / Sec
Apache Worker + Phusion Passenger + Ruby Enterprise EditionNginx + Thin (with Unix sockets)
![Page 127: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/127.jpg)
Speed comparison
0
142.5
285.0
427.5
570.0
Req / Sec
Apache Worker + Phusion Passenger + Ruby Enterprise EditionLitespeed
![Page 128: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/128.jpg)
0
150
300
450
600
Req/sec
Speed comparison overview
Apache Prefork + PassengerApache Worker + PassengerNginx + MongrelNginx + ThinLitespeedApache Worker + Ruby Enterprise Edition + Passenger
![Page 129: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/129.jpg)
Fast, even with Apache!
![Page 130: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/130.jpg)
Great numbers, got case studies?
![Page 131: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/131.jpg)
![Page 132: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/132.jpg)
![Page 133: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/133.jpg)
At iLike we've been testing Passenger in production, and we're
very impressed. This has the potential to reduce our memory
requirements by 25 - 50%
Travis ColeiLike
![Page 134: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/134.jpg)
Try it out for yourselves!
![Page 135: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/135.jpg)
Quick recap
![Page 136: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/136.jpg)
Quick recap
• Phusion Passenger allows easy deployment
![Page 137: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/137.jpg)
Quick recap
• Phusion Passenger allows easy deployment
• Ruby Enterprise Edition allows for dramatic increase in performance and efficiency
![Page 138: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/138.jpg)
Quick recap
• Phusion Passenger allows easy deployment
• Ruby Enterprise Edition allows for dramatic increase in performance and efficiency
• Phusion Passenger + Ruby Enterprise Edition = FTW
![Page 139: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/139.jpg)
Questions & Answers
![Page 140: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/140.jpg)
Will Phusion Passenger support Rack?
Fabio Akita
![Page 141: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/141.jpg)
No, it WILL not...
![Page 142: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/142.jpg)
Because it ALREADY supports Rack!
![Page 143: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/143.jpg)
Screencast 2.0Return of the Ryan
![Page 144: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/144.jpg)
![Page 145: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/145.jpg)
mod_rails is dead
![Page 146: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/146.jpg)
So, mod_rack is it?
![Page 147: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/147.jpg)
NO!
![Page 148: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/148.jpg)
We want Leah Culver!
![Page 149: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/149.jpg)
She does Python...
![Page 150: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/150.jpg)
So Phusion Passenger also supports WSGI!
![Page 151: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/151.jpg)
What does this imply?
![Page 152: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/152.jpg)
It starts with a ‘d’ and ends with ‘ango’.
![Page 153: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/153.jpg)
No, not Dyango ;-)
![Page 154: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/154.jpg)
Say hello to my little friend!
![Page 155: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/155.jpg)
Why?!
![Page 156: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/156.jpg)
Because we can!
![Page 157: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/157.jpg)
Feel free to tinker with the code yourself! :-)
![Page 158: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/158.jpg)
Rest in peace mod_rails4/11/2008 - 6/1/2008
![Page 159: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/159.jpg)
Can I help?
![Page 160: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/160.jpg)
YES!
![Page 161: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/161.jpg)
Provide community support
![Page 162: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/162.jpg)
Contribute code
![Page 163: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/163.jpg)
Donate money?
![Page 164: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/164.jpg)
Nah!
![Page 165: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/165.jpg)
‘Purchase’ an enterprise license instead!
![Page 166: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/166.jpg)
Join ‘Hall of Fame’
![Page 167: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/167.jpg)
Eligable for t-shirt!
![Page 168: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/168.jpg)
Or, contract us!
![Page 169: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/169.jpg)
“When can I haz it?”
![Page 170: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/170.jpg)
Well...
![Page 171: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/171.jpg)
Are there any Enterprise Licensees
out here?
![Page 172: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/172.jpg)
13 hardcopies for you guys!
![Page 173: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/173.jpg)
Includes personal crash course after this talk!
![Page 174: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/174.jpg)
After crash course,
![Page 175: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/175.jpg)
public release!
![Page 176: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/176.jpg)
Odds & ends
![Page 177: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/177.jpg)
Thanks Ryan!
![Page 178: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/178.jpg)
Thanks Jim!
![Page 179: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/179.jpg)
Thanks Fabio!
![Page 180: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/180.jpg)
Thank you for your time!
(Sorry for the Rickroll)
![Page 181: Phusion (an introduction)](https://reader030.vdocuments.us/reader030/viewer/2022032421/55a83bf41a28abfa768b4888/html5/thumbnails/181.jpg)
Disclaimer
• Photo’s, logo’s and trademarks found in these slides are property of their respective owners
• Phusion is a trademark of Phusion v.o.f.(i.e. Hongli Lai and Ninh Bui)
• Phusion Passenger is a trademark of Phusion v.o.f.(i.e. Hongli Lai and Ninh Bui)