<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
Daniel,<br>
<br>
A cron job sounds like a good idea to me too.<br>
<br>
As part of a project I'm working on, I'll be developing an in-memory
cache for Nginx.&nbsp; I'll let you know when it's stable, in case you'd
like to try it out.<br>
<br>
Wrt VPS's, have you looked at Open VZ (i.e. Virtuozzo) VPS ISPs?&nbsp; I'm
currently using Tektonic, and have generally been happy with the speed
of their system.&nbsp; For your money, you will typically get more memory
too.&nbsp; The reason is to do with the platform, I believe.&nbsp; I think that
Xen doesn't allow dynamic changing of memory size, but VZ does - so you
can 'burst' your memory to your needs on VZ, whilst still having a
minimum level.&nbsp; I know that Open VZ does have some problems that I
don't think Xen does, though (e.g. with memory-mapped files, meaning
that Varnish Cache can't - currently - work on Open VZ VPSs).<br>
<br>
The difference in architecture between Xen and Open VZ might mean that
you'd get a better IO performance on that (I think I was getting more
than 5000 req/s serving static files on my $15/mo VPS).<br>
<br>
Just something you might want to look at.<br>
<br>
Marcus.<br>
<br>
<br>
Atif Ghaffar wrote:
<blockquote
 cite="mid:f240b640903051350o2e89608o5f0cafec74df0e91@mail.gmail.com"
 type="cite">Daniel,<br>
I see this as a good compromise for your situation.<br>
  <br>
  <div class="gmail_quote">On Thu, Mar 5, 2009 at 9:36 PM, Daniel
Rhoden <span dir="ltr">&lt;<a moz-do-not-send="true"
 href="mailto:drhoden@gmail.com">drhoden@gmail.com</a>&gt;</span> wrote:<br>
  <blockquote class="gmail_quote"
 style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
    <div style="">There has been a growing trend in using VPS like Xen
to host sites. &nbsp;What I'm seeing is that memory is guaranteed, but the
I/O to the hard drive is competing with the other customers on the same
physical server.
    <div><br>
    </div>
    <div>I've given up on the idea of using Perl to populate memcached
on the fly for anything, static html or dynamic. &nbsp;I agree that the best
place for memory caching of static content is right with nginx.</div>
    <div><br>
    </div>
    <div>Did some analysis and found that about 1% of our pages get 40%
of the traffic. &nbsp;Since these are static pages it is unlikely that they
will change in popularity from day to day. &nbsp;So I've decided that a cron
job can populate the cache for these few pages (and then some) with
very little overhead, very little memory, with the biggest payoff.</div>
    <div><br>
    </div>
    <div>Thank you all for your feedback on this idea.&nbsp;</div>
    <div><br>
    </div>
    <div>By the way: I am seeing a boost in performance by caching
static files. &nbsp;Small, but every ms counts.</div>
    <div>
    <div class="h5">
    <div><br>
    <div>
    <div>On Mar 5, 2009, at 1:09 PM, Marcus Clyne wrote:</div>
    <br>
    <blockquote type="cite">
      <div bgcolor="#ffffff" text="#000000"> Atif,<br>
      <br>
I understood it the same way you did, and was saying that serving files
from memcached as opposed to the filesystem has negligible benefits,
and sometimes actually performs worse.<br>
      <br>
The reference to error_page (not error_file as I said before - memory
slip) was just as a means to populate memcache when there's no data in
the cache - you could easily use this method to put the file into
memcache from the filesystem.&nbsp; You wouldn't need to use an Nginx module
to put the file into memcache (at least not with the current Perl
module - it's blocking, so would slow everything down too much, though
with a non-blocking version it could be ok) - though I understand that
that's what he's talking about and where he's talking about hooking it
in.<br>
      <br>
Another method would be to use the try_files directive.<br>
      <br>
Overall, though, I can only see populating memcache with a file to
serve through Nginx as being overall slower than serving the file from
the filesystem.&nbsp; In my tests, memcache vs filesystem is pretty similar,
and adding any kind of overhead to put a file in memcache will mean
just serving the file statically will be more efficient (and won't
waste memory unnecessarily).&nbsp; I could see storing static files in an
internal memory cache being a bit quicker than serving files
statically, but actually not all that much, and would only possibly be
of real benefit for files that are under very high demand (e.g. a
homepage or a logo on a high-traffic site).<br>
      <br>
Cheers,<br>
      <br>
Marcus.<br>
      <br>
      <br>
Given that the<br>
      <br>
Atif Ghaffar wrote:
      <blockquote type="cite"><br>
        <br>
        <div class="gmail_quote">On Thu, Mar 5, 2009 at 12:34 PM,
