ABYSS Web Server
ABYSS is a micro HTTP/1.1 compliant web server written by Moez Mahfoudh.
It was designed in to be fast, portable and consume very low resources.
# create build directory mkdir -p ~/build/abyss cd ~/build/abyss # download and build abyss wget http://abyss.sourceforge.net/abyss-0.3.tar.gz tar -xvf abyss-0.3.tar.gz cd abyss/src make cd .. # Config File: ./conf/abyss.conf # get current working directory, escape it and save it to a variable currentpath=$(echo $(pwd)|sed -e "s/\//\\\\\//g"); # uncomment current server root sed -i 's/^ServerRoot/#ServerRoot/g' ./conf/abyss.conf # set the current working directory to server root sed -i "s/^\(#ServerRoot.*$\)/\1\nServerRoot $currentpath/g" ./conf/abyss.conf # disable access logging - make sense for the test sed -i 's/^LogFile/#LogFile/g' ./conf/abyss.conf # start server - normally start on port 8000 cd bin ./abyss -c ../conf/abyss.conf # check server wget -qO- http://localhost:8000/
Simple Benchmark with Apache Bench
ab -t60 -c15000 -r http://localhost:8000/
running time: 60 seconds
concurrency: 15000
Results
ab -t60 -c15000 -r http://localhost:8000/ This is ApacheBench, Version 2.3 <$Revision: 655654 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking localhost (be patient) Completed 5000 requests Completed 10000 requests Completed 15000 requests Completed 20000 requests Completed 25000 requests Completed 30000 requests Completed 35000 requests Completed 40000 requests Completed 45000 requests Finished 47780 requests Server Software: ABYSS/0.3 Server Hostname: localhost Server Port: 8000 Document Path: / Document Length: 664 bytes Concurrency Level: 15000 Time taken for tests: 60.295 seconds Complete requests: 47780 Failed requests: 12342 (Connect: 0, Receive: 4113, Length: 4116, Exceptions: 4113) Write errors: 0 Total transferred: 37114400 bytes HTML transferred: 28992896 bytes Requests per second: 792.44 [#/sec] (mean) Time per request: 18928.933 [ms] (mean) Time per request: 1.262 [ms] (mean, across all concurrent requests) Transfer rate: 601.12 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 2326 3658.3 1003 15674 Processing: 1 5473 13235.1 282 57266 Waiting: 0 1618 5131.5 127 40374 Total: 1 7800 14813.4 1161 60274 Percentage of the requests served within a certain time (ms) 50% 1161 66% 3035 75% 6213 80% 8127 90% 31038 95% 47888 98% 57267 99% 58207 100% 60274 (longest request)
Abyss Web Server by aprelium
Aprelium has taken the further development of Abyss.
So I’ll a version from their Server.
# create build directory mkdir -p ~/build/abyss cd ~/build/abyss # download and build abyss wget http://www.aprelium.com/data/abwsx1.tgz tar -xvf abwsx1.tgz cd abyssws ./abyssws-x64
Simple Benchmark with Apache Bench
ab -t60 -c15000 -r http://localhost:8080/
running time: 60 seconds
concurrency: 15000
Results
ab -t60 -c15000 -r http://localhost:8080/ This is ApacheBench, Version 2.3 <$Revision: 655654 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking localhost (be patient) Completed 5000 requests Completed 10000 requests Completed 15000 requests Completed 20000 requests Completed 25000 requests Test aborted after 10 failures apr_socket_connect(): Connection reset by peer (104) Total of 26144 requests completed a@t400:~$ ab -t60 -c10000 -r http://localhost:8080/ This is ApacheBench, Version 2.3 <$Revision: 655654 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking localhost (be patient) Completed 5000 requests Completed 10000 requests Completed 15000 requests Completed 20000 requests Completed 25000 requests Completed 30000 requests Completed 35000 requests Completed 40000 requests Completed 45000 requests Completed 50000 requests Finished 50000 requests Server Software: Abyss/2.8.0.1-X1-Linux Server Hostname: localhost Server Port: 8080 Document Path: / Document Length: 1346 bytes Concurrency Level: 10000 Time taken for tests: 41.712 seconds Complete requests: 50000 Failed requests: 16029 (Connect: 0, Receive: 4756, Length: 5693, Exceptions: 5580) Write errors: 0 Total transferred: 69251841 bytes HTML transferred: 59637222 bytes Requests per second: 1198.70 [#/sec] (mean) Time per request: 8342.376 [ms] (mean) Time per request: 0.834 [ms] (mean, across all concurrent requests) Transfer rate: 1621.33 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 4 1324 2259.2 417 15470 Processing: 32 2702 6910.7 426 40446 Waiting: 0 565 1577.4 319 16037 Total: 137 4025 7911.9 866 41590 Percentage of the requests served within a certain time (ms) 50% 866 66% 1510 75% 1842 80% 3625 90% 13940 95% 24139 98% 33628 99% 35464 100% 41590 (longest request)
Server Output
./abyssws-x64 Abyss Web Server X1 (v 2.8) Copyright (C) Aprelium - 2001-2012 -- Default host on port 8080 is up and running (Local URL http://127.0.0.1:8080) Console local URL: http://127.0.0.1:8888 Critical: The server died unexpectedly (code=0xFFFFFFFF), it is being restarted automatically. -- Default host on port 8080 is up and running (Local URL http://127.0.0.1:8080) Console local URL: http://127.0.0.1:8888
References
1. http://abyss.sourceforge.net/
2. http://abyss.sourceforge.net/install.html
3. http://www.aprelium.com/abyssws/
4. http://www.aprelium.com/abyssws/download.php
5. http://backreference.org/2009/12/09/using-shell-variables-in-sed/
Leave a Reply