Comparison of APACHE and NGINX web servers.
I am a rails web developer and always wanted to know what is the best possible way to deploy a rails web site.
I searched a lot on google and got an answers that says use NGINX for mostly static web sites.
Use APACHE + PASSANGER as easy deployment tool.and some web pages says that use THIN server.
Finally i deployed one product based web site to test this and tried to find out which the fastest web server i can use.
When hosted with APACHE and tested with APACHE benchmark tool i got the following output.
Server Software:
Server Hostname: 178.63.19.197
Server Port: 80
Document Path: /index.html
Document Length: 5907 bytes
Concurrency Level: 5
Time taken for tests: 151.297 seconds
Complete requests: 1000
Failed requests: 0
Write errors: 0
Non-2xx responses: 1002
Total transferred: 6197440 bytes
HTML transferred: 5917882 bytes
Requests per second: 6.61 [#/sec] (mean)
Time per request: 756.487 [ms] (mean)
Time per request: 151.297 [ms] (mean, across all concurrent requests)
Transfer rate: 40.00 [Kbytes/sec] received
Percentage of the requests served within a certain time (ms)
50% 522
66% 540
75% 559
80% 587
90% 1117
95% 2002
98% 3532
99% 3757
100% 17908 (longest request)
When hosted with NGINX i got the following output
Server Software: NGINX
Server Hostname: 178.63.19.197
Server Port: 80
Document Path: /index.htmlI am a rails web developer and always wanted to know what is the best possible way to deploy a rails web site.
I searched a lot on google and got an answers that says use NGINX for mostly static web sites.
Use APACHE + PASSANGER as easy deployment tool.and some web pages says that use THIN server.
Finally i deployed one product based web site to test this and tried to find out which the fastest web server i can use.
When hosted with APACHE and tested with APACHE benchmark tool i got the following output.
Server Software:
Server Hostname: 178.63.19.197
Server Port: 80
Document Path: /index.html
Document Length: 5907 bytes
Concurrency Level: 5
Time taken for tests: 151.297 seconds
Complete requests: 1000
Failed requests: 0
Write errors: 0
Non-2xx responses: 1002
Total transferred: 6197440 bytes
HTML transferred: 5917882 bytes
Requests per second: 6.61 [#/sec] (mean)
Time per request: 756.487 [ms] (mean)
Time per request: 151.297 [ms] (mean, across all concurrent requests)
Transfer rate: 40.00 [Kbytes/sec] received
Percentage of the requests served within a certain time (ms)
50% 522
66% 540
75% 559
80% 587
90% 1117
95% 2002
98% 3532
99% 3757
100% 17908 (longest request)
When hosted with NGINX i got the following output
Server Software: NGINX
Server Hostname: 178.63.19.197
Server Port: 80
Document Length: 5907 bytes
Concurrency Level: 5
Time taken for tests: 145.200 seconds
Complete requests: 1000
Failed requests: 0
Non-2xx responses: 1002
Total transferred: 6197550 bytes
HTML transferred: 5917552 bytes
Requests per second: 5.61 [#/sec] (mean)
Time per request: 754.487 [ms] (mean)
Time per request: 150.297 [ms] (mean, across all concurrent requests)
Transfer rate: 42.00 [Kbytes/sec] received
Percentage of the requests served within a certain time (ms)
50% 522
66% 530
75% 559
80% 587
90% 1117 95% 2002
98% 3531
99% 3757
100% 17905 (longest request)
By comparing this i can say that both are same but actually sometime it may be depend on network speed to complete a request.
On the server there is 25 gb of ram from which hardly 0.3% is used to run an UNICORN worker at a time. for test i have created 5 unicorn workers.The cpu is i7 cpu with 2.67GHZ.which has 8 siblings.
For cpu also i seen just a 0.7% is used when serving a request. This is for both for APACHE as well as NGINX.
Let me know your thoughts on which server should i prefer APACHE+PASSANGER, NGINX+PASSANGER, NGINX+UNICORN, APACHE+UNICORN. Or any other choice for fastest rails deployment.