[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