gpt4 book ai didi

tomcat - 更新solr配置重新加载tomcat

转载 作者:行者123 更新时间:2023-11-28 23:37:09 25 4
gpt4 key购买 nike

我在 tomcat 中托管 solr。我在 SOLR_DIR 下有几个核心。

当我通过在 SOLR_DIR 上的本地计算机上执行 rsync 更新服务器上的配置时(未触及 tomcat 配置文件),我观察到 tomcat 有时会自动重新加载 solr webapp。

为什么会这样?重新加载 solr webapp 导致服务器一段时间无响应。我不希望它发生。我宁愿重新加载内核以反射(reflect)更改,而无需重新启动/重新加载整个 tomcat 服务器。

最佳答案

我真的不能说 Tomcat webapp 意外重新加载,但我希望这个解决方案有助于解决问题。当您更改 solrconfig.xml 文件时,您至少需要重新加载核心才能看到更改。单独重新加载内核会导致内核在一段时间内没有响应,显然重新加载 Tomcat 会导致所有内核停机。虽然我一直在测试模式索引中这样做,但我通常发现这在生产环境中是 Not Acceptable 。

我的生产解决方案是复制。我在一台服务器上构建索引,然后将核心复制到另一台服务器上。所有索引修改都发生在构建索引中,所有生产查询都指向查询索引。当我对构建索引进行更改时,查询索引会拉取更改并保持旧数据和/或配置运行,直到新版本准备就绪,然后交换更改,不会检测到停机时间 .这也是一个很好的负载平衡框架,因为您可以有多个复制的查询服务器。

确保您希望能够根据实时索引更改的任何 conf 文件都配置为在复制配置中进行复制。这对于 solr 配置来说有点棘手,因为复制配置在 solrconfig.xml 中,并且如果您将构建核心设置为 master,将查询核心设置为 slave,一旦它复制查询核心将拉取构建核心的配置。然后它会认为自己是主人并停止复制任何 future 的变化。

我使用 this solution ,它使用变量在 solr 配置中设置复制,然后在核心的 conf 中的非复制 solrcore.properties 文件中为这些变量提供值> 文件夹。

来自 solrconfig.xml

<requestHandler name="/replication" class="solr.ReplicationHandler" >
<lst name="master">
<str name="enable">${enable.master:false}</str>
<str name="replicateAfter">startup,optimize</str>
<str name="confFiles">schema.xml,solrconfig.xml,protwords.txt,synonyms.txt</str>
</lst>
<lst name="slave">
<str name="enable">${enable.slave:false}</str>
<str name="masterUrl">${master.url}</str>
<str name="pollInterval">01:00:00</str>
</lst>
</requestHandler>

solrcore.属性:

enable.master=true
enable.slave=false
master.url=http://myserver.hostname/solr/coreName/replication

请注意,您插入到 solrconfig.xml 但未能为其提供值的任何变量都将导致核心无法加载。

关于tomcat - 更新solr配置重新加载tomcat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23654844/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com