免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 7959 | 回复: 5
打印 上一主题 下一主题

Net::LDAP 性能问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-09-01 21:55 |只看该作者 |倒序浏览
LDAP 数据库(本地)中有约800条记录

使用 ldapsearch 导出为 LDIF 文件,只要0.6s
而使用 Net::LDAP 模块导出,却用了6.9s

ldapsearch 导出命令:

ldapsearch -x -b 'dc=test,dc=com' -D "cn=root,dc=test,dc=com" '(objectclass=*)' -w secret > output.ldif

以下是使用 Net::LDAP 模块的 Perl 脚本ldapdump.pl

#!/usr/bin/perl


use strict;
use Net::LDAP;
use Net::LDAP::LDIF;

my $conn = Net::LDAP->new('localhost',
        port => 389, version => 3);
die "ERR: unable to connect: $!\n" if (! $conn);

my $result = $conn->bind('cn=root,dc=test,dc=com', password => 'secret');
$result->code && die("bind error: ", $result->error, "\n");

my $basedn = 'ou=users,dc=test,dc=com';

my $ldif = Net::LDAP::LDIF->new('output.ldif','w', onerror => 'undef' );
$result = $conn->search (
        base => $basedn, filter => '(objectClass=posixAccount)'
);
$result->code && die "ERR: search failed: " , $result->error , "\n";
my $count = $result->count();

my @entries = $result->entries;
my $i=-1;
while (++ $i < $count) {
    $ldif->write_entry($entries[$i]);
}
$ldif->done();
print "Total $count record found\n";



Google了一番,找到一个很好的 Perl 执行时间测试工具:Devel::NYTProf,可参考 http://tech.idv2.com/2008/12/29/perl-nytprof/

使用上述工具测试后发现慢的原因主要不在 Net::LDAP 模块本身,而是  Convert::ASN1::_decode 和 Convert::ASN1::::_decode_tl 两个函数

不知大家有没有遇到过相同的问题? 有好的解决办法没? Any reply or suggestion from u is great appreciated !

[ 本帖最后由 coolend 于 2009-9-1 22:08 编辑 ]

ldap.png (16.02 KB, 下载次数: 44)

ldap.png

论坛徽章:
0
2 [报告]
发表于 2009-09-02 16:10 |只看该作者
mark,记录模块

论坛徽章:
0
3 [报告]
发表于 2009-09-02 16:50 |只看该作者

回复 #2 andyxie407 的帖子

不太明白楼上兄弟的意思,可否详细说明一下,不胜感激 ~~~

论坛徽章:
0
4 [报告]
发表于 2009-09-15 09:30 |只看该作者

回复 #4 py 的帖子

感谢版主大人的回复!!

最近一直在网上寻找Net::LDAP性能相关的帖子和文章,的确很早以前就有人讨论这个问题,05年甚至更早,距今已有4~5年了。
CPAN上最新的 Convert::ASN1 也是去年9月15日发布的(这么巧?今天也是9月15日,整整一年了,呵呵~~~)

期待 Convert::ASN1 的下一个版本 ~~~ 早日解决这个难题。

偶对C不大熟悉,希望这篇关于 Perl 对C 的扩展接口对版主或其他兄弟有帮助:

http://www.ibm.com/developerwork ... 8_tangming_perltoc/

[ 本帖最后由 coolend 于 2009-9-15 09:49 编辑 ]

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
5 [报告]
发表于 2009-11-29 16:30 |只看该作者
看看这个,应该能解决你的问题。http://bbs3.chinaunix.net/thread-1620775-1-1.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP