Hi Nicolas, Because of the fact that I needed an neko application server capable to instantiate only once given module and pass any requests to its 'cached function', but do not make new module instance when more incoming requests are coming and the current module instance is busy with handling other ones.
Therefore I've made a quick re-write of the whole tora server: http://github.com/outbounder/org.abn.uberTora It handles the requests in more straightforward fashion, where for every request there is an worker thread handling it. Because of the fact that http is stateless protocol, one thread can be re-used for other pending requests when it is free accordingly. Currently I've tested the implementation by firing up 600 requests at the same time to an cached application within uberTora with 200 running threads and the response time was quite impressive indeed, where there were no exceptions or any other problems found (in current tora implementation there were found such blocking onces). Detailed reports and further bug fixing (there should be some bugs still left) will be made upon demand :) Kind regards, Boris PS. tora_admin is still useful because I've tried to keep the initial tora implementation scope unchanged, thus and its stats :) I didn't made any benchmark tests on the server side though... > Date: Mon, 18 Jan 2010 19:23:02 +0100 > From: Nicolas Cannasse <[email protected]> > Subject: Re: [Neko] mod_tora asynch requests to cached modules > To: Neko intermediate language mailing list > <[email protected]> > Message-ID: <[email protected]> > Content-Type: text/plain; charset=ISO-8859-1; format=flowed > > Obi a écrit : >> Hi all, >> I've been playing around with mod_tora neko application server >> compiled from 1.8.1 sources. It is working just fine except that I >> wonder why and how exactly >> the server loads new module instance where it had been initially >> started with "Web.cacheModule(Main.handleRequests);" > > If there are several simultaneous requests, Tora will allocate > additional instance. That means that you can have up to N instance in > memory, where N is your number of threads. > >> What is problematic for me is that when I fire up 200 asynch requests >> upon that cached module, the tora server just hangs for awhile, which >> blocks any other requests to other modules within the tora server to >> be executed. > > Yes, that's normal, there is currently no way to maximimize the number > of threads used for given service. You'll have to run one tora server > per-service (on same machine, different ports) and configure Apache so > it connect on the good server/port depending on the service. > >> And if yes - how is possible to wire up persistent/cached neko >> application within mod_tora? By having one tora server per every >> application? Or by forking new version of tora capable to handle large >> amount of requests at the same time? > > You can host persistent data among several instance with the new api > tora.Share, see http://ncannasse.fr/blog/tora_comet > > Best, > Nicolas -- Neko : One VM to run them all (http://nekovm.org)
