Skip to content

Simple cross-platform web server for static content on c++

Latest
Compare
Choose a tag to compare
@3s3s 3s3s released this 01 Apr 09:09

EN:
Simple single-thread and cross-platform web server for static sites. It support Keep-Alive and all the code has a size less than 20 KB. Used only only STL and OpenSSL libraries.
The code compiles in gcc 4.6 and above.

Tests:
ab -c 1000 -r -t 10 -k http://localhost:8085/

Server Software:
Server Hostname: localhost
Server Port: 8085

Document Path: /
Document Length: 232 bytes

Concurrency Level: 1000
Time taken for tests: 5.371 seconds
Complete requests: 50000
Failed requests: 0
Write errors: 0
Keep-Alive requests: 50000
Total transferred: 14838352 bytes
HTML transferred: 11606032 bytes
Requests per second: 9310.11 #/sec
Time per request: 107.410 ms
Time per request: 0.107 [ms](mean, across all concurrent requests)
Transfer rate: 2698.18 [Kbytes/sec] received

For example nginx:

Server Software: nginx/1.4.7
Server Hostname: localhost
Server Port: 80

Document Path: /1/index.html
Document Length: 232 bytes

Concurrency Level: 1000
Time taken for tests: 7.811 seconds
Complete requests: 50000
Failed requests: 0
Write errors: 0
Keep-Alive requests: 49504
Total transferred: 23397520 bytes
HTML transferred: 11600000 bytes
Requests per second: 6400.89 #/sec
Time per request: 156.228 ms
Time per request: 0.156 [ms](mean, across all concurrent requests)
Transfer rate: 2925.10 [Kbytes/sec] received

See more at http://habrahabr.ru/post/217087/ (in Russian)

RU:
Простой однопоточный кроссплатформенный веб-сервер для статических сайтов. Поддерживает Keep-Alive, весь код имеет размер меньше 20 Кб. Из библиотек используются только STL и OpenSSL.
Код компилируется в gcc 4.6 и выше.

Tесты:
ab -c 1000 -r -t 10 -k http://localhost:8085/

Server Software:
Server Hostname: localhost
Server Port: 8085

Document Path: /
Document Length: 232 bytes

Concurrency Level: 1000
Time taken for tests: 5.371 seconds
Complete requests: 50000
Failed requests: 0
Write errors: 0
Keep-Alive requests: 50000
Total transferred: 14838352 bytes
HTML transferred: 11606032 bytes
Requests per second: 9310.11 #/sec
Time per request: 107.410 ms
Time per request: 0.107 [ms](mean, across all concurrent requests)
Transfer rate: 2698.18 [Kbytes/sec] received

Для сравнения тот же тест nginx:

Server Software: nginx/1.4.7
Server Hostname: localhost
Server Port: 80

Document Path: /1/index.html
Document Length: 232 bytes

Concurrency Level: 1000
Time taken for tests: 7.811 seconds
Complete requests: 50000
Failed requests: 0
Write errors: 0
Keep-Alive requests: 49504
Total transferred: 23397520 bytes
HTML transferred: 11600000 bytes
Requests per second: 6400.89 #/sec
Time per request: 156.228 ms
Time per request: 0.156 [ms](mean, across all concurrent requests)
Transfer rate: 2925.10 [Kbytes/sec] received

Другие подробности в статье: http://habrahabr.ru/post/217087/