首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么ldap_connect慢?

为什么ldap_connect慢?
EN

Stack Overflow用户
提问于 2012-12-10 11:50:59
回答 3查看 1K关注 0票数 0

我使用Windows附带的WinLDAP.DLL连接到不同的OpenLDAP服务器(1x OpenLDAP,1x Active Directory)。编程语言是Delphi,但在这里可能与此无关。

在一些配置中,当使用服务器名而不是IP地址时,调用"ldap_connect“的速度非常慢(6-7秒)。敲击或查找同一台服务器并不慢。为什么只有ldap连接速度慢呢?有什么东西我可以检查以找出问题吗?

编辑:WMware在我的计算机上安装了两个虚拟以太网适配器。如果我去激活那些适配器,ldap_connect的速度会快2-3倍。这并不能完全解决这个问题,但它可能有助于找到一个解释。

EN

回答 3

Stack Overflow用户

发布于 2012-12-10 11:52:58

这几乎肯定是DNS配置错误。检查您的nslookup和反向查找时间。

票数 1
EN

Stack Overflow用户

发布于 2012-12-10 15:52:24

LDAP服务器执行反向DNS查找的可能性很大。

票数 1
EN

Stack Overflow用户

发布于 2013-04-22 09:02:15

我仍然不知道,如果我使用服务器名而不是IP地址,为什么连接比较慢。但是为了解决这个问题,我决定自己解决IP地址,而不是让WINLDAP.dll来解决。

它可以简单地通过使用这样的函数来实现:

代码语言:javascript
复制
function GetIPAddress(const HostName: AnsiString): AnsiString;
var
  HostEnt: PHostEnt;
  Host: AnsiString;
  SockAddr: TSockAddrIn;
begin
  Result := '';
  Host := HostName;
  if Host = '' then
  begin
    SetLength(Host, MAX_PATH);
    GetHostName(PAnsiChar(Host), MAX_PATH);
  end;
  HostEnt := GetHostByName(PAnsiChar(Host));
  if HostEnt <> nil then
  begin
    SockAddr.sin_addr.S_addr := Longint(PLongint(HostEnt^.h_addr_list^)^);
    Result := inet_ntoa(SockAddr.sin_addr);
  end;
end;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13800399

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档