저도 100만 엔트리 정도를 운영하고 있는데 속도상의 불편함은 전혀 느끼지 못하고 있습니다.
다음은 점검해 보세요.
1. 필터를 어떻게 주었나요?
(&(uid=hurd)(objectClass=posixAccount))
와 같이 전체 문자열을 넘겨 주었나요, 아니면 (uid=*hurd*) 와 같이 부분문자열을 넘겨 주었나요?
2. 필터가 위와 같다고 할 때 uid 속성이 인덱스에 걸려 있나요? 걸려 있다면, 어떤 유형으로 설정되어 있나요? pres, eq, sub 등이 모두 설정되어 있나요? 아니면 eq 만 걸려 있는데, sub 로 검색하신 건가요?
또, slapd.conf 에 인덱스가 잡혀있지만, 실제 디렉토리에도 인덱스가 만들어져 있나요?
디렉토리를 살펴보고 인덱스별로 파일이 존재하는지 확인해 보세요.
3. scope 와 base dn 은 어떻게 지정해 주었나요?
ldapsearch -s sub -b "dc=coredump,dc=co.kr" (uid=hurd)
과 같이 서브트리를 모조리 검색하는 방식인가요, 아니면
ldapsearch -s base -b "ou=People,ou=company,dc=coredump,dc=co.kr" (uid=hurd)
와 같이 scope 를 충분히 좁혔나요?
4. 디렉토리가 있는 디스크는 충분히 빠른가요? 또, 메모리는 충분한가요? 지금 처럼 50만 건 이상의 엔트리를 운영하고 있다면 빠른 스카시 디스크를 전용 파티션으로 할당하세요. 메모리는 다다익선입니다. 인덱스와 캐시를 충분히 수용할 수 있는 충분한 크기인지 확인하세요. 가능하다면 램디스크를 한번 고려해보세요. 그리고 파일 시스템도 점검해 보세요.
5. cachesize 와 dbcachesize 는 충분히 잡아주었나요? slapd.conf 의 설정 사항을 확인하시고 그 값을 충분히 늘려주세요.
6. 디렉토리는 잘 설계되어 있나요? 구조적인 어떤 문제가 있지는 않으지 스키마 구조를 확인해 보세요.
7. 그럴리야 없겠지만, 혹시 slapd 를 디버깅 모드로 열어두신 것은 아닌지 확인해보세요. (저는 예전에 한번 그런 적이 있답니다.. -_-;;)
8. 로그를 남기고 있다면 로그를 확인해 보세요. 어떤 절차로 검색이 진행되었는지 확인해 볼 수 있습니다. 그 기록을 토대로 검색 필터 등을 재 조정해 보세요.
9. 혹시 오래된 버전을 사용하고 계신다면 최신 버전으로 업그레이드하세요.
openldap 을 사용하신다면 대충 이 정도를 점검해 보세요.
>>송지훈 님께서 쓰시길<<
:: 제가 50만건의 데이터를 입력해 놓고 search해본 결과 시간이 너무 오래 걸리더라구요.
::
:: 거의 50만번째 데이터는 1분이 넘어가 버리고.. T.T
::
:: 인덱스도 해주고 했는데...
::
:: 제가 뭘 잘못 했는지. 아님 원래 그런건지...
::
:: openldap은 search가 빠르다고 했는데...
::
:: 아무래도 제가 뭘 잘못 사용 했나봅니다..
::
:: 고수님들의 조언 부탁드립니다.
|