2011-02-08 10 views
1

私は、SpringLDAPを介してmodifyAttributesを呼び出すと、LDAPのオブジェクトが増えるにつれて、これを行うのにかかる時間が長くなることに気付きました。最初は私がこれを引き起こしていたのはLDAPだと思っていましたが、Ldapの監査を有効にした後、そうではなかったことに気付きました。SpringLDAPとModifyAttributesの時間の増加

私はldapオブジェクトのseeAlso属性に何も持たない場合、何かを追加するには約200msかかる(Javaでは3msがldapで計測される)が、seeAlso属性に約1000個のアイテムがあると、私のLDAP監査で約7秒(Javaの場合)、1秒未満の時間を参照してください。

私はそれが何らかの理由でこの時間を追加するのはSpringLdapだと仮定することができます。とにかく、真のボトルネックがどこにあるかを調べるためにさらに調査することができますか、またはこれを避けるためにSpringLdapを最適化できますか?

DirContextOperations ctx = ldapTemplate.lookupContext(organizationalRole.getDn());  
ctx.addAttributeValue(LdapConstants.ATTR_SEEALSO, applicationRoleDN.toString()); 
ldapTemplate.modifyAttributes(ctx); 

答えて

1

私たちがLDAPから返信した応答をログに記録するコードがありました。オブジェクトが増加するにつれて、ログに記録する時間が増加しました。これが取り除かれた後は、私たちの問題でした。

2番目の手順として、コードを調べて、AttributesMapperを使用してlookup/search/searchForObjectを実行して、オブジェクト全体のLDAPを常に照会しないようにしました私たちが興味を持っている属性。

0

あなたが見ているものがSpringLDAPでエラーチェックを実装しているのだろうかと思います。

ほとんどのディレクトリ(eDirectory、Active Directory、おそらくOpenLDAP)では、複数の値の属性に同じ値を2回追加することはできません。

つまり、値1974を持つMV attr acmeMyListを持つことはできません。次に、値1974を追加します。それはエラーの場合です。

値の数が増えると、これを確認するためのコストが増加し、モデルに合ったものになります。

多くの場合、属性のインデックスを作成するとパフォーマンスが変わります。結果として、任意のオブジェクトに25を超える値を持つ属性がある場合、eDirectoryは自動的にインデックスを追加します。これは、索引を維持するコストが属性に値を追加するコストよりも少なくなるためです。

関連する問題