Load balancing Umbraco检查文件锁定Azure应用程序服务

Load balancing Umbraco检查文件锁定Azure应用程序服务,load-balancing,umbraco8,examine,Load Balancing,Umbraco8,Examine,我们正在一系列负载平衡的Azure应用程序服务中运行一个Umbraco 8.1.5网站,其中一个实例中存在Examine/Lucene文件锁定问题。我们已尝试将Inspect升级到1.0.2,但仍然没有帮助 据我所见,我们遵循了所有文档,将Umbraco设置为在Azure应用程序服务负载平衡环境中运行 是否有人在Azure应用程序服务中使用了可缩放/自动缩放的Umbraco 8进行负载平衡 应用程序服务 管理-一个实例,无自动缩放 前端-缩放为两个实例 在一个前端服务器上,我们访问外部索引的搜索

我们正在一系列负载平衡的Azure应用程序服务中运行一个Umbraco 8.1.5网站,其中一个实例中存在Examine/Lucene文件锁定问题。我们已尝试将Inspect升级到1.0.2,但仍然没有帮助

据我所见,我们遵循了所有文档,将Umbraco设置为在Azure应用程序服务负载平衡环境中运行

是否有人在Azure应用程序服务中使用了可缩放/自动缩放的Umbraco 8进行负载平衡

应用程序服务 管理-一个实例,无自动缩放 前端-缩放为两个实例

在一个前端服务器上,我们访问外部索引的搜索控制器正在工作,但在另一个实例上,它错误地说索引文件已锁定。下面提供了错误消息

如果我们在前端扩展到单个实例,搜索将一直有效

安装程序 服务器角色 管理web.config应用程序设置

<add key="UmbracoServerRegistrar" value="master" />
<add key="UmbracoServerRegistrar" value="slave" />
登记员

public class FrontEndReadOnlyServerRegistrar : IServerRegistrar
{
    public IEnumerable<IServerAddress> Registrations
    {
        get { return Enumerable.Empty<IServerAddress>(); }
    }
    public ServerRole GetCurrentServerRole()
    {
        return ServerRole.Replica;
    }
    public string GetCurrentServerUmbracoApplicationUrl()
    {
        return null;
    }
}
公共类FrontEndReadOnlyServerRegistrator:IServerRegistrator
{
公共数字注册
{
获取{return Enumerable.Empty();}
}
公共服务器角色GetCurrentServerRole()
{
返回ServerRole.Replica;
}
公共字符串GetCurrentServerUmbracoApplicationUrl()
{
返回null;
}
}
公共类MasterServerRegistrator:IServerRegistrator
{
公共数字注册
{
获取{return Enumerable.Empty();}
}
公共服务器角色GetCurrentServerRole()
{
返回ServerRole.Master;
}
公共字符串GetCurrentServerUmbracoApplicationUrl()
{
返回null;
}
}
Lucene应用程序设置

错误消息 错误1

无法为队列项目编制索引,该索引当前已锁定

错误2

System.ApplicationException:无法使用提供的lucene目录创建索引搜索程序-->lucene.Net.index.CorruptIndexException:段的文档计数不同_x6:fieldsReader显示40,但segmentInfo显示41

错误3

Lucene.Net.Store.lockActainFailedException:锁获取超时:SimpleFSLock@D:\home\site\wwwroot\App\u Data\TEMP\testerindexes\External\write.lock

提前谢谢


Andy

需要在Azure门户的配置页面中设置网站禁用重叠回收设置。把它放在web.config中对你没有帮助


我认为8.4中的锁定问题有很多改进,因此尝试升级到至少8.4.x.

我最初确实这么认为,但当我查看应用程序服务应用程序设置的位置时,发现它们可以在web.config或Azure门户中使用。只是如果它们在门户配置中,它们会覆盖web.config.Hi中的任何内容。我又遇到了同样的问题,并且认为我只需要将设置放在web.config中。直到我将设置放入门户,问题才停止。
public class FrontEndReadOnlyServerRegistrar : IServerRegistrar
{
    public IEnumerable<IServerAddress> Registrations
    {
        get { return Enumerable.Empty<IServerAddress>(); }
    }
    public ServerRole GetCurrentServerRole()
    {
        return ServerRole.Replica;
    }
    public string GetCurrentServerUmbracoApplicationUrl()
    {
        return null;
    }
}
public class MasterServerRegistrar : IServerRegistrar
{
    public IEnumerable<IServerAddress> Registrations
    {
        get { return Enumerable.Empty<IServerAddress>(); }
    }
    public ServerRole GetCurrentServerRole()
    {
        return ServerRole.Master;
    }
    public string GetCurrentServerUmbracoApplicationUrl()
    {
        return null;
    }
}
<add key="WEBSITE_DISABLE_OVERLAPPED_RECYCLING" value="1" />
<add key="umbracoLocalTempStorage" value="EnvironmentTemp" />
<add key="Umbraco.Core.LocalTempStorage" value="EnvironmentTemp" />
<add key="Umbraco.Examine.LuceneDirectoryFactory" value="Examine.LuceneEngine.Directories.SyncTempEnvDirectoryFactory, Examine" />