每五公元查询都很慢,为什么?

我将一个FreeNAS盒绑定到AD,让学生login到SMB挂载。 这一切工作正常。

我有一个运行在FreeNAS上的bash脚本来build立一个index.html页面,指向每个学生主目录的一个子目录,在那里他们可以把完成的编码项目放到networking上供公众查看。 那也行。

该脚本为FreeNAS上的每个用户进行AD查找,并且只有在他们是学生(即CN=students组的成员)时才将其添加到index.html文件中:

 ldapsearch -Q -LLL cn=[someuser] ObjectCategory:CN=Person memberOf 

这是奇怪的部分。 大约80%的时间,AD查询立即发生。 每五分钟查找一次,完成需要75秒。 我写了一个脚本来testing这个模式是相当可重复的。 几乎总是每5次查找就要花费75秒,查找5次或者不同的名字并不重要。

如果我立即在命令行中执行ldapsearch

 ldapsearch -LLL cn=someuser 

我反复做,每五次重复都慢。 如果我通过按CtrlC中止缓慢的查询,下一次我做它又快了。

我不运行AD服务器,ADpipe理员不知道为什么会发生这种情况。 任何线索?

DNS以正确的方式configurationAFAIK – 或者至less,有关安装的其他一切似乎都能正常工作(用户可以使用AD凭证loginFreeNAS,而且这种情况发生得相当快)。 所有时钟也同步。

第五个查询可能针对另一个站点中的域控制器(请参阅https://technet.microsoft.com/en-us/library/cc782048%28v=ws.10%29.aspx ,这是针对2003 AD的,但仍然有效)。

用这样的查询:

 ldapsearch -h domaincontroller -LLL -s sub -x -W -b cn=configuration,dc=your,dc=domain -Z -D "cn=youruser,ou=container,dc=your,dc=domain" "objectclass=subnet" cn siteobject Enter LDAP Password: dn: CN=172.20.4.0/24,CN=Subnets,CN=Sites,CN=Configuration,dc=your,dc=domain cn: 172.20.4.0/24 siteObject: CN=Default-First-Site-Name,CN=Sites,CN=Configuration,dc=your,dc=domain dn: CN=172.20.0.0/16,CN=Subnets,CN=Sites,CN=Configuration,dc=your,dc=domain cn: 172.20.0.0/16 siteObject: CN=Default-First-Site-Name,CN=Sites,CN=Configuration,dc=your,dc=domain dn: CN=172.30.0.0/16,CN=Subnets,CN=Sites,CN=Configuration,dc=your,dc=domain cn: 172.30.0.0/16 siteObject: CN=London,CN=Sites,CN=Configuration,dc=your,dc=domain dn: CN=172.19.0.0/16,CN=Subnets,CN=Sites,CN=Configuration,dc=your,dc=domain cn: 172.19.0.0/16 siteObject: CN=Default-First-Site-Name,CN=Sites,CN=Configuration,dc=your,dc=domain dn: CN=172.18.0.0/16,CN=Subnets,CN=Sites,CN=Configuration,dc=your,dc=domain cn: 172.18.0.0/16 siteObject: CN=Default-First-Site-Name,CN=Sites,CN=Configuration,dc=your,dc=domain dn: CN=172.21.0.0/16,CN=Subnets,CN=Sites,CN=Configuration,dc=your,dc=domain cn: 172.21.0.0/16 siteObject: CN=New York,CN=Sites,CN=Configuration,dc=your,dc=domain dn: CN=172.23.0.0/16,CN=Subnets,CN=Sites,CN=Configuration,dc=your,dc=domain cn: 172.23.0.0/16 siteObject: CN=Default-First-Site-Name,CN=Sites,CN=Configuration,dc=your,dc=domain dn: CN=172.17.0.0/16,CN=Subnets,CN=Sites,CN=Configuration,dc=your,dc=domain cn: 172.17.0.0/16 siteObject: CN=Default-First-Site-Name,CN=Sites,CN=Configuration,dc=your,dc=domain dn: CN=172.31.0.0/16,CN=Subnets,CN=Sites,CN=Configuration,dc=your,dc=domain cn: 172.31.0.0/16 siteObject: CN=Default-First-Site-Name,CN=Sites,CN=Configuration,dc=your,dc=domain 

你可以在这个networking中看到我们有标准的“Default-First-Site-Name”对象,再加上纽约和伦敦的网站。

一旦你知道你的freenas主机在AD站点的ip范围内,你就可以在这个站点上查询dns服务器的ldap主机。 查询是这样的伦敦网站:

 dig -t srv _ldap._tcp.london._sites.your.domain +short 0 100 389 dc05.your.domain. 0 100 389 dc03.your.domain. 0 100 389 dc04.your.domain. 

在答案部分,您将看到该网站的不同ldap主机。 所以你可以使用那些。

果然,五台服务器中的一台没有响应(不知道它是否处于脱机状态,或者不存在,或者ADpipe理员将要处理的事情)。

我重写了脚本,只查询四个好的服务器(每次随机select一个),现在它立即执行!