Browse Source

Add 'make bench' script

v0.7.4-release
Ryan Dahl 14 years ago
parent
commit
ff456b3886
  1. 1
      .gitignore
  2. 8
      Makefile
  3. 2
      benchmark/http_simple.js
  4. 77
      benchmark/http_simple_bench.sh

1
.gitignore

@ -14,3 +14,4 @@ tmp/
node node
node_g node_g
*.swp *.swp
.benchmark_reports

8
Makefile

@ -36,9 +36,6 @@ test-pummel: all
test-internet: all test-internet: all
python tools/test.py internet python tools/test.py internet
benchmark: all
build/default/node benchmark/run.js
# http://rtomayko.github.com/ronn # http://rtomayko.github.com/ronn
# gem install ronn # gem install ronn
doc: doc/node.1 doc/api.html doc/index.html doc/changelog.html doc: doc/node.1 doc/api.html doc/index.html doc/changelog.html
@ -85,4 +82,7 @@ dist: doc/node.1 doc/api.html
rm -rf $(TARNAME) rm -rf $(TARNAME)
gzip -f -9 $(TARNAME).tar gzip -f -9 $(TARNAME).tar
.PHONY: benchmark clean docclean dist distclean check uninstall install all test test-all website-upload bench:
benchmark/http_simple_bench.sh
.PHONY: bench clean docclean dist distclean check uninstall install all test test-all website-upload

2
benchmark/http_simple.js

@ -74,7 +74,7 @@ var server = http.createServer(function (req, res) {
body = fixed; body = fixed;
} else if (command == "info") { } else if (command == "info") {
body = 'rev: ' + rev + '\n' + 'uname: ' + uname + '\n'; body = 'rev=' + rev + '\nuname="' + uname + '"\n';
} else { } else {
status = 404; status = 404;

77
benchmark/http_simple_bench.sh

@ -0,0 +1,77 @@
#!/bin/sh
SERVER=127.0.0.1
PORT=8000
# You may want to configure your TCP settings to make many ports available
# to node and ab. On macintosh use:
# sudo sysctl -w net.inet.ip.portrange.first=32768
# sudo sysctl -w net.inet.tcp.msl=1000
if [ ! -d benchmark/ ]; then
echo "Run this script from the node root directory"
exit 1
fi
if [ $SERVER == "127.0.0.1" ]; then
./node benchmark/http_simple.js &
node_pid=$!
sleep 1
fi
info=`curl -s http://$SERVER:$PORT/info`
eval $info
date=`date "+%Y%m%d%H%M%S"`
ab_hello_world() {
local type="$1"
local ressize="$2"
if [ $type == "string" ]; then
local uri="bytes/$ressize"
else
local uri="buffer/$ressize"
fi
name="ab-hello-world-$type-$ressize"
dir=".benchmark_reports/$name/$rev/"
if [ ! -d $dir ]; then
mkdir -p $dir
fi
summary_fn="$dir/$date.summary"
data_fn="$dir/$date.data"
echo "Bench $name starts in 3 seconds..."
# let shit calm down
sleep 3
# hammer that as hard as it can for 10 seconds.
ab -g $data_fn -c 100 -t 10 http://$SERVER:$PORT/$uri > $summary_fn
# add our data about the server
echo >> $summary_fn
echo >> $summary_fn
echo "webserver-rev: $rev" >> $summary_fn
echo "webserver-uname: $uname" >> $summary_fn
grep Req $summary_fn
echo "Summary: $summary_fn"
echo
}
# 1k
ab_hello_world 'string' '1024'
ab_hello_world 'buffer' '1024'
# 100k
ab_hello_world 'string' '102400'
ab_hello_world 'buffer' '102400'
if [ ! -z $node_pid ]; then
kill -9 $node_pid
fi
Loading…
Cancel
Save