Marcus Clyne <span dir="ltr">&lt;<a moz-do-not-send="true"
 href="mailto:eugaia@gmail.com" target="_blank">eugaia@gmail.com</a>&gt;</span>
wrote:<br>
        <blockquote class="gmail_quote"
 style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
          <div bgcolor="#ffffff" text="#000000"><br>
For populating the cache, have you looked at the error_file directive.&nbsp;
You can set the error file to script which could be passed to an FCGI
process, so that on a cache-miss the script is called to generate the
page, which could in the process put the file into the memcached
cache.&nbsp; </div>
        </blockquote>
        <div><br>
Marcus, <br>
        <br>
I believe Daniel&nbsp; was talking about the opposite. He want to populate
the cache if nginx hits the file instead of when it does not find it.<br>
        <br>
So something like this (this is how nginx would do it<br>
        <br>
request comes from /files/1.txt<br>
1. Check if memcache exists and serve from there.<br>
2. Check if file exist and serve from here.&nbsp; &lt;---- This is where he
wants to hook it :-)<br>
3. If file does not exists, handle error.<br>
        <br>
What Daniel wants (if I understood correctly)<br>
request comes from /files/1.txt<br>
1. Check if memcache exists and serve from there.<br>
2. if(-f file ) call the perl/fcgi process that populates the memcache
cache and returns the file. (so this would be done only where there is
no cache in memcache)<br>
3. If file does not exists, handle error.<br>
        <br>
        <br>
Still I dont see whats the point of this but yes it is doable.<br>
        <br>
best regards<br>
        <br>
        <br>
        <br>
        <br>
&nbsp;<br>
        </div>
        <blockquote class="gmail_quote"
 style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
          <div bgcolor="#ffffff" text="#000000">This of course only
really makes sense for dynamically-generate content.<br>
          <font color="#888888"><br>
Marcus.</font>
          <div>
          <div><br>
&nbsp;<br>
          <br>
Atif Ghaffar wrote:
          <blockquote type="cite">Daniel, <br>
            <br>
I see now your other posts, <br>
            <br>
I do not think that you will get any benifit of using memcached with
static files.<br>
Nginx is already very optimized at serving static files.<br>
            <br>
            <br>
            <div class="gmail_quote">On Wed, Mar 4, 2009 at 11:17 PM,
Daniel Rhoden <span dir="ltr">&lt;<a moz-do-not-send="true"
 href="mailto:drhoden@iiwinc.com" target="_blank">drhoden@iiwinc.com</a>&gt;</span>
wrote:<br>
            <blockquote class="gmail_quote"
 style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">This
is purely speculative, so please don't think I know how to do this.
&nbsp;I'm throwing this out so hopefully, if a good idea, the right people
can create the example.<br>
              <br>
Memcached has a good assortment of Perl clients.<br>
              <br>
Nginx has a means of embedding Perl into the configuration.<br>
              <br>
Couldn't there be a way of combining these to immediately populate the
cache when the cache returns missing?<br>
              <br>
By the way, I'm looking at this as a means of improving I/O for static
pages (on SliceHost). &nbsp;Ideally nginx's Memcached Module would have the
ability to do this when the requested filename exists on the hard drive:<br>
(-f $request_filename/index.html)<br>
              <font color="#888888"><br>
              <br>
Daniel Rhoden<br>
Director of Information Technology<br>
Interactive Internet Websites, Inc.<br>
3854 - 2 Killearn Court<br>
Tallahassee, Florida 32309<br>
Voice: (256) 878-5554<br>
E-Mail: <a moz-do-not-send="true" href="mailto:drhoden@iiwinc.com"
 target="_blank">drhoden@iiwinc.com</a><br>
Website: <a moz-do-not-send="true" href="http://iiwinc.com"
 target="_blank">iiwinc.com</a><br>
              <br>
              <br>
              </font></blockquote>
            </div>
            <br>
            <br clear="all">
            <br>
-- <br>
best regards<br>
Atif Ghaffar<br>
          </blockquote>
          <br>
          </div>
          </div>
          </div>
        </blockquote>
        </div>
        <br>
        <br clear="all">
        <br>
-- <br>
best regards<br>
Atif Ghaffar<br>
      </blockquote>
      <br>
      </div>
    </blockquote>
    </div>
    <br>
    </div>
    </div>
    </div>
    </div>
  </blockquote>
  </div>
  <br>
  <br clear="all">
  <br>
-- <br>
best regards<br>
Atif Ghaffar<br>
</blockquote>
<br>
</body>
</html>