tech-userlevel archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: CGI scripts
On Tue, Oct 18, 2011 at 04:00:14AM -0400, Matthew Mondor wrote:
> That wouldn't be bozohttpd anymore, would it? :)
Sure it would be; AFAIR, "bozohttpd" was originally written in Perl.
> Since I implemented various daemons in various languages (including
> HTTPDs), a few questions to establish what is really wanted/needed,
> before one decides to write another one:
This is nice write-up about general, high-peformance, HTTP servers --
nothing that httpd(8) is even trying to be, as far as I understand it.
> - Is bozohttpd currently unsuitable for the future base-system use
> cases that are being planned? Could a Lua-written HTTPd more
> gracefully deal with the needs and justify the writing of an HTTPd
> with it? Would a C daemon still be needed anyway to deal with Lua's
> lack of longjmp or other needed control features?
httpd(8) does not use longjmp(3) nor is it needed for it.
> - In terms of goals, should it be a front-end static+proxying HTTPd
> (i.e. akin to nginx or lighttpd), or an application server (i.e.
> apache, tomcat, etc)? If the former, non-blocking sockets with
> libevent or kqueue should probably be used, with mmap usable to serve
> static content, and the model would probably be single-threaded,
> single-process; and nginx is already a mature BSD-licensed solution
> for this.
httpd(8) is not a proxying HTTPd nor is it an application server. It uses
poll(2) and inetd(8), which are both fine for what it is trying to be.
> - If an application server, should it use a processes pool sharing the
> least possible, or should every application launch a multithreaded
> lua instance using a pool of threads? Can Lua handle a long-running
> multithreaded instance? Will a C daemon be needed anyway to manage
> the pool and ensure to restart any potentially crashing component?
> Would using Apache with a mod_lua, or bozohttpd with a fast-cgi style
> feature to which lua can connect be best anyway?
httpd(8) is not multi-threaded nor should it be.
> Despite being written in an interpreted language, care should be taken
> to observe input timeouts, and
> application-specific/vhost-specific/global limits such as number of
> requests to serve concurrently, input query buffer size, POST maximum
> size, etc, gracefully; security is of course not a general guarantee
> because an interpreted language is used instead of C... The language's
> reliability is also important if using a long-lived multithreaded
> model, and it must not leak (the processes pool model is more resilient
> here, but less efficient with shared resources).
I think Lua would achieve better the two stated goals: simple and secure.
- Jukka.
PS. I like httpd(8) and also use it. But if I'd need a full-blown HTTPd,
I can get one from pkgsrc.
Home |
Main Index |
Thread Index |
Old Index