[Lispweb] serving very large files from allegroserve

Nick Levine ndl at ravenbrook.com
Thu May 3 04:00:31 CDT 2007


Testing downloads of large audio recordings from ilc2007, I find that
the bytes stop flowing after five minutes. Allegroserve (version
1.2.43 on ACL 8.0) spits out a 500 return code and the transaction is
over.

I find in AServe doc the following:

    (wserver-response-timeout wserver) - the number of seconds
    AllegroServe allows for an http request function to be run and
    finished sending back its response. The initial value for this
    slot of the wserver object is found in *http-response-timeout*
    which defaults to 300 seconds. You can alter this timeout value
    with the :timeout argument to with-http-response or by specifying
    a :timeout argument to the publish function creating the entity.

and I'm sure this is exactly what I've hit. 

The thought of just cranking this number up and hoping for the best
makes me cringe a little. Surely there must be better? Well, the folks
at Franz obviously thought so too, because a couple of paragraphs up
they say:

    In Acl 6.1 we added the capability of having each I/O operation to
    a socket stream time out.  This means that we don't have to
    predict how long it should take to get a request or send a
    response.  As long as we're making progress reading or writing we
    know that the client on the other end of the network connection is
    alive and well.

Fine words. But totally contradicted by having a response-timeout slot
in the server.

Does anyone have any experience with getting AServe to monitor whether
it's "making progress reading" and so knows "that the client on the
other end of the network connection is alive and well"?

Thanks,

- nick








More information about the lispweb mailing list