Closed AlexBoehm closed 10 years ago
Fos is working really great. I tried it in combination with nginx (mono on arch linux). The performance is very impressive. Thanks so much for creating it! I have two questions tough:
FosServer.Bind("/tmp/fcgisocket.sock")
I get a NullReferenceException. Do you have any ideas how to make this work?I'm really glad it is working for you! If you have time, would you mind sending me some stats on how many users you serve, Fos's uptime and some other things? Now to your questions:
NullReferenceException
was caused due to a type in a preprocessor #if
expression that checked if the compiler was Mono. I have just committed some work that should fix this. Still on the queuing matter, I could make the backlog parameter accessible through the API, although I would love to see a way to circunvent the OS's ignoring of it before making this decision.
I am not using Fos it in production yet. I just wanted to see how my application performs on a pure stack without xsp and System.Web being involved.
Here are some simple stats that I measured using ab
.
ab -n 100000 -c 1000 http://127.0.0.1/
This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking 127.0.0.1 (be patient)
Completed 10000 requests
Completed 20000 requests
Completed 30000 requests
Completed 40000 requests
Completed 50000 requests
Completed 60000 requests
Completed 70000 requests
Completed 80000 requests
Completed 90000 requests
Completed 100000 requests
Finished 100000 requests
Server Software: nginx/1.4.6
Server Hostname: 127.0.0.1
Server Port: 80
Document Path: /
Document Length: 192 bytes
Concurrency Level: 1000
Time taken for tests: 76.884 seconds
Complete requests: 100000
Failed requests: 98426
(Connect: 0, Receive: 0, Length: 98426, Exceptions: 0)
Write errors: 0
Non-2xx responses: 1580
Total transferred: 352017732 bytes
HTML transferred: 342610190 bytes
Requests per second: 1300.65 [#/sec] (mean)
Time per request: 768.845 [ms] (mean)
Time per request: 0.769 [ms] (mean, across all concurrent requests)
Transfer rate: 4471.22 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 300 1692.1 0 31103
Processing: 0 290 1836.2 47 60001
Waiting: 0 290 1836.2 47 60001
Total: 0 591 2796.0 47 67024
Percentage of the requests served within a certain time (ms)
50% 47
66% 49
75% 50
80% 52
90% 525
95% 2210
98% 7537
99% 15570
100% 67024 (longest request)
Same with 10 concurrent requests:
ab -n 100000 -c 10 http://127.0.0.1/
This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking 127.0.0.1 (be patient)
Completed 10000 requests
Completed 20000 requests
Completed 30000 requests
Completed 40000 requests
Completed 50000 requests
Completed 60000 requests
Completed 70000 requests
Completed 80000 requests
Completed 90000 requests
Completed 100000 requests
Finished 100000 requests
Server Software: nginx/1.4.6
Server Hostname: 127.0.0.1
Server Port: 80
Document Path: /
Document Length: 3478 bytes
Concurrency Level: 10
Time taken for tests: 36.869 seconds
Complete requests: 100000
Failed requests: 0
Write errors: 0
Total transferred: 357100000 bytes
HTML transferred: 347800000 bytes
Requests per second: 2712.28 [#/sec] (mean)
Time per request: 3.687 [ms] (mean)
Time per request: 0.369 [ms] (mean, across all concurrent requests)
Transfer rate: 9458.54 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.0 0 0
Processing: 1 4 2.2 3 186
Waiting: 1 4 2.2 3 186
Total: 2 4 2.2 3 186
Percentage of the requests served within a certain time (ms)
50% 3
66% 3
75% 4
80% 5
90% 6
95% 6
98% 7
99% 7
100% 186 (longest request)
The NullReferenceException
is gone now. However, I didn't get unix sockets to work yet. I didn't really spend much time on it, though.
Thank you for helping! How is Fos working out for you?