Subject: Re: CL Implementation for long running web app (Hunchentoot)
From: rpw3@rpw3.org (Rob Warnock)
Date: Tue, 16 Oct 2007 03:58:20 -0500
Newsgroups: comp.lang.lisp
Message-ID: <T4Wdndr7HKux4InanZ2dnUVZ_s-pnZ2d@speakeasy.net>
Stefan Scholl  <stesch@no-spoon.de> wrote:
+---------------
| Which Common Lisp implementation is suited for a long running web
| application on a VPS (virtual private server)? Web server:
| Hunchentoot.
+---------------

I don't know about either VPS or Hunchentoot in detail, but I've
been using CMUCL [on both FreeBSD & Linux] to run my own "appsrv" web
infrastructure [which does some of the same things as Hunchentoot]
with uptimes of up to a year at a shot. The CMUCL-hosted application
has never been the cause of the server rebooting; it's always been
something else [co-lo mandated reboots, O/S upgrades, etc.].

There is some kind of periodic background consing of ~300 bytes/s
that goes on which I suspect is because I'm using CMUCL's green
threads [the "multiprocessing" package, though it's really just
coroutines] and at every "idle timeout" there's a context switch
which allocates ~30 bytes somewhere, but I haven't bothered to
track it down since the GC collects it all just fine every couple
of hours, e.g., from the log file of one of the servers:

    ; Oct 13 17:11:37.06 GC: Start: 17.814016 MB in use.
    ; Oct 13 17:11:37.07 GC: Done:  5.818672 MB in use, 11.995344 MB freed, 0.01 secs.
    ; Oct 14 02:25:35.89 cgi-sock[3116]: GET "/~rpw3/uf.lhp"
    ; Oct 14 03:40:55.13 GC: Start: 17.831992 MB in use.
    ; Oct 14 03:40:55.15 GC: Done:  5.86108 MB in use, 11.970912 MB freed, 0.02 secs.
    ; Oct 14 14:11:59.72 GC: Start: 17.866448 MB in use.
    ; Oct 14 14:11:59.73 GC: Done:  5.87048 MB in use, 11.995968 MB freed, 0.01 secs.
    ; Oct 15 00:43:05.57 GC: Start: 17.875824 MB in use.
    ; Oct 15 00:43:05.59 GC: Done:  5.878736 MB in use, 11.997088 MB freed, 0.02 secs.
    ; Oct 15 01:24:38.94 cgi-sock[3117]: GET "/~rpw3/uf.lhp"
    ; Oct 15 07:39:11.12 cgi-sock[3118]: GET "/hacks/lisp/appsrv-demo.lhp"
    ; Oct 15 11:03:18.23 GC: Start: 17.887784 MB in use.
    ; Oct 15 11:03:18.25 GC: Done:  5.934576 MB in use, 11.953208 MB freed, 0.02 secs.
    ; Oct 15 21:34:45.63 GC: Start: 17.947248 MB in use.
    ; Oct 15 21:34:45.64 GC: Done:  5.922192 MB in use, 12.025056 MB freed, 0.01 secs.

That 5-6 MB base usage stays constant for months at a time, only
going up significantly if I do "live" patching of the code [and
even then, when I'm done a (GC :FULL T) usually drops it again].

So I'd say CMUCL is certainly a viable candidate for a long-running
web app server, if you're using BSD or Linux...


-Rob

-----
Rob Warnock			<rpw3@rpw3.org>
627 26th Avenue			<URL:http://rpw3.org/>
San Mateo, CA 94403		(650)572-2607