gpt4 book ai didi

Azure 应用服务 - 在 Jetty 上运行 Solr - Azure 维护后发生 LockObtainFailedException

转载 作者:行者123 更新时间:2023-12-05 03:03:30 25 4
gpt4 key购买 nike

我正在 Azure 应用服务上运行单个(未缩放)solr 实例。应用服务运行 Java 8 和 Jetty 9.3 容器。

一切都运行得很好,但是当 Azure 决定切换到另一个 VM 时,有时 JVM 似乎不会正常关闭,我们就会遇到问题。

Azure 决定更换到另一个虚拟机的原因之一是基础设施维护。例如,安装了 Windows 更新并将您的应用程序移至另一台计算机。

为了防止停机,Azure 会启动新应用程序,当它准备就绪时,它将切换到新应用程序。看起来不错,但这似乎不太适合 solr 的锁定机制。

我们使用默认的 native lockType,这应该没问题,因为我们只运行一个实例。 Solr 应该在关闭期间删除 write.lock 文件,但这似乎并不总是发生。

Azure 诊断工具清楚地显示了此事件的发生: enter image description here

内存使用情况显示两个应用程序: enter image description here

在第二个实例 solr 启动期间尝试锁定索引,但这是不可能的,因为第一个实例仍在使用它(它也有 write.lock 文件)。有时,第一个不会删除 write.lock 文件,这就是问题的开始。如果没有手动干预(手动删除 write.lock 文件),第二个 solr 实例将永远无法正常工作。

solr 日志:

Caused by: org.apache.solr.common.SolrException: Index dir 'D:\home\site\wwwroot\server\solr\****\data\index/' of core '*****' is already locked. The most likely cause is another Solr server (or another solr core in this server) also configured to use this directory; other possible causes may be specific to lockType: native

org.apache.lucene.store.LockObtainFailedException

对此可以采取什么措施?我正在考虑将 lockType 更改为基于内存的锁,但我不确定这是否可行,因为两个实例在短时间内同时处于事件状态。

最佳答案

您可以尝试设置WEBSITE_DISABLE_OVERLAPPED_RECYCLING=1

Overlapped recycling makes it so that before the current instance on an app is shut down, a new instance starts. It can in some cases cause file locking issues, in which case you can try turning it off:

Reference

关于Azure 应用服务 - 在 Jetty 上运行 Solr - Azure 维护后发生 LockObtainFailedException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53866342/

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