Exchange 2019 CU12下EWS FindItems调用归档邮箱报500错误排查
Exchange 2019 CU12下EWS调用FindItems搜索归档邮箱大文件夹超时问题排查
问题相关代码
在PowerShell中通过EWS托管API绑定归档邮箱文件夹,调用.FindItems()方法执行带条件搜索的代码如下:
$ItemView = [Microsoft.Exchange.WebServices.Data.ItemView]::new(500) $SearchQuery = 'From:"V-Mail@MyDomain.com" AND HasAttachment:true AND Subject:"New vmail from"' Do { # 分页拉取项目 Try { $ItemCol = $Service.FindItems( $Inbox.Id, $SearchQuery, $ItemView ) # 不带搜索条件拉取全量项目可正常执行 # $ItemCol = $Service.FindItems( $Inbox.Id, $ItemView ) } Catch { Write-Host -ForegroundColor Red "Error occured running .FindItems()" Write-Host -ForegroundColor Red $Error[0].Message Throw } $Items += $ItemCol # 备注:不建议使用+=累加集合,可改为直接收集输出 $ItemView.Offset += $ItemCol.Items.Count $Page++ }While( $ItemCol.MoreAvailable -eq $true )
报错信息
- PowerShell端返回错误:
Exception calling "FindItems" with "3" argument(s): "Exchange Web Services are not currently available for this request because none of the Client Access Servers in the destination site could process the request."
- Exchange服务器端EWS日志核心错误:
...ErrorTimeoutExpiredException: The search operation could not be completed within the allotted time limit. Please try to narrow down your scope to reduce the result set.
日志同时记录InternalServerError,对应HTTP返回码500。
已排查确认项
- 已核查EWS限流策略,排除限流触发问题,相关配置如下:
EwsCostThreshold : 50 EwsMaxConcurrency : Unlimited EwsMaxBurst : 300000 EwsRechargeRate : Unlimited EwsCutoffBalance : Unlimited EwsMaxSubscriptions : 5000 DiscoveryMaxPreviewSearchMailboxes : 5000 DiscoveryPreviewSearchResultsPageSize : 200
- 不传搜索查询参数、直接拉取文件夹全量项目时操作可正常执行,仅执行速度偏慢
- 环境唯一已知变更为近期将Exchange升级到2019 CU12版本
- 触发错误的归档邮箱文件夹项目量超过10万,但升级前相同代码可正常运行,当时文件夹项目量已处于较高水平
- 相同代码对主邮箱内项目量远低于10万的文件夹执行无异常
- Outlook客户端使用完全相同的搜索条件检索主邮箱、归档邮箱均可正常返回结果
进一步排查方向
- 检查归档邮箱所在数据库的内容索引状态:执行
Get-MailboxDatabaseCopyStatus查看内容索引健康度,确认是否存在索引损坏、升级后增量爬网未完成的情况,内容索引异常会直接导致AQS搜索超时。 - 验证CU12版本的EWS搜索超时配置变更:CU12调整了归档邮箱场景下的EWS搜索默认超时阈值,归档邮箱的IO优先级本身低于主邮箱,当单文件夹项目量过大时,全范围AQS搜索很容易触发超时。可将现有搜索条件按时间维度拆分为多个小范围(比如按自然月/季度拆分),逐段执行搜索,如果分段后请求可正常返回,即可确认是单请求搜索范围过大触发超时。
- 检查升级后配置回退情况:Exchange累积更新安装过程中会重置部分服务端配置为默认值,重点核查大文件夹分段搜索配置、邮箱存储RPC超时配置,确认升级后这些参数是否被调整为更严格的阈值。
- 抓取CAS端EWS调试日志:跟踪失败请求的完整执行链路,确认超时发生在内容索引查询阶段,还是邮箱存储RPC请求阶段,以此区分故障点是搜索索引组件还是后端存储组件。
- 做对照测试定位问题模块:将当前基于AQS字符串的查询,替换为
SearchFilter组合条件实现相同的搜索逻辑,SearchFilter走存储层查询路径,不依赖内容索引,如果替换后请求可正常执行,说明问题出在CU12版本的内容索引查询模块兼容性上。
内容的提问来源于stack exchange,提问作者Steven
相关产品推荐
相关产品推荐

