Hi, I am trying to avid the somewhat costly startup overhead of launching a separate R executable for each "client" request on Linux. My current architecture is such that My Java client explicitly calls R in batch mode and passes it certain parameters. The initital startup takes almost 10 seconds because R has to load a bunch of libraries as well as a moderately large, previously created workspace. I am thinking that it would be so much more eficient to instead have R act as a server and fork off a thread for each client query. Is that possible at all ? Thanks! Markus
On Tue, Apr 24, 2007 at 02:15:43PM -0400, Markus Loecher wrote:> Hi, > I am trying to avid the somewhat costly startup overhead of launching > a separate R executable for each "client" request on Linux. > My current architecture is such that My Java client explicitly calls > R in batch mode and passes it certain parameters. The initital > startup takes almost 10 seconds because R has to load a bunch of > libraries as well as a moderately large, previously created workspace. > I am thinking that it would be so much more eficient to instead have > R act as a server and fork off a thread for each client query. Is > that possible at all ?Yes. Google for RServe -- headless R server, has Java interface RApache -- R added to Apache Hth, Dirk -- Hell, there are no rules here - we're trying to accomplish something. -- Thomas A. Edison
Hi Markus, Take a look at RSOAP (http://rsoap.sf.net). It was designed for handling concurrent client connections to R, and minimizes the per- connection startup time by pre-starting R and forking of processes as requests come in. Each client can maintain a stateful connection, if desired. -G On Apr 24, 2007, at 2:15PM , Markus Loecher wrote:> Hi, > I am trying to avid the somewhat costly startup overhead of launching > a separate R executable for each "client" request on Linux. > My current architecture is such that My Java client explicitly calls > R in batch mode and passes it certain parameters. The initital > startup takes almost 10 seconds because R has to load a bunch of > libraries as well as a moderately large, previously created workspace. > I am thinking that it would be so much more eficient to instead have > R act as a server and fork off a thread for each client query. Is > that possible at all ? > > Thanks! > Markus > > ______________________________________________ > R-help at stat.math.ethz.ch mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting- > guide.html > and provide commented, minimal, self-contained, reproducible code.
RWebServices http://wiki.fhcrc.org/caBioc/ offers a more structured approach to this -- map R functions and data classes to their Java representation, expose Java as a web service, service requests using persistent R workers. Martin Markus Loecher <markus at insightfromdata.com> writes:> Hi, > I am trying to avid the somewhat costly startup overhead of launching > a separate R executable for each "client" request on Linux. > My current architecture is such that My Java client explicitly calls > R in batch mode and passes it certain parameters. The initital > startup takes almost 10 seconds because R has to load a bunch of > libraries as well as a moderately large, previously created workspace. > I am thinking that it would be so much more eficient to instead have > R act as a server and fork off a thread for each client query. Is > that possible at all ? > > Thanks! > Markus > > ______________________________________________ > R-help at stat.math.ethz.ch mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code.-- Martin Morgan Bioconductor / Computational Biology http://bioconductor.org