<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments for Kristian&#039;s web log</title>
	<atom:link href="http://kristian.blog.linpro.no/comments/feed/" rel="self" type="application/rss+xml" />
	<link>http://kristian.blog.linpro.no</link>
	<description>A Free Software Hacker&#039;s blog</description>
	<lastBuildDate>Sat, 27 Feb 2010 21:46:58 +0100</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>Comment on High-end Varnish-tuning by Moshe Kaplan</title>
		<link>http://kristian.blog.linpro.no/2009/10/19/high-end-varnish-tuning/comment-page-1/#comment-182</link>
		<dc:creator>Moshe Kaplan</dc:creator>
		<pubDate>Sat, 27 Feb 2010 21:46:58 +0000</pubDate>
		<guid isPermaLink="false">http://kristian.blog.linpro.no/?p=75#comment-182</guid>
		<description>Regarding the test environment, it is a wise idea to use JMeter and Amazon Web Services in order to make a proper stress and explore the real Varnish numbers.

Moshe</description>
		<content:encoded><![CDATA[<p>Regarding the test environment, it is a wise idea to use JMeter and Amazon Web Services in order to make a proper stress and explore the real Varnish numbers.</p>
<p>Moshe</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Varnish best practices by kristian</title>
		<link>http://kristian.blog.linpro.no/2010/01/26/varnish-best-practices/comment-page-1/#comment-181</link>
		<dc:creator>kristian</dc:creator>
		<pubDate>Thu, 11 Feb 2010 07:33:37 +0000</pubDate>
		<guid isPermaLink="false">http://kristian.blog.linpro.no/?p=142#comment-181</guid>
		<description>What you&#039;re describing sounds strange. Can you verify by checking your logs to see if you&#039;re hitting some sort of assert error? And/or supply output from varnishlog?</description>
		<content:encoded><![CDATA[<p>What you&#8217;re describing sounds strange. Can you verify by checking your logs to see if you&#8217;re hitting some sort of assert error? And/or supply output from varnishlog?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Varnish best practices by russ</title>
		<link>http://kristian.blog.linpro.no/2010/01/26/varnish-best-practices/comment-page-1/#comment-180</link>
		<dc:creator>russ</dc:creator>
		<pubDate>Wed, 10 Feb 2010 23:24:27 +0000</pubDate>
		<guid isPermaLink="false">http://kristian.blog.linpro.no/?p=142#comment-180</guid>
		<description>I am new to varnish and so I tried your settings and found something rather interesting, If I specified tread_pool_min=100 or 200 my varnish would only handle every other request. Testing with no load, using wget, the first request would come back fine and the second would hang such that with varnish stat it would show:

19         0.00         0.00 Client connections accepted
  9         0.00         0.00 Client requests received

I am running the following options:

DAEMON_OPTS=&quot;-a :80 \
             -T localhost:6082 \
             -f /etc/varnish/default.vcl \
             -u varnish -g varnish \
             -s file,/var/lib/varnish/varnish_storage.bin,5G \
             -p thread_pool_add_delay=2 \
             -p thread_pools=2 \
             -p thread_pool_max=4000 \
             -p session_linger=50 \
             -p sess_workspace=16384
             &quot;

Also sess_workspace=16k does not work it only liked the number</description>
		<content:encoded><![CDATA[<p>I am new to varnish and so I tried your settings and found something rather interesting, If I specified tread_pool_min=100 or 200 my varnish would only handle every other request. Testing with no load, using wget, the first request would come back fine and the second would hang such that with varnish stat it would show:</p>
<p>19         0.00         0.00 Client connections accepted<br />
  9         0.00         0.00 Client requests received</p>
<p>I am running the following options:</p>
<p>DAEMON_OPTS=&#8221;-a :80 \<br />
             -T localhost:6082 \<br />
             -f /etc/varnish/default.vcl \<br />
             -u varnish -g varnish \<br />
             -s file,/var/lib/varnish/varnish_storage.bin,5G \<br />
             -p thread_pool_add_delay=2 \<br />
             -p thread_pools=2 \<br />
             -p thread_pool_max=4000 \<br />
             -p session_linger=50 \<br />
             -p sess_workspace=16384<br />
             &#8221;</p>
<p>Also sess_workspace=16k does not work it only liked the number</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Varnish purges by Yvan</title>
		<link>http://kristian.blog.linpro.no/2010/02/02/varnish-purges/comment-page-1/#comment-174</link>
		<dc:creator>Yvan</dc:creator>
		<pubDate>Wed, 03 Feb 2010 12:54:15 +0000</pubDate>
		<guid isPermaLink="false">http://kristian.blog.linpro.no/?p=152#comment-174</guid>
		<description>Thanks Kristian for your answers.

I was using the code here: http://varnish-cache.org/wiki/VCLExamplePurging . But as the VCL is quite the same as the one you wrote in this article, is the sentence correct: «That means that if you now send a

PURGE / HTTP/1.0
Host: www.example.com

to Varnish over port 80 (restricted to client with IP 192.0.2.14), your / document from the www.example.com website will be purged.»

With your answer, I would guess that any «/» document will be purged, was it on www.example.com or not. If so, can someone fix the wiki? Along with your remark about the fact that it&#039;s a purging command, so an error should be sent right away, or a GET should be used (that&#039;s the core of your posting here).

Thanks a lot!</description>
		<content:encoded><![CDATA[<p>Thanks Kristian for your answers.</p>
<p>I was using the code here: <a href="http://varnish-cache.org/wiki/VCLExamplePurging" rel="nofollow">http://varnish-cache.org/wiki/VCLExamplePurging</a> . But as the VCL is quite the same as the one you wrote in this article, is the sentence correct: «That means that if you now send a</p>
<p>PURGE / HTTP/1.0<br />
Host: <a href="http://www.example.com" rel="nofollow">http://www.example.com</a></p>
<p>to Varnish over port 80 (restricted to client with IP 192.0.2.14), your / document from the <a href="http://www.example.com" rel="nofollow">http://www.example.com</a> website will be purged.»</p>
<p>With your answer, I would guess that any «/» document will be purged, was it on <a href="http://www.example.com" rel="nofollow">http://www.example.com</a> or not. If so, can someone fix the wiki? Along with your remark about the fact that it&#8217;s a purging command, so an error should be sent right away, or a GET should be used (that&#8217;s the core of your posting here).</p>
<p>Thanks a lot!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Varnish purges by kristian</title>
		<link>http://kristian.blog.linpro.no/2010/02/02/varnish-purges/comment-page-1/#comment-173</link>
		<dc:creator>kristian</dc:creator>
		<pubDate>Wed, 03 Feb 2010 12:12:54 +0000</pubDate>
		<guid isPermaLink="false">http://kristian.blog.linpro.no/?p=152#comment-173</guid>
		<description>To the first question: No, the hostname isn&#039;t used, so you want to add that. You may also want to rewrite the request from purge to GET before issuing lookup, or just issue «error 200 &quot;Purge added&quot;».

To the second question: Using just req.http.host is faster, though I doubt you&#039;d notice the difference.

As for &#039;G&#039;-purges, those are &#039;Gone&#039;: They are just placeholders because an object points to them, but they will never be tested against. They will be removed once there are no objects referencing them. (This is why you always have at least one item on the purge list, even right after you start up).

n_purge should contain the number of purges you have active, and you can see that if you subtract the retired purges from the added purges (4844 - 4801), you get n_purge (43). I can&#039;t explain why you only see 39 purges, but if varnishstat and purge.list disagree on the number of purges, purge.list is probably correct.</description>
		<content:encoded><![CDATA[<p>To the first question: No, the hostname isn&#8217;t used, so you want to add that. You may also want to rewrite the request from purge to GET before issuing lookup, or just issue «error 200 &#8220;Purge added&#8221;».</p>
<p>To the second question: Using just req.http.host is faster, though I doubt you&#8217;d notice the difference.</p>
<p>As for &#8216;G&#8217;-purges, those are &#8216;Gone&#8217;: They are just placeholders because an object points to them, but they will never be tested against. They will be removed once there are no objects referencing them. (This is why you always have at least one item on the purge list, even right after you start up).</p>
<p>n_purge should contain the number of purges you have active, and you can see that if you subtract the retired purges from the added purges (4844 &#8211; 4801), you get n_purge (43). I can&#8217;t explain why you only see 39 purges, but if varnishstat and purge.list disagree on the number of purges, purge.list is probably correct.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Varnish purges by Yvan</title>
		<link>http://kristian.blog.linpro.no/2010/02/02/varnish-purges/comment-page-1/#comment-172</link>
		<dc:creator>Yvan</dc:creator>
		<pubDate>Wed, 03 Feb 2010 11:05:21 +0000</pubDate>
		<guid isPermaLink="false">http://kristian.blog.linpro.no/?p=152#comment-172</guid>
		<description>Thanks a lot for all this info on purging, Kristian. Currently, I use:
if (req.request == &quot;PURGE&quot;)
{
	purge(&quot;req.url ~ &quot; req.url);
	return (lookup);
}
in vcl_fetch()

I&#039;ve got the code form the URL you&#039;ve mentioned at the top of your article. Is the hostname used in such a case? Because in purge.list, I never see any hostnames.
Your example above states:
purge(&quot;req.http.host == &quot; req.http.host &quot; &amp;&amp; req.url ~ &quot; req.http.X-Purge-Regex);
so I think there&#039;s an issue in my code as I don&#039;t have the host (of course I have multiple hostnames, else the question is silly).

Another question:
if you want to purge a whole host, is it better to do:
purge(&quot;req.http.host ~ example.com$&quot;);
or:
purge(&quot;req.http.host ~ example.com$ &amp;&amp; req.url ~ ^/.*&quot;);

I think the first one should be faster.

And finally, I want to track the number of purging rules (to see if there&#039;s not too much rules). If I run purge.list, I can see 35 rules (I exclude the «G» rules, I think these are duplicates, else it would be 39 rules), but in the stats I can read:
n_purge                    43          .   N total active purges
n_purge_add              4844         0.00 N new purges added
n_purge_retire           4801         0.00 N old purges deleted
n_purge_obj_test      5206879         3.06 N objects tested
n_purge_re_test      34006296        19.97 N regexps tested against
n_purge_dups             1569         0.00 N duplicate purges removed

What data contains the real active rules?</description>
		<content:encoded><![CDATA[<p>Thanks a lot for all this info on purging, Kristian. Currently, I use:<br />
if (req.request == &#8220;PURGE&#8221;)<br />
{<br />
	purge(&#8221;req.url ~ &#8221; req.url);<br />
	return (lookup);<br />
}<br />
in vcl_fetch()</p>
<p>I&#8217;ve got the code form the URL you&#8217;ve mentioned at the top of your article. Is the hostname used in such a case? Because in purge.list, I never see any hostnames.<br />
Your example above states:<br />
purge(&#8221;req.http.host == &#8221; req.http.host &#8221; &amp;&amp; req.url ~ &#8221; req.http.X-Purge-Regex);<br />
so I think there&#8217;s an issue in my code as I don&#8217;t have the host (of course I have multiple hostnames, else the question is silly).</p>
<p>Another question:<br />
if you want to purge a whole host, is it better to do:<br />
purge(&#8221;req.http.host ~ example.com$&#8221;);<br />
or:<br />
purge(&#8221;req.http.host ~ example.com$ &amp;&amp; req.url ~ ^/.*&#8221;);</p>
<p>I think the first one should be faster.</p>
<p>And finally, I want to track the number of purging rules (to see if there&#8217;s not too much rules). If I run purge.list, I can see 35 rules (I exclude the «G» rules, I think these are duplicates, else it would be 39 rules), but in the stats I can read:<br />
n_purge                    43          .   N total active purges<br />
n_purge_add              4844         0.00 N new purges added<br />
n_purge_retire           4801         0.00 N old purges deleted<br />
n_purge_obj_test      5206879         3.06 N objects tested<br />
n_purge_re_test      34006296        19.97 N regexps tested against<br />
n_purge_dups             1569         0.00 N duplicate purges removed</p>
<p>What data contains the real active rules?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Varnish purges by kristian</title>
		<link>http://kristian.blog.linpro.no/2010/02/02/varnish-purges/comment-page-1/#comment-170</link>
		<dc:creator>kristian</dc:creator>
		<pubDate>Tue, 02 Feb 2010 16:02:07 +0000</pubDate>
		<guid isPermaLink="false">http://kristian.blog.linpro.no/?p=152#comment-170</guid>
		<description>Exactly. So while you CAN match on req.http.User-Agent, it will be the user-agent of whatever client happens to stroll by next time. If you want to match on the User-Agent of the request that pulled the object from the backend, you have to store the user-agent in obj. &quot;set obj.http.X-Orig-User-Agent = req.http.User-Agent;&quot; for instance, then match on obj.http.X-Orig-User-Agent.</description>
		<content:encoded><![CDATA[<p>Exactly. So while you CAN match on req.http.User-Agent, it will be the user-agent of whatever client happens to stroll by next time. If you want to match on the User-Agent of the request that pulled the object from the backend, you have to store the user-agent in obj. &#8220;set obj.http.X-Orig-User-Agent = req.http.User-Agent;&#8221; for instance, then match on obj.http.X-Orig-User-Agent.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Varnish purges by Per Buer</title>
		<link>http://kristian.blog.linpro.no/2010/02/02/varnish-purges/comment-page-1/#comment-169</link>
		<dc:creator>Per Buer</dc:creator>
		<pubDate>Tue, 02 Feb 2010 15:30:30 +0000</pubDate>
		<guid isPermaLink="false">http://kristian.blog.linpro.no/?p=152#comment-169</guid>
		<description>How can you match on User-Agent? Thats a request header.</description>
		<content:encoded><![CDATA[<p>How can you match on User-Agent? Thats a request header.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Varnishstat for dummies by sime</title>
		<link>http://kristian.blog.linpro.no/2009/12/08/varnishstat-for-dummies/comment-page-1/#comment-168</link>
		<dc:creator>sime</dc:creator>
		<pubDate>Tue, 02 Feb 2010 06:50:51 +0000</pubDate>
		<guid isPermaLink="false">http://kristian.blog.linpro.no/?p=91#comment-168</guid>
		<description>Thanks for the clearing up the differences between the three bytes allocated stats: sm_balloc, sma_balloc, sms_balloc.

We have been depending on the varnish_allocated munin plugin[1] though it wasn&#039;t reporting any new figures since changing to malloc as a storage type. I have since tweaked it to grep for SMA bytes allocated.

Now I&#039;m considering developing it to further to report on the SMA bytes free. Though I&#039;m not sure it is would be valuable information.

Thanks!

[1] http://muninexchange.projects.linpro.no/?search=&amp;cid=37&amp;os[4]=on&amp;os[7]=on&amp;os[3]=on&amp;os[2]=on&amp;os[5]=on&amp;os[8]=on&amp;os[1]=on&amp;os[6]=on&amp;pid=154</description>
		<content:encoded><![CDATA[<p>Thanks for the clearing up the differences between the three bytes allocated stats: sm_balloc, sma_balloc, sms_balloc.</p>
<p>We have been depending on the varnish_allocated munin plugin[1] though it wasn&#8217;t reporting any new figures since changing to malloc as a storage type. I have since tweaked it to grep for SMA bytes allocated.</p>
<p>Now I&#8217;m considering developing it to further to report on the SMA bytes free. Though I&#8217;m not sure it is would be valuable information.</p>
<p>Thanks!</p>
<p>[1] <a href="http://muninexchange.projects.linpro.no/?search=&amp;cid=37&amp;os4=on&amp;os7=on&amp;os3=on&amp;os2=on&amp;os5=on&amp;os8=on&amp;os1=on&amp;os6=on&amp;pid=154" rel="nofollow">http://muninexchange.projects.linpro.no/?search=&amp;cid=37&amp;os4=on&amp;os7=on&amp;os3=on&amp;os2=on&amp;os5=on&amp;os8=on&amp;os1=on&amp;os6=on&amp;pid=154</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Real-time and hit-and-run based statistics for VSTS by kristian</title>
		<link>http://kristian.blog.linpro.no/2010/01/19/real-time-and-hit-and-run-based-statistics-for-vsts/comment-page-1/#comment-166</link>
		<dc:creator>kristian</dc:creator>
		<pubDate>Tue, 26 Jan 2010 08:59:44 +0000</pubDate>
		<guid isPermaLink="false">http://kristian.blog.linpro.no/?p=137#comment-166</guid>
		<description>That we did, which is why I&#039;m looking at Ganglia.

I discovered there&#039;ll be a talk about it at FOSDEM, though, so I&#039;ll postpone my decision until after that. It does seem rather like what I want, though.</description>
		<content:encoded><![CDATA[<p>That we did, which is why I&#8217;m looking at Ganglia.</p>
<p>I discovered there&#8217;ll be a talk about it at FOSDEM, though, so I&#8217;ll postpone my decision until after that. It does seem rather like what I want, though.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
