Isolating The Search Engine

Searching and indexing can be resource-intensive processes. Co-locating solr with the Content Engine can therefore sometimes prove to be a bad idea, especially in the case of presentation hosts, which may need to respond to large numbers of simultaneous searches and ordinary document requests. However, since the Content Engine, solr and the indexer are all independent web applications that communicate via standard, stateless HTTP requests, you can locate them wherever you want in order to achieve the best possible load distribution.

The following sections describe two different ways of isolating the search engine:

  • Running the search engine in a separate webapp container.

  • Running the search engine on a separate host.

For a production system you should never use the default configuration where solr runs in the same webapp container as the Content Engine. The reason for this is that solr can at times consume large amounts of memory and trigger large garbage collection operations in the JVM, which has severe effects on Content Engine performance. At production installations, solr must be run in a separate JVM from the Content Engine if you don't want to run into unnecessary performance problems. The simplest way to achieve this is to run it in a separate webapp container (that is, a separate Tomcat instance) as described in Search Engine in Separate Container.