Skip to content

Instantly share code, notes, and snippets.

View FooBarWidget's full-sized avatar

Hongli Lai FooBarWidget

View GitHub Profile
$ pappardelle set-slaves --config config.yml --count 1
This is the plan:
1. Destroy slave instance #3 (on server 192.1868.0.3)
Continue with this plan? [Y/n]
Cluster setup finished. Your cluster looks like this:
Master instance #1: 192.168.0.1 port 7001
Slave instance #2 : 192.168.0.2 port 7002
Slave instance #3 : 192.168.0.3 port 7003
$ pappardelle create-cluster
Please choose an infrastructure provider:
(*) Amazon Web Services
( ) Digital Ocean
( ) ...etc...
How many slaves do you want?
Input: 2
This is the plan:
[ pid=10882, timestamp=1418892845 ] Process aborted! signo=SIGSEGV(11), reason=SEGV_MAPERR, si_addr=0x10, randomSeed=1418892817
[ pid=10882 ] Crash log dumped to /var/tmp/passenger-crash-log.1418892845
[ 2014-12-18 09:54:05.1460 10882/0x109996000 agents/HelperAgent/RequestHandler/ForwardResponse.cpp:180 ]: [Client 2.2] Processing 448 bytes of application data: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
[ pid=10882 ] Date, uname and ulimits:
Thu Dec 18 09:54:05 CET 2014
Darwin 13.4.0 Darwin Kernel Version 13.4.0: Sun Aug 17 19:50:11 PDT 2014; root:xnu-2422.115.4~1/RELEASE_X86_64 x86_64 i386
core file size
[ pid=44400, timestamp=1418693005 ] Process aborted! signo=SIGSEGV(11), reason=SEGV_MAPERR, si_addr=0x10, randomSeed=1418692975
[ pid=44400 ] Crash log dumped to /var/tmp/passenger-crash-log.1418693005
[ pid=44400 ] Date, uname and ulimits:
Mon Dec 15 20:23:25 EST 2014
Darwin 14.0.0 Darwin Kernel Version 14.0.0: Fri Sep 19 00:26:44 PDT 2014; root:xnu-2782.1.97~2/RELEASE_X86_64 x86_64 i386
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
file size (blocks, -f) unlimited
max locked memory (kbytes, -l) unlimited
max memory size (kbytes, -m) unlimited
[ pid=43502, timestamp=1418692235 ] Process aborted! signo=SIGSEGV(11), reason=SEGV_MAPERR, si_addr=0x10, randomSeed=1418692167
[ pid=43502 ] Crash log dumped to /var/tmp/passenger-crash-log.1418692235
[ pid=43502 ] Date, uname and ulimits:
Mon Dec 15 20:10:35 EST 2014
Darwin 14.0.0 Darwin Kernel Version 14.0.0: Fri Sep 19 00:26:44 PDT 2014; root:xnu-2782.1.97~2/RELEASE_X86_64 x86_64 i386
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
file size (blocks, -f) unlimited
max locked memory (kbytes, -l) unlimited
max memory size (kbytes, -m) unlimited
# Start EventMachine on each Passenger process
PhusionPassenger.on_event(:starting_worker_process) do |forked|
Thread.new do
Thread.current.abort_on_exception = true
EM::run
end
end
@FooBarWidget
FooBarWidget / keybase.md
Created November 7, 2014 20:47
keybase.md

Keybase proof

I hereby claim:

  • I am FooBarWidget on github.
  • I am foobarwidget (https://keybase.io/foobarwidget) on keybase.
  • I have a public key whose fingerprint is 218A 7255 83D0 2ECE F3A9 C2A7 CD70 085E 8C59 158F

To claim this, I am signing this object:

#include <curl/curl.h>
#include <stdio.h>
#include <string.h>
#include <string>
#ifndef CURLINFO_RESPONSE_CODE
#define CURLINFO_RESPONSE_CODE CURLINFO_HTTP_CODE
#endif
std::string responseData;

The point I was trying to make is that the differences look large because it's a hello world. I understand that you're benchmarking the overhead of the servers, but that doesn't mean anything until you compare the overhead to how much time the app itself needs.

The benefit of benchmarking the network is:

  1. The overhead of the benchmarking program itself is not affecting the results.
  2. It gives you a more realistic picture, because in production environments the network delays are significant. In fact, they should be so significant that the differences between the app servers should be greatly reduced.

Therefore, using Vagrant and VMs on the local machine will not work. You really have to benchmark over a network, using another computer. In my test I grabbed another laptop. You might want to spin up an EC2 instance.

A while ago we benchmarked Unicorn vs Passenger 4 over the network. The performance is almost identical: https://code.google.com/p/phusion-passenger/issues/detail?id=956#c4