85 lines
2.1 KiB
Markdown
85 lines
2.1 KiB
Markdown
|
# Static file server example
|
||
|
|
||
|
* Serves files from the given directory.
|
||
|
* Supports transparent response compression.
|
||
|
* Supports byte range responses.
|
||
|
* Generates directory index pages.
|
||
|
* Supports TLS (aka SSL or HTTPS).
|
||
|
* Supports virtual hosts.
|
||
|
* Exports various stats on /stats path.
|
||
|
|
||
|
# How to build
|
||
|
|
||
|
```
|
||
|
make
|
||
|
```
|
||
|
|
||
|
# How to run
|
||
|
|
||
|
```
|
||
|
./fileserver -h
|
||
|
./fileserver -addr=tcp.addr.to.listen:to -dir=/path/to/directory/to/serve
|
||
|
```
|
||
|
|
||
|
# fileserver vs nginx performance comparison
|
||
|
|
||
|
Serving default nginx path (`/usr/share/nginx/html` on ubuntu).
|
||
|
|
||
|
* nginx
|
||
|
|
||
|
```
|
||
|
$ ./wrk -t 4 -c 16 -d 10 http://localhost:80
|
||
|
Running 10s test @ http://localhost:80
|
||
|
4 threads and 16 connections
|
||
|
Thread Stats Avg Stdev Max +/- Stdev
|
||
|
Latency 397.76us 1.08ms 20.23ms 95.19%
|
||
|
Req/Sec 21.20k 2.49k 31.34k 79.65%
|
||
|
850220 requests in 10.10s, 695.65MB read
|
||
|
Requests/sec: 84182.71
|
||
|
Transfer/sec: 68.88MB
|
||
|
```
|
||
|
|
||
|
* fileserver
|
||
|
|
||
|
```
|
||
|
$ ./wrk -t 4 -c 16 -d 10 http://localhost:8080
|
||
|
Running 10s test @ http://localhost:8080
|
||
|
4 threads and 16 connections
|
||
|
Thread Stats Avg Stdev Max +/- Stdev
|
||
|
Latency 447.99us 1.59ms 27.20ms 94.79%
|
||
|
Req/Sec 37.13k 3.99k 47.86k 76.00%
|
||
|
1478457 requests in 10.02s, 1.03GB read
|
||
|
Requests/sec: 147597.06
|
||
|
Transfer/sec: 105.15MB
|
||
|
```
|
||
|
|
||
|
8 pipelined requests
|
||
|
|
||
|
* nginx
|
||
|
|
||
|
```
|
||
|
$ ./wrk -s pipeline.lua -t 4 -c 16 -d 10 http://localhost:80 -- 8
|
||
|
Running 10s test @ http://localhost:80
|
||
|
4 threads and 16 connections
|
||
|
Thread Stats Avg Stdev Max +/- Stdev
|
||
|
Latency 1.34ms 2.15ms 30.91ms 92.16%
|
||
|
Req/Sec 33.54k 7.36k 108.12k 76.81%
|
||
|
1339908 requests in 10.10s, 1.07GB read
|
||
|
Requests/sec: 132705.81
|
||
|
Transfer/sec: 108.58MB
|
||
|
```
|
||
|
|
||
|
* fileserver
|
||
|
|
||
|
```
|
||
|
$ ./wrk -s pipeline.lua -t 4 -c 16 -d 10 http://localhost:8080 -- 8
|
||
|
Running 10s test @ http://localhost:8080
|
||
|
4 threads and 16 connections
|
||
|
Thread Stats Avg Stdev Max +/- Stdev
|
||
|
Latency 2.08ms 6.33ms 88.26ms 92.83%
|
||
|
Req/Sec 116.54k 14.66k 167.98k 69.00%
|
||
|
4642226 requests in 10.03s, 3.23GB read
|
||
|
Requests/sec: 462769.41
|
||
|
Transfer/sec: 329.67MB
|
||
|
```
|