记录一次AD域控查询性能优化
一. 背景
公司有数十万IP话机终端, 通话(拨打或来电)时使用LDAP查询微软AD轻型目录服务中的联系人数据, 业务场景要求第一高并发, 大概3000-5000并发, 第二需要及时响应, 话机终端默认大概3-5秒无法获取结果则认为失败, 使用话机默认配置(型号方位x3s),以及默认微软域控配置, 在并发达到1000左右时,出现严重CPU性能问题(8核,平均90%以上).
二.故障排查
首先问度娘, 给出微软的官方文档, 排查Lsass.exe性能问题方法, 如文档截图如下:

分析结果显示cpu忙碌, 见下图

不过在Active Directory中的搜索栏位, 发现一点点端倪, 就下图, 过滤时出现了很多除了电话号码以外的字段

随即继续啃微软的文档, 发现了有一篇介绍如何创建高效查询,链接:Creating More Efficient Microsoft Active Directory-Enabled Applications | Microsoft Learn
按照其中的说法,优化了逻辑与的写法,见下图案例,不过貌似对性能优化作用不大

继续翻看微软的文档, 找到一篇与LDAP查询优化直接有关的, 其中第一段就是上面的,内容, 重点在下面部分, 添加索引, 如下图:

but 如何给属性设置索引呢, 文档竟然没讲, 翻来覆去, 官方文档上竟然没有, 最后借助一个国外老哥十年前的博客搞定了, 这是链接:Indexing in Active Directory - Microsoft Community Hub, 具体配置步骤如下图:
第一步:

第二步:

第三步: 文件-->添加/删除管理单元
第四步: 选择"Active Directory"
第五步: 选择属性-->telephoneNumber, 见下图

第六步:设置索引

到此, 完成, LDAP查询性能优化完成, 效果非常棒!!!!!

浙公网安备 33010602011771号