On 30/11/2010 11:15, Bob MacCallum wrote:
I would run it in a separate back-end apache and use mod_proxy and
ProxyPass directives in your existing front-end apache (some
recompilation may be necessary - configure options "--enable-proxy"
"--enable-proxy-ajp" - the latter is for a tomcat backend)
I agree with Bob here, unless your biomart is very small I would say
that you can do it - but DON'T you will find that the performance of
your webserver will drop considerably! Also Mart can be very easily
DoSed by legitimate users of the web interface (or more increasingly the
services interface)
This is the experince the Ensembl team had. They actually run mart under
its own dedicated webservers (and they struggle with the huge demands
for memory of a large biomart) - but the server serving mart ONLY serves
mart dynamic content (it doesn't even serve mart static content) which
is handled by the main ensembl servers. The team had to limit the number
of children on the BioMart instances to no more than 15-20 children due
to extreme memory requirements of the BioMart system for a large mart,
otherwise the instances would run out of memory (and these are 16/32 G
machines) - they still do if users generate weird queries - the servers
both backend databases servers and frontend MySQL servers are regularly
DOSed by legitimate users using the web interface. We have also recently
noticed other DOS attacks on martservice URLs where in efficiently
written queries are generating large numbers of small queries for whom
the backend MySQL backs up - and so delays responses to the martservice
request - e.g. requests which look for genes overlapping a region from
within a given list - each return on average 10 bytes of data - but each
request actually takes somewhere between 15 seconds and 2 minutes to
return because of constraints on the MySQL tables....
James