如何限制索引时SOLR所做的数据库连接数?

时间:2012-12-03 20:02:06

标签: mysql database solr lucene

您可以增加数据库允许的数据库连接数,但这不是真正的解决方案。如果SOLR在建立索引时会建立很多连接,那么您站点的其他部分可能会开始“#34;连接太多而且#34;”这样做并不好。

实际上,SOLR完全导入会产生如此多的连接,以至于150个最大连接失败了。

以下是一些统计数据: 1)我启动完全重建索​​引 2)之后几秒钟:

mysql> SHOW PROCESSLIST;

| Id  | User       | Host            | db         | Command | Time |
| 158 | xxx | localhost:58804 | yyy | Query   |    0 |
| 159 | xxx | localhost:58810 | yyy | Sleep   |    3 |
| 160 | xxx | localhost:58811 | yyy | Sleep   |    1 |
| 161 | xxx | localhost:58812 | yyy | Sleep   |    1 |
...
| 255 | xxx | localhost:58906 | yyy | Sleep   |    0 |
| 256 | xxx | localhost:58907 | yyy | Sleep   |    0 |

3)导入因以下原因失败:

  

引起:com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:连接太多

我没有在solrconfig.xml中找到一个参数来解决这个问题。顺便说一下SOLR版本是1.3。

非常感谢!

P.S。更多信息:在日志中我看到:

INFO: Creating a connection for entity abc with URL: jdbc:mysql://10.0.2.2/xyz
INFO: Time taken for getConnection(): 9

这会重复数百次,直到达到我的本地最大连接数限制(151)并出错。我不知道为什么SOLR为每个实体打开一个新的连接。我希望这是可以修复的,因为它看起来不像是正确的行为。有谁知道升级到1.4或4.0是否可以解决这个问题?

再次感谢!

P.P.S。我还要加一个猜测。它只为每个实体或子实体打开一个连接:我拥有的结构是一个巨大的实体和超过160个子实体。 并且http://mail-archives.apache.org/mod_mbox/lucene-solr-user/201205.mbox/%3CA1EB2532250E8945BC3E1FA3AE836F6BE1118F18@adonia.local.uship.com%3E说solr有一个错误...如果有人知道其他修复,那么升级,请告诉。

0 个答案:

没有答案