Difference between pages "Package:Varnish" and "Package:Apache-tools"

(Difference between pages)
m (note about x-forwarded-for)
 
(initial commit)
 
Line 1: Line 1:
 
{{Ebuild
 
{{Ebuild
|Summary=Varnish is a state-of-the-art, high-performance HTTP accelerator
+
|Summary=Useful Apache tools - htdigest, htpasswd, ab, htdbm
|CatPkg=www-servers/varnish
+
|CatPkg=app-admin/apache-tools
 
|Maintainer=
 
|Maintainer=
 +
|Homepage=http://httpd.apache.org/
 
}}
 
}}
__TOC__
+
<console>###i## emerge apache-tools</console>
'''Varnish''' is a webcache & http accelerator.  Varnish will either serve cached content, or retireve content from the server, and cache it.  Varnish will reduce I/O pressure from webservers.
+
  
==Install==
+
Apache benchmark tests webserver performance.  This polite test will show 5 requests with the concurrency level of 5 hits at once:
===Emerge===
+
  
Install {{Package|www-servers/varnish}}:
+
<console>###i## ab -n 5 -c 5 http://www.funtoo.org/Welcome
<console>###i## emerge www-servers/varnish</console>
+
This is ApacheBench, Version 2.3 <$Revision: 1604373 $>
 +
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
 +
Licensed to The Apache Software Foundation, http://www.apache.org/
  
==Configuration==
+
Benchmarking www.funtoo.org (be patient).....done
  
