The Lucene search need too much memory on large instance with large index. Some readers are stored on thread locals, these readers have unlimited buffers which is quite dangerous.
The solution is to delegate the search to a thread pool, the readers are limited to the thread locals of this pool and don't contaminate the threads which Tomcat use for the requests. The second part is to update Lucene to a version greater than 4.4 where the buffers are limited to a max. size of 32k.