我使用Windows附带的WinLDAP.DLL连接到不同的OpenLDAP服务器(1x OpenLDAP,1x Active Directory)。编程语言是Delphi,但在这里可能与此无关。
在一些配置中,当使用服务器名而不是IP地址时,调用"ldap_connect“的速度非常慢(6-7秒)。敲击或查找同一台服务器并不慢。为什么只有ldap连接速度慢呢?有什么东西我可以检查以找出问题吗?
编辑:WMware在我的计算机上安装了两个虚拟以太网适配器。如果我去激活那些适配器,ldap_connect的速度会快2-3倍。这并不能完全解决这个问题,但它可能有助于找到一个解释。
发布于 2012-12-10 11:52:58
这几乎肯定是DNS配置错误。检查您的nslookup和反向查找时间。
发布于 2012-12-10 15:52:24
LDAP服务器执行反向DNS查找的可能性很大。
发布于 2013-04-22 09:02:15
我仍然不知道,如果我使用服务器名而不是IP地址,为什么连接比较慢。但是为了解决这个问题,我决定自己解决IP地址,而不是让WINLDAP.dll来解决。
它可以简单地通过使用这样的函数来实现:
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;https://stackoverflow.com/questions/13800399
复制相似问题