Switching to RVM+REE+NGINX+Passenger

We’re increasing the push toward the release, and I’m now spending precious time looking into the why our Rails Stack is leaking workers. My initial research suggested that these workers could be sent a SIGABRT to get them to throw a stacktrace and exit - this hasn’t worked however. I’ve been planning to change from the current stack UbuntuProvidedRuby1.8.7+Apache+Passenger to RVM+REE+NGINX+Passenger for a while. With the prerequisite testing done that our app works with the new stack. I’ve decided that rather than attack this problem head-on I’ll use this opportunity to switch and then tackle the problem again if it shows up.

Update: After changing the stack it appears to have stopped leaking workers - that’s a positive outcome to a problem I can’t afford the time to look into in more detail. Additionally the before and after performance tests are in:

Apache:

Server Software:        Apache/2.2.14
Server Port:            80

Document Path:          /
Document Length:        20266 bytes

Concurrency Level:      5
Time taken for tests:   344.008 seconds
Complete requests:      1000
Failed requests:        47
   (Connect: 0, Receive: 0, Length: 47, Exceptions: 0)
Write errors:           0
Total transferred:      20788903 bytes
HTML transferred:       20254908 bytes
Requests per second:    2.91 [#/sec] (mean)

Time per request:       1720.039 [ms] (mean)
Time per request:       344.008 [ms] (mean, across all concurrent requests)
Transfer rate:          59.02 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        4    6   2.5      5      37
Processing:   750 1714 267.2   1668    2922
Waiting:      732 1690 265.8   1645    2900
Total:        755 1720 267.3   1673    2927

Percentage of the requests served within a certain time (ms)
  50%   1673
  66%   1778
  75%   1876
  80%   1886
  90%   2071
  95%   2238
  98%   2389
  99%   2546
 100%   2927 (longest request)

NGINX:

Server Software:        nginx/0.7.67
Server Port:            80

Document Path:          /
Document Length:        20266 bytes

Concurrency Level:      5
Time taken for tests:   304.670 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Total transferred:      20798421 bytes
HTML transferred:       20276909 bytes
Requests per second:    3.28 [#/sec] (mean)

Time per request:       1523.352 [ms] (mean)
Time per request:       304.670 [ms] (mean, across all concurrent requests)
Transfer rate:          66.67 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        4    7   3.8      6      43
Processing:   866 1513 266.3   1460    3900
Waiting:      848 1490 264.3   1439    3869
Total:        871 1521 266.6   1468    3905

Percentage of the requests served within a certain time (ms)
  50%   1468
  66%   1562
  75%   1651
  80%   1672
  90%   1779
  95%   1901
  98%   2104
  99%   2373
 100%   3905 (longest request)