在执行将TFS服务器升级到2018 Update 2后,我们的一个环境中的搜索和索引似乎被破坏了。
任何搜索都会给出“我们在处理您的请求时遇到了意外错误”,我已经通过所有故障排除文档来清理和重新索引所有集合。还将搜索包完全重新安装到我们运行的单独服务器上进行搜索和索引,以确保我们运行了正确的版本。
在TFS App Server上的事件日志中,记录了大量这些异常:
事件(81277)已完成,状态为FailedAndRetry。事件81277已完成,消息为'BeginBulkIndex-PushEventNotify:由于异常Microsoft.VisualStudio.Services.Search,操作未成功完成。Common. FeederException:Elasticsearch拒绝了大量文件,导致此作业失败。失败原因:Microsoft.VisualStudio.Services.Search。Common.SearchPlatformException:ES异常:[HTTP状态代码:[200]BULK_API_ERROR:[index返回404_index:codesearchshared_1_0_type:SourceNoDedupeFileComptV3_version:0错误:类型:type_missing_exception原因:"type[SourceNoDedupeFileComptV3]丢失"
另一种异常类型也记录了很多次,表明未能索引工作项:
Microsoft.VisualStudio.Services.Search. Common.SearchPlatformException:ES异常:[HTTP状态码:[200]BULK_API_ERROR:[update返回404_index:workitemsearchshared_0_2_type:workItem合同_version:0错误:Type:type_missing_exception原因:"type[workItem合同]缺失"update返回404_index:workitemsearchshared_0_2_type:workItem合同_version:0错误:Type:type_missing_exception原因:"type[workItem合同]缺失"
异常似乎表明缺少某些类型的注册,例如workItem合同和SourceNoDedupeFileComptV3,但我在搜索服务器安装日志中找不到任何错误。
有人对如何解决这个问题并让弹性搜索恢复工作状态有一些建议吗?
我们通过完全卸载然后重新安装与搜索相关的所有内容来解决这种情况。
>
重启TFS作业代理服务
从所有集合数据库中删除旧的搜索相关数据库内容,使用
从[搜索]中删除[tbl_IndexingUnit]
从[搜索]中删除[tbl_IndexingUnitChangeEvent]
从[搜索]中删除[tbl_IndexingUnitChangeEventArchive]
从[搜索]中删除[tbl_JobYield]
从[搜索]中删除[tbl_TreeStore]
从[搜索]中删除[tbl_DisabledFiles]
从[搜索]中删除[tbl_ItemLevelFailures]
从[搜索]中删除[tbl_ResourceLockTable]
重启TFS作业代理服务
重启搜索服务器
使用现有搜索服务器从TFS管理控制台运行配置搜索功能向导
根据PowerShell脚本的说明安装搜索包
.\配置-TFSSearch. ps1-操作安装-TFSSearchInstallPath D:\ES-TFSSearchIndexPath D:\ESDATA-端口9200-详细
从TFS管理控制台完成搜索配置向导,启用所有现有集合的代码搜索
检查服务是否正在运行并测试从Web应用程序搜索,它可以工作!
根据您的错误信息和TFS版本,此问题类似于升级到TFS 2018 Update 2后无法开始搜索
尝试以下问题中的解决方案:
似乎我有一个无效的/有问题的设置在以下reg键更新/安装没有修复。
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Apache Software Foundation\Procrun 2.0\elasticsearch-service-x64\参数\Java\选项
包含的值:
-Xms0m-Xmx0m
从“0m”更改为“1g”解决了这个问题。据我所知,“0m”默认为4GB,这可能会与我只有2,8 GBRAM的服务器发生冲突。我会升级服务器以满足最低要求。
也许配置工具可以警告这个问题或将值设置为可能的值。
另请查看这篇文章,这可能会有所帮助:Elasticsearch 6.2.2无法作为Windows服务运行
[此帖指azuredevops服务器2019到2020升级]
对于任何搜索,我还得到了“我们在处理您的请求时遇到了意外错误”-这是在将azuredevops服务器2019迁移到2020之后的新框(无法在同一框上执行升级)
http://localhost:9200/_cat/health?v显示唯一的集群TFS_Search_AZURE-DEVOPS处于红色状态
在我的特殊情况下,所有内容都在同一个框中-Windows 2019 sql server 2019搜索服务
遵循Per Salmi的指示,不幸的是,这并没有解决问题。
在我的情况下,解决方案是重建弹性搜索索引(详细信息和脚本):
若要重新索引Git或TFVC存储库,请为具有管理权限的Azure运营模式服务器或TFS版本执行相应版本的脚本Re-IndexingCodeReposory. ps1。系统会提示您输入:[括号中的我的值]
Azure运营模式服务器或TFS配置数据库所在的SQL服务器实例名称为[azure-devops]
Azure运营模式服务器或TFS集合数据库的名称[Tfs_DefaultCollection]
Azure运营模式服务器或TFS配置数据库的名称[Tfs_Configuration]
要执行的重新索引类型。可以是以下值之一:Git_RepositoryTFVC_Repository[Git_Repository]
集合的名称[DefaultCollection]
要重新索引的存储库的名称。[
若要重新索引集合,请以管理权限执行脚本TriggerCollection. ps1。系统会提示输入:[括号中的值]
Azure运营模式服务器或TFS配置数据库所在的SQL服务器实例名称[azure-devops]
Azure运营模式服务器或TFS集合数据库的名称[Tfs_DefaultCollection]
Azure运营模式服务器或TFS配置数据库的名称[Tfs_Configuration]
集合名称[DefaultCollection]
要重新索引的实体。可以是以下值之一:All Code WorkItem Wiki[All]
上面的脚本放置了通常需要几分钟才能完成的重新索引作业。
执行后,我得到了一个令人鼓舞的“我们无法显示结果,因为您组织中的一个或多个项目仍在被索引”
几分钟后,结果开始出来,http://localhost:9200/_cat/health?v显示唯一的集群TFS_Search_AZURE-DEVOPS处于绿色状态