{{note|as your varnish is local to your server, your server needs to be aware that it is behind a proxy, and configured for [http://en.wikipedia.org/wiki/X-Forwarded-For x-forwarded-for] or similar to fetch real users ip addresses instead of displaying 127.0.0.1 or localhost.}}
 
  
Configuration is controlled by /etc/varnish/default.vcl & /etc/conf.d/varnishd
+
Server Software:        nginx
 +
Server Hostname:        www.funtoo.org
 +
Server Port:            80
  
{{file|name=/etc/varnish/default.vcl|desc=varnish configuration file|body=
+
Document Path:         /Welcome
vcl 4.0;
+
Document Length:       32731 bytes
backend default {
+
    .host = "127.0.0.1";
+
    .port = "8080";
+
}
+
}}
+
 
+
{{file|name=/etc/conf.d/varnishd|desc=varnish configuration file|body=
+
VARNISHD="/usr/sbin/varnishd"
+
VARNISHADM="/usr/bin/varnishadm"
+
CONFIGFILE="/etc/varnish/default.vcl"
+
VARNISHD_OPTS="-a 127.0.0.1:80"
+
VARNISHD_OPTS="${VARNISHD_OPTS} -u varnish -g varnish"
+
}}
+
 
+
Varnish will fetch data from localhost:8080 and serve accelerated proxy data on localhost:80
+
 
+
=== c10k ===
+
For 10,000 concurrent connections (or not) a few configuration settings control the power of varnish.  If you're having varnish directly serve to the outside world, dial back concurrency to say 50 or 100 connections per ip. You must take into account corporations, and universities hammering several connections from a singular ip.  c10k is useful information for if varnish is behind a load balancer such as pound, nginx, or tengine, and all requests are internal and local.
+
 
+
{{file|name=/etc/conf.d/varnishd|desc=varnish concurrency settings|body=
+
VARNISHD_OPTS="-a 127.0.0.1:80 -p thread_pool_min=20 -p thread_pool_max=1000 -p thread_pool_add_delay=2 -s malloc,700M"
+
}}
+
 
+
{{file|name=/etc/varnish/default.vcl|desc=varnish concurrency settings|body=
+
backend default {
+
    .host = "127.0.0.1";
+
    .port = "8080";
+
    .connect_timeout = 600s;
+
    .first_byte_timeout = 600s;
+
    .between_bytes_timeout = 600s;
+
    .max_connections = 10000;
+
    # .port = "80" led to issues with competing for the port with apache.
+
}
+
}}
+
 
+
== BootService ==
+
 
+
To start varnish immediately:
+
<console>###i## rc-service varnishd start</console>
+
 
+
To start varnish at boot:
+
<console>###i## rc-update add varnishd default</console>
+
 
+
== Verification ==
+
To verify that your traffic is going through varnish.
+
<console>$##i## curl -I https://www.varnish-cache.org/</console>
+
 
+
== Benchmarking ==
+
If your system has apache installed apache benchmark can show the power of varnish.  The examples shown are running 500 requests with concurrency of 100 hits.
+
 
+
 
+
ab against a 3 worker cluster mode puma server
+
<console>###i## ab -n 500 -c 100 http://127.0.0.1:3000/index.html | grep Request</console>
+
Requests per second:    110.92 [#/sec] (mean)
+
 
+
 
+
ab against the same server served through varnish
+
<console>###i## ab -n 500 -c 100 http://127.0.0.1/index.html | grep Request</console>
+
Requests per second:    10268.42 [#/sec] (mean)
+
  
== SSL support ==
+
Concurrency Level:      5
Varnish does not support ssl. There are packages to get around this limitation:
+
Time taken for tests:  0.419 seconds
* {{package|stunnel}}
+
Complete requests:     5
* {{package|pound}}
+
Failed requests:        0
 +
Total transferred:      165849 bytes
 +
HTML transferred:      163655 bytes
 +
Requests per second:    11.94 [#/sec] (mean)
 +
Time per request:      418.790 [ms] (mean)
 +
Time per request:      83.758 [ms] (mean, across all concurrent requests)
 +
Transfer rate:          386.74 [Kbytes/sec] received
  
== Media ==
+
Connection Times (ms)
{{#widget:YouTube16x9|id=JEF6_XC-2ZU}}
+
              min  mean[+/-sd] median  max
 +
Connect:      60  63  2.7    63      67
 +
Processing:  300  317  23.3    314    356
 +
Waiting:      78  92  10.6    96    105
 +
Total:        361  380  24.0    378    419
  
 +
Percentage of the requests served within a certain time (ms)
 +
  50%    370
 +
  66%    387
 +
  75%    387
 +
  80%    419
 +
  90%    419
 +
  95%    419
 +
  98%    419
 +
  99%    419
 +
100%    419 (longest request)
 +
</console>
 
{{EbuildFooter}}
 
{{EbuildFooter}}

Latest revision as of 07:04, November 27, 2014

app-admin/apache-tools


Source Repository:Gentoo Portage Tree
Homepage

Summary: Useful Apache tools - htdigest, htpasswd, ab, htdbm

Apache-tools

# emerge apache-tools

Apache benchmark tests webserver performance. This polite test will show 5 requests with the concurrency level of 5 hits at once:

# ab -n 5 -c 5 http://www.funtoo.org/Welcome
This is ApacheBench, Version 2.3 <$Revision: 1604373 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking www.funtoo.org (be patient).....done


Server Software:        nginx
Server Hostname:        www.funtoo.org
Server Port:            80

Document Path:          /Welcome
Document Length:        32731 bytes

Concurrency Level:      5
Time taken for tests:   0.419 seconds
Complete requests:      5
Failed requests:        0
Total transferred:      165849 bytes
HTML transferred:       163655 bytes
Requests per second:    11.94 [#/sec] (mean)
Time per request:       418.790 [ms] (mean)
Time per request:       83.758 [ms] (mean, across all concurrent requests)
Transfer rate:          386.74 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:       60   63   2.7     63      67
Processing:   300  317  23.3    314     356
Waiting:       78   92  10.6     96     105
Total:        361  380  24.0    378     419

Percentage of the requests served within a certain time (ms)
  50%    370
  66%    387
  75%    387
  80%    419
  90%    419
  95%    419
  98%    419
  99%    419
 100%    419 (longest request)