2011-02-08 4 views
1

나는 SpringLDAP를 통해 modifyAttributes를 호출 할 때 LDAP의 객체가 증가함에 따라이를 수행하는 데 걸리는 시간이 증가한다는 것을 알아 챘습니다. 처음에는 LDAP의 원인이 LDAP라고 생각했지만 Ldap 감사 기능을 켜고 나니 그렇게 생각하지 않았습니다.SpringLDAP 및 ModifyAttributes의 시간 증가

ldap 객체의 seeAlso 속성에 아무 것도 추가하지 않으면 뭔가 추가하는 데 약 200ms가 소요됩니다 (자바에서는 3ms가 ldap에서 측정 됨). 그러나 seeAlso 속성에 약 1000 개의 항목이있을 때 대략 7 초 (자바에서)의 시간과 나의 LDAP 감사에서 1 초 미만을보십시오.

나는 그것이 어떤 이유로이 시간을 추가하는 것이 SpringLdap이라고 가정 할 수 있습니다. 어쨌든 나는 진정한 병목 현상이 어디 있는지 더 자세히 조사 할 수 있습니까? 아니면 이것을 막기 위해 SpringLdap을 최적화 할 수 있습니까?

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

답변

1

LDAP에서받은 응답을 로깅하는 코드가 있음을 알 수 있습니다. 개체가 증가함에 따라 기록 할 시간이 증가했습니다. 일단 이것이 제거되면 우리 문제도 마찬가지입니다.

두 번째 단계에서는 코드를 살펴보고 AttributesMapper를 사용하여 lookup/search/searchForObject를 수행하여 항상 전체 개체에 대해 LDAP를 쿼리하지 않도록했습니다. 관심있는 속성.

0

내가보고있는 것이 약간의 오류 검사를 구현하는 SpringLDAP 일지 궁금합니다.

대부분의 디렉토리 (eDirectory, Active Directory 및 아마도 OpenLDAP)에서는 다중 값 속성에 동일한 값을 두 번 추가 할 수 없습니다.

즉 MV attr acmeMyList 값이 1974 인 다음 두 번째 값 1974를 추가 할 수 없습니다. 그것은 오류의 경우입니다.

값 수가 증가하면이를 확인하는 비용이 증가하여 모델에 맞습니다.

종종 속성을 색인화하면 성능이 달라집니다. 밝혀 졌 듯이, 임의의 객체에 25 개 이상의 값이있는 속성이 있으면 eDirectory가 자동으로 색인을 추가합니다. 이는 인덱스를 유지 관리하는 비용이 속성에 값을 추가하는 비용보다 적게되기 때문입니다.