Skip to content

Commit

Permalink
Added the results and configuration script
Browse files Browse the repository at this point in the history
  • Loading branch information
ericmoritz committed May 31, 2012
1 parent aa97366 commit 25f60a2
Show file tree
Hide file tree
Showing 4 changed files with 250 additions and 1 deletion.
15 changes: 15 additions & 0 deletions configure_ubuntu.sh
@@ -0,0 +1,15 @@
sudo apt-get install python-software-properties
sudo apt-add-repository ppa:chris-lea/node.js
sudo apt-get update
sudo apt-get install emacs python-dev python-setuptools build-essential erlang libevent-dev git
sudo easy_install ws4py gevent
sudo cp etc/sysctl.conf /etc/
sudo sysctl -p
mkdir src
cd src
curl http://nodejs.org/dist/v0.6.18/node-v0.6.18.tar.gz
cd node-v0.6.18
./configure && make && sudo make install
cd ..
npm install websockets

10 changes: 10 additions & 0 deletions etc/sysctl.conf
@@ -0,0 +1,10 @@
# General gigabit tuning:
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
net.ipv4.tcp_syncookies = 1
# this gives the kernel more memory for tcp
# which you need with many (100k+) open socket connections
net.ipv4.tcp_mem = 50576 64768 98152
net.core.netdev_max_backlog = 2500
224 changes: 224 additions & 0 deletions results.md
@@ -0,0 +1,224 @@
I started two m1.medium AWS instances. One one side I started one of the
servers and the other side I ran the following code:

wsdemo_stats:start_link("ec2-50-17-58-219.compute-1.amazonaws.com",
8000, 10000),
spawn(fun() -> timer:sleep(5 * 60 * 1000),
error_logger:info_msg("Result: ~p~n",
[wsdemo_stats:stats()]) end).

After 5 minutes of running, the following stats are outputed.

## stat definitions

### connection_time

Elapsed time in microseconds between the opening of the client TCP socket
is opened and the handshake is finished.

### latency

Elapsed time in microseconds for a message send from the client to echo
back to the client by the serve.

### connections

Number of connections

### disconnections

Number of server disconnects

### messages

Total number of messages received by the clients

### ticks

Number of ticks received by the clients. ticks are sent every second per
connection.

## crashes

Number of crashed clients

## wsdemo.erl

Result: [{connection_time,
[{min,1509},
{max,27677940},
{arithmetic_mean,3687536.9134241245},
{geometric_mean,235730.97870297634},
{harmonic_mean,13262.630789054754},
{median,371297},
{variance,38761208260496.52},
{standard_deviation,6225850.003051513},
{skewness,2.0761222266293933},
{kurtosis,3.6181694800355704},
{percentile,
[{75,4079936},{95,18575148},{99,26217543},{999,27491497}]},
{histogram,
[{2201509,642},
{5001509,159},
{7001509,48},
{9001509,29},
{11001509,17},
{13001509,19},
{16001509,40},
{18001509,18},
{20001509,17},
{22001509,4},
{24001509,10},
{26001509,14},
{29001509,11},
{31001509,0}]}]},
{latency,
[{min,396},
{max,2809740},
{arithmetic_mean,683493.5301556421},
{geometric_mean,77449.85569490225},
{harmonic_mean,4680.871643237114},
{median,220661},
{variance,682805426909.6475},
{standard_deviation,826320.4141915214},
{skewness,0.8942087916023738},
{kurtosis,-0.5703740560613628},
{percentile,
[{75,1359082},{95,2393150},{99,2618056},{999,2764555}]},
{histogram,
[{290396,535},
{600396,67},
{900396,65},
{1200396,74},
{1500396,66},
{1800396,62},
{2100396,77},
{2300396,24},
{2600396,46},
{2900396,12},
{3200396,0}]}]},
{connections,10000},
{disconnections,0},
{messages,928795},
{ticks,918795},
{crashes,0}]

## wsdemo.js

Result: [{connection_time,
[{min,1602},
{max,7344983},
{arithmetic_mean,918440.3210116732},
{geometric_mean,123712.10408908203},
{harmonic_mean,11043.19798735485},
{median,225955},
{variance,1801351944117.3472},
{standard_deviation,1342144.5317540683},
{skewness,1.75368668051449},
{kurtosis,2.76568006209472},
{percentile,
[{75,1370933},{95,3794557},{99,5351069},{999,7262180}]},
{histogram,
[{501602,611},
{1001602,114},
{1401602,49},
{1901602,55},
{2401602,30},
{2801602,38},
{4001602,91},
{5001602,22},
{6001602,11},
{7001602,4},
{8001602,3}]}]},
{latency,
[{min,527},
{max,116187692},
{arithmetic_mean,46139930.151750974},
{geometric_mean,21311125.511323277},
{harmonic_mean,96601.45452787343},
{median,42303452},
{variance,1244711499402870.3},
{standard_deviation,35280469.09272707},
{skewness,0.2877854387607965},
{kurtosis,-1.1896246923042872},
{percentile,
[{75,74572187},
{95,106390955},
{99,112828780},
{999,115476601}]},
{histogram,
[{13000527,272},
{25000527,92},
{40000527,132},
{50000527,83},
{70000527,146},
{80000527,85},
{90000527,63},
{100000527,61},
{120000527,94},
{130000527,0}]}]},
{connections,5035},
{disconnections,0},
{messages,1162270},
{ticks,429049},
{crashes,0}]

## wsdemo.py

Result: [{connection_time,
[{min,1625},
{max,8949829},
{arithmetic_mean,1955258.1605058366},
{geometric_mean,198086.59606449556},
{harmonic_mean,11496.576074940796},
{median,447483},
{variance,5702507225222.317},
{standard_deviation,2387992.300076011},
{skewness,0.8949096532774136},
{kurtosis,-0.5539879497701503},
{percentile,
[{75,3776923},{95,6681685},{99,7749191},{999,8853781}]},
{histogram,
[{901625,562},
{1701625,41},
{2501625,53},
{4001625,131},
{5001625,73},
{6001625,90},
{7001625,43},
{8001625,29},
{9001625,6},
{10001625,0}]}]},
{latency,
[{min,1074},
{max,153197060},
{arithmetic_mean,55918287.59143969},
{geometric_mean,23474733.739317104},
{harmonic_mean,231085.73125452633},
{median,48342671},
{variance,2122481285136451.8},
{standard_deviation,46070394.88800212},
{skewness,0.39782490291508016},
{kurtosis,-1.1613402018348096},
{percentile,
[{75,96350013},
{95,135040839},
{99,149188847},
{999,153072918}]},
{histogram,
[{16001074,304},
{40001074,161},
{50001074,61},
{70001074,113},
{80001074,53},
{100001074,106},
{120001074,111},
{130001074,42},
{150001074,70},
{160001074,7},
{180001074,0}]}]},
{connections,5459},
{disconnections,0},
{messages,857810},
{ticks,238121},
{crashes,0}]
2 changes: 1 addition & 1 deletion src/wsdemo_client.erl
Expand Up @@ -57,7 +57,7 @@ ws_info(Client, {timeout, _Ref, send_ping}, State) ->
Data = <<"ping:", TS/binary>>,
websocket_client:write_sync(Client, {binary,Data}),
% queue up the next send_ping message
erlang:start_timer(0, self(), send_ping),
erlang:start_timer(1000, self(), send_ping),
State.

ws_onclose(Client, State) ->
Expand Down

0 comments on commit 25f60a2

Please sign in to comment.