Tomcat7 / Solr在“即时”加载下崩溃?

我是solr的新手,我正在加载testing我们的设置,看看我们能处理什么。 我正在使用solrmeter,我的问题有点奇怪:

  • 当我设置solrmeter运行8000查询/分钟,它将处理几百个查询,然后tomcat将停止响应完全的请求(即使根据lsof -i它仍然在监听和Java进程仍在运行)。
  • 当我设置solrmeter运行1000查询/分钟它运行良好。 几分钟后我可以停止solrmeter,然后运行8000 / min没有问题。

这就好像它需要一个加速时间? 另外,我注意到(不pipe渐增),我的设置不能处理12000 /分钟。 12k / min的反应速度与没有斜升的情况下运行8k / min相同。 值得注意的是,只有solrmeter指向的碎片停止响应。 另一块碎片嗡嗡声没有发生。

设置(AWS中的所有内容):

  • 运行tomcat7 + solr 4.2.0(open-jdk-7-headless)的2x m1.large(7.5Gb RAM):Ubuntu 12.04
  • 1x m1.micro运行zookeeper 3.4.5:Ubuntu 12.04

我的solr / tomcat7configuration绝大多数是默认的ubuntu的包/ solr的例子。 这里是configuration和catalina.out文件的结尾: https : //gist.github.com/anonymous/ef8fa79ecc1673d11bc0

我将solrmeter控制台(stderr和stdout)redirect到一个文件。 它是一个大日志(67Mb): https ://docs.google.com/file/d/0BwPYmFCfmBYsU1hDWjlkUGdGTlU/edit ? usp =分享

我的主要问题有两个:

  1. 这是正常的行为的tomcat(只是停止响应完全),当它不堪重负? 唯一的select是重新启动它?
  2. 为什么在处理更less的查询时处理得更好,然后将其加大? 它让我担心,如果我不得不在集群中重新启动一台服务器,并将其扔到机器池中,事情就会爆炸。

当tomcat被冻结时,可以运行2-3次,每次2-3分钟。 你可以分析它们并找出tomcat正在做什么。

您可以使用JDK附带的jvisualvm来查看堆使用情况是否不高,还可以获取线程转储。

这个解决scheme最终成为连接器上的maxThreads。 把它提高到比默认(200)更高的数量(10000),Solr(和Tomcat)可以更好地处理“即时”负载。