성능 튜닝 가이드

Red Hat Directory Server 11

Directory Server의 성능 튜닝

Marc Muehlfeld

Red Hat Customer Content Services

Petr Bokoč

Red Hat Customer Content Services

Tomáš Čapek

Red Hat Customer Content Services

Ella Deon Ballard

Red Hat Customer Content Services

초록

이 가이드에서는 서버 및 데이터베이스 성능을 개선하기 위한 팁을 제공합니다.

오픈 소스를 보다 포괄적으로 만들기

Red Hat은 코드, 문서 및 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 먼저 마스터(master), 슬레이브(slave), 블랙리스트(blacklist), 화이트리스트(whitelist) 등 네 가지 용어를 교체하고 있습니다. 이러한 변경 작업은 작업 범위가 크므로 향후 여러 릴리스에 걸쳐 점차 구현할 예정입니다. 자세한 내용은 CTO Chris Wright의 메시지를 참조하십시오.

1장. Directory Server Performance Tuning 소개

이 문서에서는 관리자가 Red Hat Directory Server 배포의 성능을 최적화하는 데 사용할 수 있는 몇 가지 절차와 옵션을 제공합니다. Directory Server 인스턴스 튜닝은 시스템 환경, 디렉터리 크기 및 데이터 유형, 로드 및 네트워크 사용의 차이, 사용자와 클라이언트가 수행하는 작업 유형에서도 각 서버에 고유한 성능 튜닝입니다.
이 가이드의 목적은 Red Hat Directory Server가 서버 및 데이터베이스 성능을 추적하고 평가하기 위해 제공하는 기능을 강조하기 위한 것입니다. 서버 성능을 튜닝하는 데 도움이 되는 몇 가지 절차가 있습니다. 자세한 내용은 Red Hat Directory Server Deployment Guide 를 확인하고 명령줄 및 UI 기반 관리 지침은 Red Hat Directory Server Administration Guide 를 참조하십시오.

1.1. Directory Server Performance 설정

성능 튜닝 은 서버의 정상적인 운영 환경에서 잠재적인 (또는 실제) 병목 현상을 식별하고 이러한 병목 현상을 완화하기 위한 조치를 취할 수 있는 방법입니다.
성능 튜닝의 일반 계획은 다음과 같습니다.
  1. 환경을 평가합니다. 디렉토리 서버 주변의 모든 것을 살펴보십시오. 즉, 사용량, 부하, 네트워크 연결 및 신뢰성, 가장 일반적인 작업, 물리적 시스템이 해당 리소스에 대해 경쟁하는 서비스와 함께 제공됩니다.
  2. 현재 Directory Server 성능을 측정하고 기준선을 설정합니다.
  3. 개선할 수 있는 서버 영역을 식별합니다.
  4. Directory Server 설정을 변경하고 잠재적으로 호스트 시스템을 변경하십시오.
  5. 다시 Directory Server 성능을 측정하여 변경 사항이 성능에 미치는 영향을 확인하십시오.
Directory Server는 다음 세 가지 영역에서 일종의 모니터링을 제공합니다.
  • 서버 프로세스(counter 및 logs)
  • 데이터베이스(counter)
  • 모든 데이터베이스 링크(counter)
Directory Server에서 대부분의 성능 측정은 Directory Server가 클라이언트에 정보를 검색하고 전달하는 정도가 될 것입니다. 이를 염두에 두면 최상의 Directory Server 성능을 위해 튜닝할 수 있는 서버 영역입니다(이 내용은 이 문서에서 다루는 영역입니다).
  • 검색 작업
  • 인덱싱 성능(검색 및 쓰기 작업에 모두 영향을 미치는)
  • 데이터베이스 트랜잭션
  • 데이터베이스 및 항목 캐시 설정
  • 데이터베이스 링크
호스트 머신의 설정 또는 하드웨어를 변경하여 Directory Server 성능에 영향을 줄 수도 있습니다.
  • 사용 가능한 메모리(디렉터리 크기에 기반)
  • 동일한 시스템에서 실행되는 다른 서버(리소스와 경쟁할 수 있음)
  • 다른 머신의 다른 Directory Server 인스턴스에 사용자 데이터베이스 배포
  • 네트워크 성능으로 인한 서버 로드 밸런싱
이러한 변경 사항은 인스턴스에 적용할 수 있는 변경 사항보다 효과적인 Directory Server 배포를 계획하는 데 훨씬 더 관련이 있습니다. 배포 가이드 검토에서는 최적의 엔터프라이즈 배포를 계획하는 방법에 대한 자세한 정보를 제공할 수 있습니다.

2장. 서버 및 데이터베이스 성능 추적

Red Hat Directory Server에는 성능 데이터 기록 및 추적 방법인 성능 카운터와 로그의 두 가지 방법이 있습니다. 카운터는 특히 데이터베이스 성능에서 Directory Server가 얼마나 잘 수행되는지 결정하는 데 사용됩니다. 로그는 서버 및 LDAP 작업 및 구성의 문제 영역을 진단하는 데 사용됩니다.
성능 카운터는 서버에 대한 Directory Server의 운영 및 정보, 구성된 모든 데이터베이스 및 데이터베이스 링크(chaining databases)에 중점을 둡니다.
로그에는 액세스(클라이언트 연결), 오류(오류, 경고 및 이벤트 세부 정보), 감사( Directory Server 구성으로 변경)의 세 가지 로그 유형이 있습니다. 액세스 및 오류 로그는 기본적으로 실행됩니다(및 서버를 실행하는 데 오류 로그가 필요합니다). 오버헤드로 인해 감사 로깅을 수동으로 활성화해야 합니다.
참고
액세스 로그가 버퍼링됩니다. 이렇게 하면 로드된 서버에서도 전체 액세스 로깅을 허용하지만 서버에서 이벤트가 발생하는 시점과 이벤트가 로그에 기록되는 시점 사이에는 시간 지연이 있습니다.

2.1. 서버 활동 모니터링

웹 콘솔 또는 명령줄에서 Directory 서버의 현재 활동을 모니터링할 수 있습니다. 모든 데이터베이스에 대한 캐시 활동을 모니터링할 수도 있습니다.
참고
서버에서 모니터링하는 Directory Server 데이터베이스 속성에 대한 카운터 중 일부는 32비트 시스템에서도 64비트 정수를 사용합니다(전체 연결, 시작된 작업, 완료된 작업, 전송된 항목 및 바이트 전송). 대용량 시스템에서는 카운터가 너무 빨리 롤링되지 않고 모니터링 데이터가 왜곡되지 않도록 합니다.

2.1.1. 명령줄을 사용하여 디렉터리 서버 모니터링

명령줄을 사용하여 서버를 모니터링하려면 다음을 수행합니다.
# dsconf -D "cn=Directory Manager" ldap://server.example.com monitor server
다음 표에서는 명령이 반환하는 속성을 설명합니다.

표 2.1. 서버 모니터링 속성

속성 설명
버전 디렉터리의 현재 버전 번호를 식별합니다.
스레드 요청 처리에 사용되는 현재 활성 스레드 수입니다. 복제 또는 연결과 같은 내부 서버 작업에서 추가 스레드를 만들 수 있습니다.
연결 열려 있는 각 연결에 대해 다음 요약 정보를 제공합니다(디렉터리 관리자로 디렉터리에 바인딩하는 경우에만 사용 가능):
FD - 이 연결에 사용되는 파일 설명자입니다.
OpenTime - 이 연결이 열린 시간입니다.
시작됨 - 이 연결에서 시작한 작업 수입니다.
opscompleted - 완료된 작업 수입니다.
bind DN - 이 연결에서 디렉터리에 연결하는 데 사용하는 고유 이름입니다.
RW - 연결이 읽기 또는 쓰기에 대해 차단된 경우 표시되는 필드입니다.
기본적으로 이 정보는 Directory Manager에서 사용할 수 있습니다. 그러나 이 정보와 연관된 ACI는 다른 사용자가 정보에 액세스할 수 있도록 편집할 수 있습니다.
currentconnections 디렉터리에서 현재 서비스 중인 연결 수를 식별합니다.
totalconnections 디렉터리가 시작된 이후 처리된 연결 수를 식별합니다.
currentconnectionsatmaxthreads 현재 최대 스레드 상태에 있는 모든 연결을 표시합니다.
maxthreadsperconnhits 최대 스레드 를 공격하는 횟수를 표시합니다.
dtablesize 디렉터리에 사용 가능한 파일 설명자 수를 표시합니다. 각 연결에는 열려 있는 모든 인덱스, 로그 파일 관리용 하나, ns-slapd 자체에 대한 하나의 파일 설명자가 필요합니다. 기본적으로 이 값은 디렉터리에서 서비스할 수 있는 추가 동시 연결 수를 표시합니다. 파일 설명자에 대한 자세한 내용은 운영 체제 설명서를 참조하십시오.
Readwaiters 클라이언트에서 데이터를 읽기를 기다리는 스레드 수를 식별합니다.
oopsinitiated 서버가 시작된 이후 시작한 작업 수를 식별합니다.
opscompleted 서버가 시작된 이후 완료된 작업 수를 식별합니다.
entriessent 서버가 시작된 이후 클라이언트에 전송된 항목 수를 식별합니다.
bytesSent 서버가 시작된 이후 클라이언트에 전송되는 바이트 수를 식별합니다.
currenttime 이 서버의 스냅샷을 만든 시간을 식별합니다. 시간은 Greenwich Mean Time (GMT)에 UTC 형식으로 표시됩니다.
StartTime 서버가 시작된 시간을 식별합니다. 시간은 Greenwich Mean Time (GMT)에 UTC 형식으로 표시됩니다.
nbackends 서버 서비스의 백엔드(데이터베이스) 수를 식별합니다.

2.1.2. 웹 콘솔을 사용하여 서버 모니터링

웹 콘솔을 사용하여 서버를 모니터링하려면 다음을 수행합니다.
  1. 웹 콘솔에서 Directory Server 사용자 인터페이스를 엽니다. 자세한 내용은 Red Hat Directory Server 관리 가이드의 웹 콘솔을 사용하여 디렉터리 서버 로깅 섹션을 참조하십시오.
  2. 인스턴스를 선택합니다.
  3. 모니터링 탭에서 Server CloudEvent를 선택합니다.
    다음 표에서는 이 메뉴에 표시되는 필드를 설명합니다.

    표 2.2. 일반 정보(Server)

    필드 설명
    서버 인스턴스 Directory Server 인스턴스의 이름을 표시합니다.
    버전 현재 서버 버전을 식별합니다.
    서버 시작 서버가 시작된 날짜 및 시간입니다.
    Server Uptime 인스턴스가 실행되는 시간입니다.
    작업자 스레드 요청 처리에 사용되는 현재 활성 스레드 수입니다. 복제 또는 연결과 같은 내부 서버 작업에서 추가 스레드를 만들 수 있습니다.
    읽기를 기다리는 스레드 클라이언트에서 읽기를 기다리는 총 스레드 수입니다. 서버가 클라이언트로부터 요청을 수신하기 시작하는 경우 스레드를 즉시 읽지 못할 수 있으며 어떤 이유로 해당 요청의 전송이 중단됩니다. 일반적으로 읽기를 기다리는 스레드는 느린 네트워크 또는 클라이언트를 나타냅니다.
    최대 스레드에 대한 연결 현재 최대 스레드 상태에 있는 모든 연결을 표시합니다.
    conns Hit Max Threads 최대 스레드 를 공격하는 횟수를 표시합니다.
    총 연결 이 Directory Server 인스턴스에 설정된 총 연결 수입니다.
    현재 연결 열려 있는 총 연결 수입니다. 각 연결은 여러 작업을 처리할 수 있으므로 여러 스레드를 처리할 수 있습니다.
    작업 시작 이 연결에 의해 시작된 작업 수입니다.
    작업 완료 이 연결에 대해 서버에서 완료한 작업 수입니다.
    클라이언트로 돌아가는 항목 서버가 시작된 이후 클라이언트에 전송된 항목 수입니다.
    클라이언트의 바이트 수입니다. 서버가 시작된 이후 클라이언트에 전송되는 바이트 수입니다.

2.2. 데이터베이스 활동 모니터링

참고
서버에서 모니터링하는 Directory Server 데이터베이스 속성에 대한 카운터 중 일부는 32비트 시스템에서도 64비트 정수를 사용합니다(입력 캐시 적중, 엔트리 캐시 시도, 현재 캐시 크기 및 최대 캐시 크기). 대용량 시스템에서는 카운터가 너무 빨리 롤링되지 않고 모니터링 데이터가 왜곡되지 않도록 합니다.

2.2.1. 명령줄을 사용하여 데이터베이스 활동 모니터링

데이터베이스의 현재 활동을 모니터링하려면 다음을 수행합니다.
# dsconf -D "cn=Directory Manager" ldap://server.example.com monitor backend
다음 표에서는 명령이 반환하는 속성을 설명합니다.

표 2.3. 데이터베이스 모니터링 속성

속성 설명
ReadOnly 데이터베이스가 읽기 전용 모드( 1 ) 또는 읽기-쓰기 모드 (0)인지 여부를 나타냅니다.Indicates whether the database is in read-only mode (1) or in read-write mode (0).
entrycachehits 총 성공한 항목 캐시 조회 수입니다. 값은 서버에서 데이터베이스에서 다시 로드하지 않고 항목 캐시에서 항목을 검색할 수 있는 총 횟수입니다.
entrycachetries 인스턴스를 시작한 이후 총 항목 캐시 조회 수입니다. 인스턴스가 시작되었으므로 이 값은 총 번호입니다. {DS}는 항목 캐시에서 항목을 검색하려고 했습니다.
entrycachehitratio
항목 캐시 수가 항목 캐시 조회에 성공하려고 합니다. 이 수는 인스턴스를 마지막으로 시작한 이후 총 조회를 기반으로 합니다. 항목 캐시 적중 비율이 100%에 근접할수록 좋습니다.
작업에서 항목 캐시에 없는 항목을 찾으려고 할 때마다 서버는 해당 항목을 가져오기 위해 데이터베이스에 액세스해야 합니다. 따라서 이 비율이 0으로 떨어지면 디스크 액세스 수가 증가하고 디렉터리 검색 성능이 저하됩니다. 이 비율을 개선하려면 데이터베이스의 항목 캐시 크기를 늘립니다.
이 비율을 개선하려면 cn=database_name, cn=ldbm 데이터베이스,cn=plugins,cn=plugins,cn=config 항목의 nsslapd-cachememsize 속성 값을 늘려 항목 캐시 크기를 늘립니다.
currententrycachesize
현재 항목 캐시에 있는 디렉터리 항목의 총 크기(바이트)입니다.
캐시에 있을 수 있는 항목의 크기를 늘리려면 cn=database_name,cn=ldbm database,cn=plugins,cn=config 항목의 nsslapd-cachememsize 속성 값을 늘립니다.
maxentrycachesize
항목 캐시에서 유지 관리할 수 있는 디렉터리 항목의 최대 크기(바이트)입니다.
캐시에 있을 수 있는 항목의 크기를 늘리려면 cn=database_name,cn=ldbm database,cn=plugins,cn=config 항목의 nsslapd-cachememsize 속성 값을 늘립니다.
currententrycachecount 지정된 백엔드의 항목 캐시에 저장된 현재 항목 수입니다.
maxentrycachecount
데이터베이스의 항목 캐시에 저장된 최대 항목 수입니다.
이 값을 튜닝하려면 cn=database_name,cn=ldbm 데이터베이스,cn=plugins,cn=confignsslapd-cachesize 속성 값을 늘립니다.
dncachehits 서버가 DN 캐시에서 정규화된 고유 이름(DN)을 다시 정규화하지 않고 요청을 처리할 수 있는 횟수입니다.
dncachetries 인스턴스를 시작한 이후 총 DN 캐시 액세스 수입니다.
dncachehitratio 캐시의 비율은 성공적인 DN 캐시 적중을 시도합니다. 이 값이 100%일수록 좋습니다.
currentdncachesize
DN 캐시에 현재 존재하는 DN의 총 크기(바이트)입니다.
DN 캐시에 있을 수 있는 항목의 크기를 늘리려면 cn=database_name,cn=ldbm database,cn=plugins,cn=config 항목의 nsslapd-dncachememsize 속성 값을 늘립니다.
maxdncachesize
DN 캐시에서 유지 관리할 수 있는 DN의 최대 크기(바이트)입니다.
캐시에 있을 수 있는 항목의 크기를 늘리려면 cn=database_name,cn=ldbm database,cn=plugins,cn=config 항목의 nsslapd-dncachememsize 속성 값을 늘립니다.
currentdncachecount 현재 DN 캐시에 있는 DN 수입니다.
maxdncachecount DN 캐시에 허용되는 최대 DN 수입니다.

2.2.2. 웹 콘솔을 사용하여 데이터베이스 활동 모니터링

웹 콘솔을 사용하여 데이터베이스 활동을 모니터링하려면 다음을 수행합니다.
  1. 웹 콘솔에서 Directory Server 사용자 인터페이스를 엽니다. 자세한 내용은 Red Hat Directory Server 관리 가이드의 웹 콘솔을 사용하여 디렉터리 서버 로깅 섹션을 참조하십시오.
  2. 인스턴스를 선택합니다.
  3. 모니터링 탭에서 표시할 데이터베이스 항목을 선택합니다.
  4. Entry Cache 를 선택하여 항목 캐시의 성능 값을 표시합니다.
    다음 표에서는 이 탭에 표시되는 필드를 설명합니다.

    표 2.4. 입력 캐시 탭의 필드

    필드 이름 설명
    Entry Cache Hit Ratio
    항목 캐시의 수를 나타내는 비율은 성공적인 항목 캐시 조회를 시도합니다. 이 수는 전체 조회를 기반으로 하며 디렉터리가 마지막으로 시작된 이후 조회에 도달합니다. 이 값이 100%일수록 좋습니다. 작업에서 항목 캐시에 없는 항목을 찾으려고 할 때마다 디렉터리는 항목을 가져오기 위해 디스크 액세스를 수행해야 합니다. 따라서 이 비율이 0으로 떨어지면 디스크 액세스 수가 증가하고 디렉터리 검색 성능이 저하됩니다.
    이 비율을 개선하려면 데이터베이스의 cn=database_name, cn=ldbm 데이터베이스,cn=plugins,cn=config 항목의 nsslapd-cachememsize 속성 값을 늘려 항목 캐시의 크기를 늘립니다.
    항목 캐시 타일 디렉터리가 마지막으로 시작된 이후의 총 항목 캐시 조회 수입니다. 즉, 서버를 시작한 이후 요청한 총 항목 수입니다.
    항목 캐시 계층 총 성공한 항목 캐시 조회 수입니다. 즉, 디스크로 이동하는 대신 캐시에서 데이터를 가져와 서버가 검색 요청을 처리할 수 있는 총 횟수입니다.
    항목 캐시 최대 크기
    디렉터리에서 유지 관리하는 항목의 캐시 크기(바이트)입니다.
    이 값은 cn=database_name, cn=ldbm 데이터베이스,cn=plugins,cn=config 항목의 nsslapd-cachememsize 속성에서 관리합니다.
    항목 캐시 현재 크기 현재 항목 캐시에 있는 디렉터리 항목 수입니다.
    항목 캐시 최대 항목
    더 이상 사용되지 않습니다.
    항목 캐시에서 유지 관리할 수 있는 최대 디렉터리 항목 수입니다.
    최대 허용 항목 수를 설정하여 캐시 크기를 관리하지 마십시오. 이로 인해 호스트가 RAM을 효과적으로 할당하기가 어려울 수 있습니다. nsslapd-cachememsize 특성을 사용하여 캐시에서 사용 가능한 RAM의 양을 설정하여 캐시 크기를 관리합니다.
    항목 캐시 수 현재 항목 캐시에 있는 디렉터리 항목 수입니다.
  5. DN 캐시의 성능 값으로 DN 캐시를 선택합니다.

2.4. 자세한 내용은 Monitoring the Local Disk for graceful>-<down

시스템에서 사용 가능한 디스크 공간이 너무 작아지면 Directory Server 프로세스가 종료됩니다. 따라서 데이터베이스 손상이나 데이터 손실의 위험이 있습니다.
이 문제를 방지하려면 사용 가능한 디스크 공간을 모니터링하도록 Directory Server를 구성할 수 있습니다. 모니터링 스레드는 구성, 트랜잭션 로그 및 데이터베이스 디렉터리가 포함된 파일 시스템에서 사용 가능한 공간을 확인합니다.
나머지 디스크 공간에 따라 Directory Server는 다음과 같이 작동합니다.
  • 여유 디스크 공간이 정의된 임계값에 도달하면 Directory Server:
    • 자세한 로깅 비활성화
    • 액세스 액세스 로깅 비활성화
    • 보관된 로그 파일 삭제
    참고
    Directory Server는 임계값에 도달하더라도 항상 오류 로그를 계속 작성합니다.
  • 사용 가능한 디스크 공간이 구성된 임계값의 절반보다 작으면 지정된 유예 기간 내에 Directory Server가 종료됩니다.
  • 사용 가능한 디스크 공간이 4KB보다 낮으면 Directory Server가 즉시 종료됩니다.
디스크 공간이 확보되면 Directory Server가 종료 프로세스를 중단하고 이전에 비활성화된 모든 로그 설정을 다시 활성화합니다.

2.4.1. 명령줄을 사용하여 로컬 디스크 모니터링 구성

명령줄을 사용하여 로컬 디스크 모니터링을 구성하려면 다음을 수행합니다.
  1. 디스크 모니터링 기능을 활성화하고 임계값을 설정하고 유예 기간을 설정합니다.
    # dsconf -D "cn=Directory Manager" ldap://server.example.com config replace nsslapd-disk-monitoring=on nsslapd-disk-monitoring-threshold=3000000000 nsslapd-disk-monitoring-grace-period=60
    이 명령은 사용 가능한 디스크 공간의 임계값을 3GB로 설정하고 유예 기간을 60초로 설정합니다.
  2. 선택적으로, nsslapd-disk-monitoring-logging-critical 매개변수를 활성화하여 Directory Server가 액세스 로깅을 비활성화하거나 보관된 로그를 삭제하지 않도록 구성합니다.
    # dsconf -D "cn=Directory Manager" ldap://server.example.com config replace nsslapd-disk-monitoring-logging-critical=on
  3. Directory Server 인스턴스를 다시 시작하십시오.
    # dsctl instance_name restart

2.4.2. 웹 콘솔을 사용하여 로컬 디스크 모니터링 구성

웹 콘솔을 사용하여 로컬 디스크 모니터링을 구성하려면 다음을 수행합니다.
  1. 웹 콘솔에서 Directory Server 사용자 인터페이스를 엽니다. 자세한 내용은 Red Hat Directory Server 관리 가이드의 웹 콘솔을 사용하여 디렉터리 서버 로깅 섹션을 참조하십시오.
  2. 인스턴스를 선택합니다.
  3. Server Settings 메뉴를 열고 Server Configuration 을 선택합니다.
  4. 디스크 공간 모니터링 활성화 및 임계값을 바이트로 설정하고 유예 기간을 분 단위로 설정합니다.
    이 예에서는 모니터링 임계값을 3GB (3,221,225,472바이트)로 설정하고 임계값을 60 분으로 도달한 후 Directory Server가 인스턴스를 종료하기 전 시간을 설정합니다.
  5. 선택적으로 Directory Server에서 액세스 로깅을 비활성화하거나 Preserve Logs 를 선택하여 보관된 로그를 삭제하도록 구성합니다.
  6. Save Configuration 을 클릭합니다.
  7. 작업 버튼을 클릭하고 인스턴스 재시작 을 선택합니다.

3장. 잠금 수 조정

Directory Server의 잠금 메커니즘은 동시에 실행될 수 있는 Directory Server 프로세스의 복사본 수를 제어합니다. 예를 들어 가져오기 작업 중에 Directory Server는 /run/lock/dirsrv/slapd-instance_name/imports/ 디렉터리에 잠금을 설정하여 ns-slapd (Directory Server) 프로세스, 다른 가져오기 또는 내보내기 작업이 실행되지 않습니다.
서버가 사용 가능한 잠금을 사용하지 않으면 /var/log/dirsrv/slapd-instance_name/errors 파일에 다음 오류가 기록됩니다.
libdb: Lock table is out of available locks
오류 메시지가 잠금 테이블이 사용 가능한 잠금이 없음을 나타내는 경우 잠금 수를 두 배로 늘립니다.If error messages indicate that the lock table is not of available locks, double the number of locks. 문제가 지속되면 값을 다시 두 배로 늘립니다.

3.1. 수동으로 잠금 수 모니터링

명령줄을 사용하여 잠금 수를 모니터링하려면 다음을 입력합니다.
# ldapsearch -D "cn=Directory Manager" -W -p 389 -h server.example.com -x
     -s sub -b "cn=database,cn=monitor,cn=ldbm database,cn=plugins,cn=config"
     nsslapd-db-current-locks nsslapd-db-max-locks
모니터링 속성에 대한 자세한 내용은 Directory Server 구성, 명령 및 파일 참조 의 설명을 참조하십시오.

3.2. Free Database Lock을 모니터링하여 데이터 수정 방지

데이터베이스 잠금을 사용하지 않으면 데이터 손상이 발생할 수 있습니다. 이를 방지하기 위해 디렉터리 서버는 기본적으로 500밀리초마다 나머지 사용 가능한 데이터베이스 잠금 수를 모니터링하고 활성 데이터베이스 잠금 수가 90% 이상인 경우 Directory Server가 모든 검색을 중단합니다.
간격 및 임계값을 변경할 수 있습니다.
  1. 예를 들어 간격을 600 밀리초로 설정하고 임계값을 85% 로 설정하려면 다음을 입력합니다.
    # dsconf -D "cn=Directory Manager" ldap://server.example.com backend config set --locks-monitoring-enabled on --locks-monitoring-pause 600 --locks-monitoring-threshold 85
    옵션에서 --locks-monitoring-enabled 는 기능이 활성화되어 있는지 확인합니다.
    참고
    너무 높은 간격을 설정하면 다음 모니터링 검사가 이루어지기 전에 서버가 잠금을 실행할 수 있습니다. 너무 짧은 간격을 설정하면 서버가 느려질 수 있습니다.
  2. 인스턴스를 다시 시작하십시오.
    # dsctl instance_name restart

3.3. 명령줄을 사용하여 잠금 수 설정

명령줄을 사용하여 잠금 수를 설정하려면 다음을 수행합니다.
  1. dsconf backend config set 명령을 사용하여 잠금 수를 업데이트합니다. 예를 들어, 값을 10.0.0.1 :로 설정하려면 다음을 수행하십시오.
    # dsconf -D "cn=Directory Manager" ldap://server.example.com backend config set --locks=20000
  2. Directory Server 인스턴스를 다시 시작하십시오.
    # dsctl instance_name restart

3.4. 웹 콘솔을 사용하여 잠금 수 설정

웹 콘솔을 사용하여 잠금 수를 설정하려면 다음을 수행합니다.
  1. 웹 콘솔에서 Directory Server 사용자 인터페이스를 엽니다. 자세한 내용은 Red Hat Directory Server 관리 가이드의 웹 콘솔을 사용하여 디렉터리 서버 로깅 섹션을 참조하십시오.
  2. 인스턴스를 선택합니다.
  3. 데이터베이스 메뉴를 열고 전역 데이터베이스 구성을 선택합니다.
  4. 고급 설정 표시를 클릭합니다.
  5. 데이터베이스 잠금 필드에서 값을 업데이트합니다.
  6. Save Configuration 을 클릭합니다.
  7. 작업 버튼을 클릭하고 인스턴스 재시작 을 선택합니다.

4장. 검색 성능 개선 (및 분산 읽기 성능)

디렉터리에 대한 검색 작업을 개선하는 가장 효과적인 방법은 검색 결과에 대한 적절한 제한과 함께 철저하게 항목에 대한 인덱스를 구성하는 것입니다.

4.1. 인덱스 사용

인덱스(인칭)는 항목에 대한 다른 세부 정보를 포함하지 않고 특정 항목에 특정 속성이 포함되어 있음을 보여주는 태그입니다. 즉, 공백을 저장하고 검색 결과를 더 빠르게 반환합니다. 각 인덱스는 Directory Server 특성과 해당 특성과 일치하는 특정 방법을 중심으로 구성됩니다.
  • presence index(pres) 는 단순히 특성을 포함하는 항목을 보여줍니다.
  • 같음 인덱스(eq) 는 특정 검색 문자열과 일치하는 특성 값을 표시합니다.
  • 대략적인 인덱스(approx) 는 전화 방식으로 문자열과 일치하는 값을 갖는 항목을 표시하는 효율적인 검색에 사용됩니다.
  • 하위 문자열 인덱스(sub) 는 지정된 검색 문자열과 특성 값의 하위 문자열과 일치합니다. (이 인덱스는 서버가 유지보수하는 데 비용이 많이 듭니다.)
  • 국제 인덱스에서 는 영어 이외의 언어의 값이 포함된 디렉터리의 문자열과 일치하는 일치 규칙을 사용합니다.
참고
인덱싱은 Red Hat Directory Server 관리 가이드의 인덱스 관리 장에 훨씬 더 자세히 설명되어 있습니다.
그러나 인덱스를 만드는 것만으로는 서버 성능이 저하되지 않습니다. 인덱스를 유지 관리하면 서버가 유지 관리하는 모든 인덱스에 대해 변경 사항을 확인해야 하는 모든 수정, 추가 및 삭제 작업에 대해 Directory Server가 부담을 덜 수 있습니다.Maining indexes puts a burden on the Directory Server for every modify, add, and delete operation by verify every attribute in the change against every index maintained by the server:
  1. Directory Server는 추가 또는 수정 작업을 수신합니다.
  2. Directory Server는 인덱싱 특성을 검사하여 특성 값에 대해 인덱스가 유지 관리되는지 확인합니다.
  3. 생성된 특성 값이 인덱싱되면 Directory Server에서 새 인덱스 항목을 생성합니다.
  4. 서버가 인덱싱을 완료하면 실제 특성 값이 클라이언트 요청에 따라 생성됩니다.
예를 들어 Directory Server는 다음 항목을 추가합니다.
dn: cn=John Doe, ou=People,dc=example,dc=com
objectclass: top
objectClass: person
objectClass: orgperson
objectClass: inetorgperson
cn: John Doe
cn: John
sn: Doe
ou: Manufacturing
ou: people
telephoneNumber: 408 555 8834
description: Manufacturing lead for the Z238 line of widgets.
Directory Server는 다음 인덱스를 유지 관리하고 있습니다.
  • cn (일반 이름) 및 sn (surname) 속성에 대한 같음, 대략적, 하위 문자열 인덱스입니다.
  • 전화 번호 특성에 대한 같음 및 하위 문자열 인덱스입니다.
  • description 속성에 대한 하위 문자열 인덱스입니다.
디렉터리에 해당 항목을 추가할 때 Directory Server는 다음 단계를 수행해야 합니다.
  1. 존과 Doe 에 대한 cn equality 인덱스 항목을 만듭니다.
  2. 존과 Doe 에 대한 적절한 cn 대략 인덱스 항목을 만듭니다.
  3. Jane 및 Jane Doe 에 대한 적절한 cn 하위 문자열 인덱스 항목을 만듭니다.
  4. Doe 에 대한 sn equality 인덱스 항목을 만듭니다.
  5. Doe 에 적절한 sn 대략 인덱스 항목을 생성합니다.
  6. Doe 에 대해 적절한 sn 하위 문자열 인덱스 항목을 만듭니다.
  7. 408 555 8834 의 전화 번호 동일 인덱스 항목을 만듭니다.
  8. 408 555 8834 에 대한 적절한 전화 번호 하위 문자열 인덱스 항목을 만듭니다.
  9. 위젯의 Z238 줄에 Manufacturing lead에 적절한 설명 하위 문자열 인덱스 항목을 생성합니다. 이 문자열에 대해 많은 수의 하위 문자열 항목이 생성됩니다.
새 인덱스를 만들기 전에 인덱스를 유지 관리하는 오버헤드의 균형을 검색 성능의 잠재적인 개선 사항에 대해 조정해야 합니다.Before creating new indexes, make sure to balance the overhead of maintaining the indexes against the potential improvements in search performance. 특히 중요한 것은 디렉터리에 저장된 정보 유형과 사용자가 정기적으로 검색하는 정보 유형과 일치시킵니다.
  • 대략적인 인덱스는 전화 번호와 같이 숫자를 일반적으로 포함하는 속성에는 효율적이지 않습니다.
  • 바이너리 특성에는 하위 문자열 인덱스가 작동하지 않습니다.
  • 값이 큰 경우 같음 인덱스를 피해야 합니다(예: 암호화된 데이터를 포함하는 이미지 또는 암호를 포함하려는 속성).
  • 검색에 일반적으로 사용되지 않는 속성에 대한 인덱스를 유지 관리하면 글로벌 검색 성능이 향상되지 않고 오버헤드가 증가합니다.
  • 검색 유형에 따라 검색 성능이 크게 저하될 수 있지만 인덱싱되지 않은 속성은 검색 요청에 계속 지정할 수 있습니다.
  • 유지 관리하는 인덱스가 많을수록 필요한 디스크 공간이 늘어납니다.
참고
검색 작업 부하가 높고 수정 작업 부하가 낮은 디렉터리에 인덱스를 만드는 것이 훨씬 더 효율적입니다.

4.2. Directory Server 리소스 설정 튜닝

Directory Server에서 사용하는 리소스의 양을 관리하고 개선하도록 여러 매개변수를 구성할 수 있습니다.

4.2.1. 명령줄을 사용하여 Directory Server 리소스 설정 업데이트

명령줄을 사용하여 서버 리소스 설정을 업데이트하려면 다음을 수행합니다.
  1. 성능 설정을 업데이트합니다.
     dsconf -D "cn=Directory Manager" ldap://server.example.com config replace parameter_name=setting
    다음 매개변수를 설정할 수 있습니다.
    • nsslapd-threadnumber: 작업자 스레드 수를 설정합니다.
    • nsslapd-maxdescriptors: 최대 파일 설명자 수를 설정합니다.
    • nsslapd-timelimit: 검색 시간 제한을 설정합니다.
    • nsslapd-sizelimit: 검색 크기 제한을 설정합니다.
    • nsslapd-pagedsizelimit: 페이지화된 검색 크기 제한을 설정합니다.
    • nsslapd-idletimeout: 유휴 연결 타임아웃을 설정합니다.
    • nsslapd-ioblocktimeout: I/O( input/output) 블록 타임아웃을 설정합니다.
    • nsslapd-ndn-cache-enabled: 정규화된 DN 캐시를 활성화하거나 비활성화합니다.
    • nsslapd-ndn-cache-max-size: nsslapd-ndn-cache-enabled 가 활성화된 경우 정규화된 DN 캐시 크기를 설정합니다.
    • nsslapd-outbound-ldap-io-timeout: 아웃바운드 I/O 시간 초과를 설정합니다.
    • nsslapd-maxbersize: 최대 BER(기본 인코딩 규칙) 크기를 설정합니다.
    • nsslapd-maxsasliosize: 최대 Simple Authentication and Security Layer (SASL) I/O 크기를 설정합니다.
    • nsslapd-listen-backlog-size: 수신되는 연결을 수신하는 데 사용할 수 있는 최대 소켓 수를 설정합니다.
    • nsslapd-max-filter-nest-level: 최대 중첩된 필터 레벨을 설정합니다.
    • nsslapd-ignore-virtual-attrs: 가상 속성 조회를 활성화하거나 비활성화합니다.
    • nsslapd-connection-nocanon: revers DNS 조회를 활성화하거나 비활성화합니다.
    • nsslapd-enable-turbo-mode: turbo 모드 기능을 활성화하거나 비활성화합니다.
    이러한 매개변수에 대한 자세한 내용은 Red Hat Directory Server Configuration, Command 및 File Reference 에서 참조하십시오.
  2. Directory Server 인스턴스를 다시 시작하십시오.
    # dsctl instance_name restart

4.2.2. 웹 콘솔을 사용하여 디렉터리 서버 리소스 설정 업데이트

웹 콘솔을 사용하여 서버 리소스 설정을 업데이트하려면 다음을 수행합니다.
  1. 웹 콘솔에서 Directory Server 사용자 인터페이스를 엽니다. 자세한 내용은 Red Hat Directory Server 관리 가이드의 웹 콘솔을 사용하여 디렉터리 서버 로깅 섹션을 참조하십시오.
  2. 인스턴스를 선택합니다.
  3. 서버 설정 메뉴를 열고 튜닝 및 제한을 선택합니다.
  4. 설정을 업데이트합니다. 필요한 경우 고급 설정 표시를 클릭하여 모든 설정을 표시합니다.
    매개 변수의 cn=config 항목에 툴팁 및 해당 속성 이름을 표시하려면 설정 위에 마우스 커서를 가져갑니다. 자세한 내용은 Red Hat Directory Server Configuration, Command 및 File Reference의 매개변수 설명을 참조하십시오.
  5. Save Configuration 을 클릭합니다.
  6. 작업 버튼을 클릭하고 인스턴스 재시작 을 선택합니다.

4.3. 인덱스 검사 제한 설정

대규모 디렉터리에서 검색 결과 목록이 커질 수 있습니다. million inetorgperson 항목이 있는 디렉토리에는 (objectclass=inetorgperson) 와 같은 필터로 반환된 수백만 개의 항목이 있고 sn 속성에 대한 인덱스에는 100만 개 이상의 항목이 포함됩니다.
데이터베이스에서 긴 ID 목록을 로드하면 검색 성능이 크게 저하됩니다. 구성 매개변수 nsslapd-idlistscanlimit 는 키가 전체 기본 인덱스와 일치하는 것으로 간주되기 전에 읽은 ID 수에 대한 제한을 설정합니다(검색은 다른 리소스 제한 집합과 함께 인덱싱되지 않은 검색으로 처리됨).
큰 인덱스의 경우 인덱스와 일치하는 검색을 인덱싱되지 않은 검색으로 처리하는 것이 실제로 더 효율적입니다. 검색 작업에서는 거의 디렉터리 크기와 디렉토리 자체의 인덱스를 검색하는 대신 결과(전체 디렉터리)를 처리하는 데 필요한 위치만 검색하면 됩니다.
nsslapd-idlistscanlimit 속성의 기본값은 4000 입니다. 이 값은 일반적인 데이터베이스 크기 및 액세스 패턴에 대해 우수한 성능을 제공합니다. 일반적으로 이 값은 변경할 필요가 없습니다. 데이터베이스 인덱스가 4000 항목보다 크지만 전체 디렉토리보다 훨씬 작은 경우 검사 제한을 늘리면 검색이 개선되어 기본 제한 4000이 발생합니다.
반면 제한을 낮추면 4000 항목 제한에 도달하지만 모든 항목을 검사할 필요가 없는 검색 속도가 크게 빨라집니다.

4.3.1. 명령줄을 사용하여 인덱스 검사 제한 설정

명령줄을 사용하여 인덱스 검사 제한을 설정하려면 다음을 수행합니다.
  1. 예를 들어 검색 작업 중에 Directory Server가 검색하는 항목 ID 수를 8000 으로 설정하려면 다음을 수행합니다.
    # dsconf -D "cn=Directory Manager" ldap://server.example.com backend config set --idlistscanlimit=8000
  2. Directory Server 인스턴스를 다시 시작하십시오.
    # dsctl instance_name restart

4.3.2. 웹 콘솔을 사용하여 인덱스 검사 제한 설정

웹 콘솔을 사용하여 인덱스 검사 제한을 설정하려면 다음을 수행합니다.
  1. 웹 콘솔에서 Directory Server 사용자 인터페이스를 엽니다. 자세한 내용은 Red Hat Directory Server 관리 가이드의 웹 콘솔을 사용하여 디렉터리 서버 로깅 섹션을 참조하십시오.
  2. 인스턴스를 선택합니다.
  3. 데이터베이스 탭에서 글로벌 데이터베이스 구성을 선택합니다.
  4. ID List Scan Limit (ID 목록 검사 제한) 필드에서 값을 업데이트합니다.
  5. Save Configuration 을 클릭합니다.
  6. 작업 버튼을 클릭하고 인스턴스 재시작 을 선택합니다.

4.4. 미세한 ID 목록 크기

대규모 데이터베이스의 일부 쿼리에서는 많은 양의 CPU 및 RAM 리소스를 사용할 수 있습니다. 성능을 개선하기 위해 nsslapd-idlistscanlimit 특성을 사용하여 데이터베이스의 모든 인덱스에 적용되는 기본 ID 검사 제한을 설정할 수 있습니다. 그러나 경우에 따라 특정 인덱스에 대한 제한을 정의하거나 ID 목록을 사용하지 않는 것이 유용합니다. nsIndexIDListScanLimit 특성을 사용하여 다양한 검색 필터 유형에 대해 ID 목록 검사 제한에 대한 개별 설정을 설정할 수 있습니다.
objectClass 속성과 같은 제한을 설정하려면 nsIndexIDListScanLimit 매개변수를 DN cn=objectclass,cn=index,cn=userRoot,cn=ldbm database,cn=plugins,cn=config 에 추가합니다.
nsIndexIDListScanLimit 특성은 다중 값이며 다음 매개 변수 목록을 값으로 사용합니다.
nsIndexIDListScanLimit: limit=NNN [type=eq[,sub,...]] [flags=AND[,XXX,...]] [values=val[,val,...]]
  • limit: ID 목록의 최대 크기입니다. 유효한 값은 다음과 같습니다.
    • -1: 무제한.
    • 0: 인덱스를 사용하지 마십시오.
    • 1에서 최대 32비트 정수(2147483647): 최대 ID 수입니다.
  • 유형: 선택 사항. 인덱스의 유형입니다. Eq,sub,pres, etc. 값은 인덱스 정의에 대해 지정된 실제 nsIndexType 중 하나여야 합니다. 예를 들어 nsIndexType=eq 가 정의되지 않은 경우 type=eq 를 사용할 수 없습니다.
  • 플래그: 선택 사항. 검사 제한 적용 동작을 변경하는 플래그입니다. 유효한 값은 다음과 같습니다.
    • AND : 속성이 AND 절에 표시되는 검색에만 검사 제한을 적용합니다.
    • OR: OR 절에 속성이 표시되는 검색에만 검사 제한을 적용합니다.
  • : 선택 사항입니다. 제한을 적용하려면 검색 필터와 일치해야 하는 쉼표로 구분된 값 목록입니다. 일치 항목이 한 번에 하나씩 수행되므로 값이 일치하는 경우 값이 일치합니다.
    값은 한 번에 하나의 유형에서만 사용해야 합니다.
    값은 인덱스 유형에 일치해야 하며 인덱스가 적용되는 속성의 구문에 일치해야 합니다. 예를 들어 정수 기반 특성 uidNumber 를 지정하고 eq 용으로 인덱싱된 경우 type=eq values=abc 를 사용할 수 없습니다.
    값에 공백, 쉼표, NULL 또는 이스케이프해야 하는 기타 값이 포함된 경우 LDAP 필터 이스케이프 구문을 사용해야 합니다. 백슬래시(\) 뒤에 문자에 대한 2 16진수 코드가 차례로 표시됩니다. 다음 예에서 DN 값의 쉼표는 \2C 로 이스케이프됩니다.
    nsIndexIDListScanLimit: limit=0 type=eq values=uid=user\2Cou=People\2Cdc=example\2Cdc=com

예 4.1. Setting nsIndexIDListScanLimit

오브젝트 클래스 inetOrgPerson 이 포함된 10만 개의 항목이 있는 대규모 데이터베이스에서 검색 (&(objectClass=inetOrgPerson)(uid=user) 은 먼저 objectClass=inetOrgPerson 과 일치하는 모든 10만 개의 ID 목록을 포함하는 ID 목록을 생성합니다. 데이터베이스가 필터의 두 번째 부분을 적용하면 결과 목록에서 uid=user 와 일치하는 오브젝트를 검색합니다. 이 경우 특정 인덱스에 대한 제한을 정의하거나 ID 목록을 전혀 사용하지 않는 것이 유용합니다.
objectClass=inetOrgPerson 에 대한 ID 목록이 AND 절에서 생성되지 않도록 설정하려면 다음 nsIndexIDListScanLimit 를 추가합니다.
# ldapmodify -D "cn=Directory Manager" -W -p 389 -h server.example.com -x
dn: cn=objectclass,cn=index,cn=userRoot,cn=ldbm database,cn=plugins,cn=config
changetype: modify
replace: nsIndexIDListScanLimit
nsIndexIDListScanLimit: limit=0 type=eq flags=AND values=inetOrgPerson

modifying entry "cn=objectclass,cn=index,cn=userRoot,cn=ldbm database,cn=plugins,cn=config"
AND 절에서 사용되는 경우 objectClass=inetOrgPerson 에 대한 ID 목록이 생성되지 않습니다. 다른 모든 상황에서는 nsslapd-idlistscanlimit 값이 적용됩니다.

4.5. 검색을 위한 데이터베이스 캐시 튜닝

검색 성능에 영향을 미치는 데이터베이스 속성은 주로 서버에서 사용할 수 있는 메모리 양을 정의합니다. 데이터베이스의 캐시 크기 속성에 설정할 수 있는 최대 값은 머신의 실제 메모리 양에 따라 달라집니다. 대략적으로 머신의 사용 가능한 메모리 양은 항상 기본 데이터베이스 캐시 크기 및 각 항목 캐시 크기의 합계 합계보다 커야 합니다.
이러한 캐시 크기 조정 속성을 변경할 때는 주의하십시오. 이러한 속성을 사용하여 서버 성능을 향상시키는 기능은 데이터베이스 크기, 시스템에서 사용 가능한 물리적 메모리 크기, 디렉터리 검색의 임의 여부(즉, 디렉터리 클라이언트가 임의의 디렉터리 데이터를 검색하는 경우)에 따라 달라집니다.
데이터베이스가 메모리에 맞지 않고 검색이 임의의 경우 이러한 속성에 설정된 값을 늘리려고 하면 디렉터리 성능에 도움이 되지 않습니다. 실제로 이러한 특성을 변경하면 전체 성능이 저하될 수 있습니다.
디렉터리 데이터를 저장하는 데 사용되는 각 데이터베이스의 속성 크기를 조정할 수 있습니다.
검색 작업의 캐시 적중 비율을 개선하려면 nsslapd-dbcachesize 매개변수 값을 편집하여 6.5절. “데이터베이스 캐시 크기 설정” 에 설명된 대로 Directory Server에서 데이터베이스 캐시에서 유지보수하는 데이터의 양을 늘립니다.

4.6. 특수 항목 관리

Directory Server는 확장 가능한 데이터베이스가 일반 항목과 같지 않고 /etc/dirsrv/slapd-instance_name/dse.ldif 구성 파일에 cn=config 항목을 저장합니다. 따라서 cn=config 에 일반 사용자 또는 그룹을 저장하지 마십시오.

5장. 트랜잭션 로깅 튜닝

모든 Directory Server에는 관리하는 모든 데이터베이스에 대한 작업을 쓰는 트랜잭션 로그가 포함되어 있습니다. 수정과 같은 디렉터리 데이터베이스 작업을 수행할 때마다 서버는 해당 LDAP 작업의 결과로 호출되는 모든 데이터베이스 작업에 대해 단일 데이터베이스 트랜잭션을 생성합니다. 여기에는 항목 인덱스 파일의 항목 데이터를 업데이트하고 모든 특성 인덱스를 업데이트하는 작업이 모두 포함됩니다. 모든 작업이 성공하면 서버는 트랜잭션을 커밋하고 작업을 트랜잭션 로그에 쓰고 전체 트랜잭션이 디스크에 기록되는지 확인합니다. 이러한 작업 중 하나라도 실패하면 서버는 트랜잭션을 롤백하고 모든 작업이 삭제됩니다. 서버의 이 all-or-nothing 접근 방식은 업데이트 작업이 원자성 임을 보장합니다. 전체 작업이 영구적으로 수행되거나 영구적으로 성공하거나 실패합니다.
정기적으로 Directory Server (내부 하우스키핑 스레드를 통해)는 트랜잭션 로그의 내용을 실제 데이터베이스 인덱스 파일에 플러시하고 트랜잭션 로그에 트리밍이 필요한지 확인합니다.
서버에 정전과 같은 오류가 발생하고 비정상적으로 종료되면 최근 디렉터리 변경에 대한 정보는 트랜잭션 로그에 의해 계속 저장됩니다. 서버가 다시 시작되면 디렉터리는 오류 조건을 자동으로 감지하고 데이터베이스 트랜잭션 로그를 사용하여 데이터베이스를 복구합니다.
데이터베이스 트랜잭션 로깅 및 데이터베이스 복구는 개입이 필요한 자동 프로세스이지만 성능을 최적화하기 위해 일부 데이터베이스 트랜잭션 로깅 특성을 조정하는 것이 좋습니다.
주의
트랜잭션 로깅 속성은 시스템 수정 및 진단에만 제공됩니다. 이러한 설정은 Red Hat 기술 지원의 지침에 의해서만 변경될 수 있습니다. 이러한 속성 및 기타 구성 속성을 설정해도 디렉터리가 불안정해질 수 있습니다.

5.1. 데이터베이스 디렉터리를 분리 디스크 또는 파티션으로 이동

성능을 높이려면 NVMe(Nonvolatile memory express) 드라이브 또는 SSD와 같은 디렉터리 서버 데이터베이스와 트랜잭션 로그를 빠른 드라이브에 저장합니다.
예를 들어 Directory Server 인스턴스를 이미 실행하고 /dev/nvme0n1p1 파티션을 /var/lib/dirsrv/slapd-instance_name/db/ 디렉터리에 마운트하려는 경우 다음을 실행합니다.
  1. 인스턴스를 중지합니다.
    # systemctl stop dirsrv@instance_name
  2. /dev/nvme0n1p1 파티션을 임시 디렉터리에 마운트합니다. 예를 들면 다음과 같습니다.
    # mount /dev/nvme0n1p1 /mnt/
  3. /var/lib/dirsrv/slapd-instance_name/db/ 디렉터리의 콘텐츠를 임시 마운트 지점으로 복사합니다.
    # mv /var/lib/dirsrv/slapd-instance_name/db/* /mnt/
  4. 임시 디렉터리를 마운트 해제합니다.
    # umount /mnt/
  5. /var/lib/dirsrv/slapd-instance_name/db/ 도 별도의 마운트 지점인 경우 디렉터리를 마운트 해제합니다.
    # umount /var/lib/dirsrv/slapd-instance_name/db/
  6. 시스템을 부팅할 때 /dev/nvme0n1p1 파티션을 / var/lib/dirsrv/slapd--instance_name/에 자동으로 마운트하도록 /etc/ fstab 파일을 업데이트합니다. 자세한 내용은 Red Hat 시스템 관리자 가이드의 해당 섹션을 참조하십시오.
  7. 파일 시스템을 마운트합니다. /etc/fstab 에 항목을 추가한 경우 :
    # mount /var/lib/dirsrv/slapd-instance_name/db/
  8. SELinux가 강제 모드에서 실행 중인 경우 SELinux 컨텍스트를 복원하십시오.
    # restorecon -Rv /var/lib/dirsrv/slapd-instance_name/db/
  9. 인스턴스를 시작합니다.
    # systemctl start dirsrv@instance_name

5.2. 데이터베이스 검사점 간격 변경

정기적인 간격으로 Directory Server는 트랜잭션 로그에 기록된 작업을 데이터베이스 인덱스 파일에 기록하고 데이터베이스 트랜잭션 로그에 체크포인트 항목을 기록합니다. 데이터베이스 인덱스에 이미 작성된 변경 사항을 표시함으로써 체크포인트 항목은 트랜잭션 로그에서 복구를 시작할 위치를 표시하므로 복구 프로세스의 속도가 빨라집니다.
기본적으로 Directory Server는 60초마다 데이터베이스 트랜잭션 로그에 검사점 항목을 보내도록 설정됩니다. 검사점 간격을 늘리면 디렉터리 쓰기 작업의 성능이 증가할 수 있습니다.Increase the checkpoint interval may increase the performance of directory write operations. 그러나 체크포인트 간격을 늘리면 무질서하게 종료되고 데이터베이스 트랜잭션 로그 파일로 인해 더 많은 디스크 공간이 필요할 수 있습니다. 따라서 데이터베이스 최적화를 잘 알고 변경의 영향을 완전히 평가할 수 있는 경우에만 이 속성을 수정합니다.

5.2.1. 명령줄을 사용하여 데이터베이스 체크 포인트 간격 변경

명령줄을 사용하여 데이터베이스 체크포인트 간격을 변경하려면 다음을 입력합니다.
# dsconf -D "cn=Directory Manager" ldap://server.example.com backend config set --checkpoint-interval=120
이 예에서는 간격을 120초로 변경합니다.

5.2.2. 웹 콘솔을 사용하여 데이터베이스 체크포인트 간격 변경

웹 콘솔을 사용하여 데이터베이스 체크포인트 간격을 변경하려면 다음을 수행합니다.
  1. 웹 콘솔에서 Directory Server 사용자 인터페이스를 엽니다. 자세한 내용은 Red Hat Directory Server 관리 가이드의 웹 콘솔을 사용하여 디렉터리 서버 로깅 섹션을 참조하십시오.
  2. 인스턴스를 선택합니다.
  3. 데이터베이스 탭에서 글로벌 데이터베이스 구성을 선택합니다.
  4. 고급 설정 표시를 클릭합니다.
  5. Database Checkpoint Interval 필드에서 값을 업데이트합니다.
  6. Save Configuration 을 클릭합니다.

5.3. 지연 가능한 트랜잭션 비활성화

지속적 트랜잭션 로깅은 트랜잭션의 일련의 데이터베이스 작업으로 구성된 각 LDAP 업데이트 작업이 디스크에 물리적으로 기록됨을 의미합니다. 각 LDAP 작업을 여러 데이터베이스 작업으로 구성할 수 있지만 각 LDAP 작업은 단일 데이터베이스 트랜잭션으로 처리됩니다. 각 LDAP 작업은 atomic 및 7.9 둘 다입니다.
주의
성가신 트랜잭션을 비활성화하면 데이터 손실 위험에서 Directory Server 쓰기 성능이 향상될 수 있습니다.
안정된 트랜잭션 로깅이 비활성화되면 모든 디렉터리 데이터베이스 작업이 데이터베이스 트랜잭션 로그 파일에 기록되지만 물리적으로 디스크에 기록되지 않을 수 있습니다. 디렉터리 변경이 논리 데이터베이스 트랜잭션 로그 파일에 기록되었지만 시스템 충돌 시 디스크에 물리적으로 기록되지 않은 경우 변경 사항을 복구할 수 없습니다. 성형 트랜잭션이 비활성화되면 복구된 데이터베이스는 일관되지만 시스템 충돌 직전에 완료된 LDAP 쓰기 작업의 결과를 반영하지 않습니다.
기본적으로 데이터베이스 트랜잭션 로깅이 활성화됩니다. 벗어나는 트랜잭션 로깅을 비활성화하려면 다음을 수행합니다.
  1. Directory Server 인스턴스를 중지합니다.
    # dsctl instance_name stop
  2. /etc/dirsrv/slapd-instance_name/dse.ldif 파일을 편집하고 cn=config,cn=ldbm 데이터베이스,cn=plugins,cn=config 항목을 off 로 설정합니다.
    dn: cn=config,cn=ldbm database,cn=plugins,cn=config
    ...
    nsslapd-db-durable-transaction: off
    ...
  3. Directory Server 인스턴스를 시작합니다.
    # dsctl instance_name start

5.4. 트랜잭션 배치 지정

전체 트랜잭션 조정이 필요하지 않은 경우 업데이트 성능을 개선하려면 다음 명령을 사용합니다.
# dsconf -D "cn=Directory Manager" ldap://server.example.com backend config set --txn-batch-val=value
--txn-batch-val 은 Directory Server가 트랜잭션 로그에 커밋하기 전에 배치되는 트랜잭션 수를 지정합니다. 이 값을 0 보다 큰 값으로 설정하면 대기 중인 트랜잭션 수가 이 값과 동일할 때까지 서버에서 커밋 트랜잭션을 지연할 수 있습니다.

6장. 데이터베이스 캐시 설정 관리

Directory Server에서는 다음과 같은 캐시를 사용합니다.
  • 개별 디렉터리 항목이 포함된 Entry 캐시 입니다.
  • DN 캐시 는 DN 및 RDN을 항목과 연결하는 데 사용됩니다.
  • 데이터베이스 인덱스 파일 *.db*.db4 파일이 포함된 데이터베이스 캐시 입니다.
성능을 극대화하려면 모든 캐시 크기가 모든 레코드를 저장할 수 있어야 합니다. 권장되는 자동 크기 조정 기능을 사용하지 않고 사용 가능한 RAM이 충분하지 않은 경우 이전에 표시된 순서로 캐시에 여유 메모리를 할당합니다.

6.1. 데이터베이스 및 진입점 캐시 자동 크기 조정 기능

기본적으로 Directory Server는 데이터베이스 및 항목 캐시에 최적화된 크기를 자동으로 결정합니다. 자동 크기 조정은 인스턴스가 시작될 때 서버의 하드웨어 리소스에 따라 두 캐시의 크기를 최적화합니다.
중요
Red Hat은 자동 조정 설정을 사용하는 것이 좋습니다. 항목 캐시 크기를 수동으로 설정하지 마십시오.

6.1.1. 수동으로 데이터베이스 및 입력 캐시 자동 크기 활성화

10.1.1 이전 버전에서 인스턴스를 업그레이드했거나 이전에 항목 캐시 크기를 수동으로 설정한 경우 항목 캐시에 대한 자동 조정을 활성화할 수 있습니다.
cn=config,cn=ldbm 데이터베이스,cn=plugins,cn=config 항목의 다음 매개변수는 자동 크기 조정을 제어합니다.
nsslapd-cache-autosize
이 설정은 데이터베이스 및 항목 캐시에 자동 크기 조정이 활성화되어 있는지 여부를 제어합니다. 자동 크기 조정이 활성화됩니다.
  • 데이터베이스 및 항목 캐시 모두에서 nsslapd-cache-autosize 매개변수가 0 보다 큰 값으로 설정된 경우
  • 데이터베이스 캐시의 경우 nsslapd-cache-autosizensslapd-dbcachesize 매개변수가 0 으로 설정된 경우.
  • 항목 캐시의 경우 nsslapd-cache-autosizensslapd-cachememsize 매개변수가 0 으로 설정된 경우 .
nsslapd-cache-autosize-split
값은 데이터베이스 캐시에 사용되는 RAM의 백분율을 설정합니다. 나머지 백분율은 항목 캐시에 사용됩니다.
데이터베이스 캐시에 1.5GB 이상의 RAM을 사용하면 성능이 향상되지 않습니다. 따라서 Directory Server는 데이터베이스 캐시 1.5GB를 제한합니다.
데이터베이스 및 항목 캐시 자동 크기 조정을 활성화하려면 다음을 수행합니다.
  1. Directory Server 인스턴스를 중지합니다.
    # systemctl stop dirsrv@instance_name
  2. /etc/dirsrv/slapd-instance_name/dse.ldif 파일을 백업하십시오.
    # cp /etc/dirsrv/slapd-instance_name/dse.ldif \
         /etc/dirsrv/slapd-instance_name/dse.ldif.bak.$(date "+%F_%H-%M-%S")
  3. /etc/dirsrv/slapd-instance_name/dse.ldif 파일을 편집합니다.
    1. 데이터베이스 및 항목 캐시에 사용할 여유 시스템 RAM의 백분율을 설정합니다. 예를 들어 10%를 설정하려면 다음을 수행합니다.
      nsslapd-cache-autosize: 10
      참고
      nsslapd-cache-autosize 매개변수를 0 으로 설정하는 경우 추가로 설정해야 합니다.
      • cn=config,cn= ldbm 데이터베이스,cn=plugins,cn=config 항목의 nsslapd-dbcachesize0 으로 설정하여 자동 크기 데이터베이스 캐시를 활성화합니다.
      • cn=database_name,cn=ldbm 데이터베이스,cn=plugins,cn=config 항목의 nsslapd-cachememsize0 으로 설정하여 데이터베이스의 자동 크기 항목 캐시를 활성화합니다.
    2. 필요한 경우 데이터베이스 캐시에 사용 가능한 시스템 RAM에서 사용되는 백분율을 설정합니다. 예를 들어 40%를 설정하려면 다음을 수행합니다.
      nsslapd-cache-autosize-split: 40
      Directory Server는 진입점 캐시에 사용 가능한 메모리의 나머지 60%를 사용합니다.
    3. 변경 사항을 저장합니다.
  4. Directory Server 인스턴스를 시작합니다.
    # systemctl start dirsrv@instance_name

예 6.1. nsslapd-cache-autosizensslapd-cache-autosize-split Parameter

다음 설정은 두 매개변수의 기본값입니다.
nsslapd-cache-autosize: 10
nsslapd-cache-autosize-split: 40
이 설정을 사용하면 시스템의 사용 가능한 RAM의 10%가 사용됩니다(nsslapd-cache-autosize). 이 메모리에서 40%는 데이터베이스 캐시(nsslapd-cache-autosize-split)에 사용하고 나머지 60%는 항목 캐시에 사용됩니다.
사용 가능한 RAM에 따라 다음과 같은 캐시 크기가 생성됩니다.
GB의 여유 RAM
데이터베이스 캐시 크기
항목 캐시 크기
1GB
40MB
62 MB
2GB
82MB
122MB
4GB
164 MB
245 MB
8GB
328MB
492 MB
16GB
512 MB[a]
1,126 MB
32GB
512MB [a]
2,764 MB
64GB
512MB [a]
6,042 MB
128GB
512MB [a]
12,596 MB
[a] 디렉터리 서버는 nsslapd-dbcachesize 매개변수에 512MB 제한을 적용합니다.

6.2. 필요한 캐시 크기 확인

dsconf monitor dbmon 명령을 사용하면 런타임에 캐시 통계를 모니터링할 수 있습니다.
통계를 표시하려면 다음을 입력합니다.
# dsconf -D "cn=Directory Manager" ldap://server.example.com monitor dbmon
DB Monitor Report: 2020-06-24 11:31:27
--------------------------------------------------------
Database Cache:
 - Cache Hit Ratio:     50%
 - Free Space:          397.31 KB
 - Free Percentage:     2.2%
 - RO Page Drops:       0
 - Pages In:            2934772
 - Pages Out:           219075

Normalized DN Cache:
 - Cache Hit Ratio:     60%
 - Free Space:          19.98 MB
 - Free Percentage:     99.9%
 - DN Count:            100000
 - Evictions:           9282348

Backends:
  - dc=example,dc=com (userroot):
    - Entry Cache Hit Ratio:        66%
    - Entry Cache Count:            50000
    - Entry Cache Free Space:       2.0 KB
    - Entry Cache Free Percentage:  0.8%
    - Entry Cache Average Size:     8.9 KB
    - DN Cache Hit Ratio:           21%
    - DN Cache Count:               100000
    - DN Cache Free Space:          4.29 MB
    - DN Cache Free Percentage:     69.8%
    - DN Cache Average Size:        130.0 B
선택적으로 -b back_end 또는 -x 옵션을 명령에 전달하여 특정 백엔드 또는 인덱스에 대한 통계를 표시합니다.
캐시 크기가 충분한 경우 DN 캐시 개수의 수가 캐시 개수 백엔드 항목의 값과 일치합니다. 또한 모든 항목 및 DN이 해당 캐시에 적합하면 Entry Cache Count 값이 DN Cache Count 값과 일치합니다.
예제의 출력에는 다음이 표시됩니다.
  • 2.2%의 사용 가능한 데이터베이스 캐시만 남아 있습니다.
    Database Cache:
     ...
     - Free Space:          397.31 KB
     - Free Percentage:     2.2%
    그러나 효율적으로 운영하려면 최소 percent의 사용 가능한 데이터베이스 캐시가 필요합니다. 데이터베이스 캐시의 최적 크기를 확인하려면 /var/lib/dirsrv/slapd-instance_name/db/ 디렉터리의 모든 *.db*.db4 파일의 크기를 계산하고, 오버헤드의 경우 12%를 추가합니다.
    데이터베이스 캐시를 설정하려면 6.5절. “데이터베이스 캐시 크기 설정” 을 참조하십시오.
  • 사용자 루트 데이터베이스의 DN 캐시는 잘 선택되었습니다.
    Backends:
      - dc=example,dc=com (userroot):
        ...
        - DN Cache Count:               100000
        - DN Cache Free Space:          4.29 MB
        - DN Cache Free Percentage:     69.8%
        - DN Cache Average Size:        130.0 B
    
    데이터베이스의 DN 캐시에는 100000 개의 레코드, 69, %의 캐시가 비어 있으며, 메모리의 각 DN에는 평균 CloudEvent 바이트가 필요합니다.
    DN 캐시를 설정하려면 6.4절. “DN 캐시 크기 설정” 를 참조하십시오.
  • userroot 데이터베이스의 항목 캐시에 대한 통계는 성능 향상을 위해 항목 캐시 값을 늘려야 함을 나타냅니다.
    Backends:
      - dc=example,dc=com (userroot):
      ...
        - Entry Cache Count:            50000
        - Entry Cache Free Space:       2.0 KB
        - Entry Cache Free Percentage:  0.8%
        - Entry Cache Average Size:     8.9 KB
    이 항목 캐시에는 이 데이터베이스 50000 레코드에 포함되어 있으며 2 Kilobytes의 여유 공간만 남습니다. Directory Server가 100000개의 DN을 모두 캐시할 수 있도록 하려면 DN(D DNs * 8,9KB 평균 항목 크기)을 최소 890MB로 늘려야 합니다. 그러나 Red Hat은 최소 필요한 크기를 다음 최고 GB로 반올림하고 그 결과를 두 배로 늘릴 것을 권장합니다. 이 예에서는 항목 캐시를 2GB로 설정해야 합니다.
    항목 캐시를 설정하려면 6.3절. “수동으로 엔트리 캐시 크기 설정” 를 참조하십시오.

6.3. 수동으로 엔트리 캐시 크기 설정

항목 캐시는 검색 및 읽기 작업 중에 사용되는 디렉터리 항목을 저장하는 데 사용됩니다. 항목 캐시를 모든 레코드를 저장할 수 있는 크기로 설정하면 검색 작업에 성능이 가장 높은 영향을 미칩니다.
항목 캐싱이 구성되지 않은 경우 Directory Server는 id2entry.db 데이터베이스 파일에서 항목을 읽고 메모리 내 형식으로 DN을 디스크에 있는 형식으로 변환합니다. 캐시에 저장된 항목을 사용하면 서버가 디스크 I/O 및 변환 단계를 건너뛸 수 있습니다.
참고
항목 캐시 크기를 수동으로 설정하는 대신 하드웨어 리소스를 기반으로 최적화된 설정에 맞게 자동 크기 조정 기능을 권장합니다. 자세한 내용은 6.1.1절. “수동으로 데이터베이스 및 입력 캐시 자동 크기 활성화”의 내용을 참조하십시오.

6.3.1. 명령줄을 사용하여 엔트리 캐시 크기 수동 설정

명령줄을 사용하여 항목 캐시 크기를 수동으로 설정하려면 다음을 수행합니다.
  1. 자동 캐시 튜닝을 비활성화합니다.
    # dsconf -D "cn=Directory Manager" ldap://server.example.com backend config set --cache-autosize=0
  2. 접미사와 해당 백엔드를 표시합니다.
    # dsconf -D "cn=Directory Manager" ldap://server.example.com suffix list
    dc=example,dc=com (userroot)
    이 명령은 각 접미사 옆에 백엔드 데이터베이스의 이름을 표시합니다. 다음 단계에서 접미사의 데이터베이스 이름이 필요합니다.
  3. 데이터베이스의 항목 캐시 크기를 설정합니다.
    # dsconf -D "cn=Directory Manager" ldap://server.example.com backend suffix set --cache-memsize=2147483648 userRoot
    이 명령은 항목 캐시를 2GB로 설정합니다.
  4. Directory 서비스 인스턴스를 다시 시작하십시오.
    # dsctl instance_name restart

6.3.2. 웹 콘솔을 사용하여 엔트리 캐시 크기 수동 설정

웹 콘솔을 사용하여 항목 캐시 크기를 수동으로 설정하려면 다음을 수행합니다.
  1. 웹 콘솔에서 Directory Server 사용자 인터페이스를 엽니다. 자세한 내용은 Red Hat Directory Server 관리 가이드의 웹 콘솔을 사용하여 디렉터리 서버 로깅 섹션을 참조하십시오.
  2. 인스턴스를 선택합니다.
  3. 데이터베이스 탭에서 글로벌 데이터베이스 구성을 선택합니다.
  4. 자동 캐시 튜닝을 비활성화합니다.
  5. Save Configuration 을 클릭합니다.
  6. 작업 버튼을 클릭하고 인스턴스 재시작 을 선택합니다.
  7. 입력 캐시 크기(바이트) 필드에서 데이터베이스 캐시 크기를 설정합니다.
  8. Save Configuration 을 클릭합니다.
  9. 작업 버튼을 클릭하고 인스턴스 재시작 을 선택합니다.

6.4. DN 캐시 크기 설정

entryrdn 인덱스는 DNs 및 RDNs를 항목과 연결하는 데 사용됩니다. 이를 통해 서버는 하위 트리 이름 변경, 항목 이동moddn 작업을 효율적으로 수행할 수 있습니다. DN 캐시는 비용이 많이 드는 파일 I/O 및 변환 작업을 피하기 위해 진입점 인덱스의 메모리 내 표현을 캐시하는 데 사용됩니다. 특히 항목 이름 변경이동 작업에 국한되지 않고 최상의 성능을 얻으려면 DN 캐시를 디렉터리 서버가 데이터베이스의 모든 DN을 캐시할 수 있는 크기로 설정합니다.
DN이 캐시에 저장되지 않은 경우 Directory Server는 entryrdn.db 인덱스 데이터베이스 파일에서 DN을 읽고 메모리 내 형식으로 DN을 온-디스크 형식에서 변환합니다. 캐시에 저장된 DNS를 사용하면 서버가 디스크 I/O 및 변환 단계를 건너뛸 수 있습니다.

6.4.1. 명령줄을 사용하여 DN 캐시 크기 설정

명령줄을 사용하여 데이터베이스의 DN 캐시 크기를 설정하려면 다음을 수행합니다.
  1. 접미사와 해당 백엔드를 표시합니다.
    # dsconf -D "cn=Directory Manager" ldap://server.example.com suffix list
    dc=example,dc=com (userroot)
    이 명령은 각 접미사 옆에 백엔드 데이터베이스의 이름을 표시합니다. 다음 단계에서 접미사의 데이터베이스 이름이 필요합니다.
  2. 다음 명령을 사용하여 DN 캐시 크기를 설정합니다.
    # dsconf -D "cn=Directory Manager" ldap://server.example.com backend suffix set --dncache-memsize=20971520 userRoot
    이 명령은 사용자Root 데이터베이스의 DN 캐시를 20MB로 설정합니다.
  3. Directory 서비스 인스턴스를 다시 시작하십시오.
    # dsctl instance_name restart

6.4.2. 웹 콘솔을 사용하여 DN 캐시 크기 설정

웹 콘솔을 사용하여 데이터베이스의 DN 캐시 크기를 설정하려면 다음을 수행합니다.
  1. 웹 콘솔에서 Directory Server 사용자 인터페이스를 엽니다. 자세한 내용은 Red Hat Directory Server 관리 가이드의 웹 콘솔을 사용하여 디렉터리 서버 로깅 섹션을 참조하십시오.
  2. 인스턴스를 선택합니다.
  3. Database 탭에서 DN 캐시 크기를 설정할 접미사를 선택합니다.
  4. DN 캐시 크기(바이트) 필드에 바이트 단위의 크기를 입력합니다.
  5. Save Configuration 을 클릭합니다.
  6. 작업 버튼을 클릭하고 인스턴스 재시작 을 선택합니다.

6.5. 데이터베이스 캐시 크기 설정

데이터베이스 캐시에는 데이터베이스에 대한 Berkeley 데이터베이스 인덱스 파일이 포함되어 있습니다. 즉, 데이터베이스에서 인덱싱하는 데 사용되는 *.db 및 기타 모든 파일을 의미합니다. 이 값은 Berkeley DB API 함수 set_cachesize() 에 전달됩니다.
이 캐시 크기는 항목 캐시 크기보다 Directory Server 성능에 미치는 영향은 적지만 항목 캐시 크기가 설정된 후 사용 가능한 RAM이 있는 경우 데이터베이스 캐시에 할당된 메모리 양을 늘립니다.
운영 체제에는 RAM 사용을 위해 데이터베이스 캐시와 경쟁할 수 있는 파일 시스템 캐시도 있습니다. 파일 시스템 캐시 설정 및 파일 시스템 캐시 모니터링에 대한 정보를 찾으려면 운영 체제 설명서를 참조하십시오.
참고
항목 캐시 크기를 수동으로 설정하는 대신 하드웨어 리소스를 기반으로 최적화된 설정에 맞게 자동 크기 조정 기능을 권장합니다. 자세한 내용은 6.1.1절. “수동으로 데이터베이스 및 입력 캐시 자동 크기 활성화”의 내용을 참조하십시오.

6.5.1. 명령줄을 사용하여 데이터베이스 캐시 크기 수동 설정

명령줄을 사용하여 데이터베이스 캐시 크기를 수동으로 설정하려면 다음을 수행합니다.
  1. 자동 캐시 튜닝을 비활성화하고 데이터베이스 캐시 크기를 설정합니다.
    # dsconf -D "cn=Directory Manager" ldap://server.example.com backend config set --cache-autosize=0 --dbcachesize=268435456
    이 명령은 데이터베이스 캐시를 256MB로 설정합니다.
  2. Directory 서비스 인스턴스를 다시 시작하십시오.
    # dsctl instance_name restart

6.5.2. 웹 콘솔을 사용하여 데이터베이스 캐시 크기 수동 설정

웹 콘솔을 사용하여 데이터베이스 캐시 크기를 수동으로 설정하려면 다음을 수행합니다.
  1. 웹 콘솔에서 Directory Server 사용자 인터페이스를 엽니다. 자세한 내용은 Red Hat Directory Server 관리 가이드의 웹 콘솔을 사용하여 디렉터리 서버 로깅 섹션을 참조하십시오.
  2. 인스턴스를 선택합니다.
  3. 데이터베이스 탭에서 글로벌 데이터베이스 구성을 선택합니다.
  4. 자동 캐시 튜닝을 비활성화합니다.
  5. Save Configuration 을 클릭합니다.
  6. 데이터베이스 캐시 크기(바이트) 필드를 데이터베이스 캐시 크기로 설정합니다.
  7. Save Configuration 을 클릭합니다.
  8. 작업 버튼을 클릭하고 인스턴스 재시작 을 선택합니다.

6.5.3. RAM 디스크에 데이터베이스 캐시 저장

Directory Server 인스턴스를 실행하는 시스템에 충분한 RAM이 있는 경우 추가 성능 향상을 위해 RAM 디스크에 데이터베이스 캐시를 선택적으로 저장할 수 있습니다.
  1. RAM 디스크에 데이터베이스 캐시 및 메타데이터의 디렉터리를 생성합니다.
    # mkdir -p /dev/shm/slapd-instance_name/
  2. 디렉터리에 다음 권한을 설정합니다.
    # chown dirsrv:dirsrv /dev/shm/slapd-instance_name/
    # chmod 770 /dev/shm/slapd-instance_name/
  3. Directory Server 인스턴스를 중지합니다.
    # systemctl stop dirsrv@instance_name
  4. /etc/dirsrv/slapd-instance_name/dse.ldif 파일을 편집하고 cn=bdb,cn=config,cn=plugins,cn=plugins,cn=config 항목의 nsslapd-db -home-directory 속성에 새 경로를 설정합니다.
    dn: cn=bdb,cn=config,cn=ldbm database,cn=plugins,cn=config
    ...
    nsslapd-db-home-directory: /dev/shm/slapd-instance_name/
    nsslapd-db-home-directory 특성이 없는 경우 cn=bdb,cn=config,cn=ldbm database,cn=plugins,cn=config 항목에 새 값을 추가하여 추가합니다.
  5. Directory Server 인스턴스를 시작합니다.
    # systemctl start dirsrv@instance_name
참고
데이터베이스 캐시가 RAM 디스크에 저장되면 재부팅할 때마다 Directory Server를 다시 생성해야 합니다. 결과적으로 캐시를 다시 생성할 때까지 서비스 시작 및 초기 작업이 느려집니다.

7장. 디렉터리 서버 스레드 수 설정

Directory Server에서 동시 연결을 처리하는 데 사용하는 스레드 수는 서버의 성능에 영향을 미칩니다. 예를 들어, 모든 스레드가 시간이 많이 소요되는 작업(예: 추가 작업)을 처리하는 경우 무료 스레드가 요청을 처리할 수 있을 때까지 들어오는 새 연결이 큐에 추가됩니다.
서버가 적은 수의 CPU 스레드를 제공하는 경우 더 많은 스레드를 구성하면 성능이 향상될 수 있습니다. 그러나 CPU 스레드가 많은 서버에서 너무 높은 값을 설정하면 성능이 향상되지 않습니다.
기본적으로 Directory Server는 스레드 수를 자동으로 계산합니다. 이 수는 인스턴스가 시작될 때 서버의 하드웨어 리소스를 기반으로 합니다.
참고
Red Hat은 자동 조정 설정을 사용하는 것이 좋습니다. 스레드 수를 수동으로 설정하지 마십시오.

7.1. 자동 스레드 튜닝

자동 스레드 튜닝을 활성화하면 Directory Server는 다음과 같이 최적화된 스레드 수를 사용합니다.
CPU 스레드 수
Directory Server Threads 수
1
16
2
16
4
24
8
32
16
48
32
64
64
96
128
192
256
384
512
512
[a]
1024
512 [a]
2048
512 [a]
[a] 권장되는 최대 스레드 수가 적용됩니다.

7.1.1. 명령줄을 사용하여 자동 스레드 튜닝 활성화

Directory Server는 사용 가능한 하드웨어 스레드에 따라 스레드 수를 자동으로 설정할 수 있습니다. 이 기능을 활성화하려면 다음을 수행합니다.
  1. 스레드 수 자동 설정을 활성화합니다.
    # dsconf -D "cn=Directory Manager" ldap://server.example.com config replace nsslapd-threadnumber="-1"
  2. Directory Server 인스턴스를 다시 시작하십시오.
    # dsctl instance_name restart
중요
스레드 수의 자동 설정을 활성화하면 nsslapd-threadnumber 매개변수에 Directory Server가 실행되는 동안 계산된 스레드 수가 표시됩니다.

7.1.2. 웹 콘솔을 사용하여 자동 스레드 튜닝 활성화

Directory Server는 사용 가능한 하드웨어 스레드에 따라 스레드 수를 자동으로 설정할 수 있습니다. 이 기능을 활성화하려면 다음을 수행합니다.
  1. 웹 콘솔에서 Directory Server 사용자 인터페이스를 엽니다. 자세한 내용은 Red Hat Directory Server 관리 가이드의 웹 콘솔을 사용하여 디렉터리 서버 로깅 섹션을 참조하십시오.
  2. 인스턴스를 선택합니다.
  3. 서버 설정 메뉴를 열고 튜닝 및 제한을 선택합니다.
  4. Number of Worker Threads 필드를 -1 로 설정합니다.
  5. 저장을 클릭합니다.
  6. 작업 버튼을 클릭하고 인스턴스 재시작 을 선택합니다.
중요
자동 설정을 활성화하면 Directory Server가 실행되는 동안 Number of Worker Threads 필드에 계산된 스레드 수가 표시됩니다.

7.2. 스레드 수를 수동으로 설정

경우에 따라 자동 스레드 튜닝을 사용하는 대신 고정된 수의 Directory Server 스레드를 수동으로 설정해야 할 수 있습니다.
참고
예를 들어 Directory Server 인스턴스를 실행하는 가상 머신의 CPU 코어를 증가했기 때문에 하드웨어 스레드 수가 변경되는 경우 스레드 수를 수동으로 업데이트해야 합니다. 최적화된 자동 설정 사용에 대한 자세한 내용은 7.1절. “자동 스레드 튜닝” 을 참조하십시오.

7.2.1. 명령줄을 사용하여 스레드 수를 수동으로 설정

명령줄을 사용하여 스레드 수를 수동으로 설정하려면 다음을 수행합니다.
  1. 스레드 수를 설정합니다.
    # dsconf -D "cn=Directory Manager" ldap://server.example.com config replace nsslapd-threadnumber="64"
    이 명령은 스레드 수를 64 로 설정합니다.
  2. Directory Server 인스턴스를 다시 시작하십시오.
    # dsctl instance_name restart

7.2.2. 웹 콘솔을 사용하여 스레드 수를 수동으로 설정

웹 콘솔을 사용하여 스레드 수를 수동으로 설정하려면 다음을 수행합니다.
  1. 웹 콘솔에서 Directory Server 사용자 인터페이스를 엽니다. 자세한 내용은 Red Hat Directory Server 관리 가이드의 웹 콘솔을 사용하여 디렉터리 서버 로깅 섹션을 참조하십시오.
  2. 인스턴스를 선택합니다.
  3. 서버 설정 메뉴를 열고 튜닝 및 제한을 선택합니다.
  4. Number of Worker Threads 필드를 스레드 수로 설정합니다.
  5. 저장을 클릭합니다.
  6. 작업 버튼을 클릭하고 인스턴스 재시작 을 선택합니다.

8장. 복제 성능 튜닝

8.1. Multi-supplier Replication Efficiency 개선

다중 공급 업체의 복제 대기 시간은 특히 서버가 광역 네트워크(WAN)를 사용하여 연결되어 있는 경우 여러 공급업체가 동시에 업데이트를 수신하는 경우 발생할 수 있습니다. 이는 한 공급업체가 장기간 배포하지 않고 복제본에 독점적으로 액세스할 때 발생합니다. 이러한 상황에서 다른 공급업체는 이 소비자에게 업데이트를 보낼 수 없으므로 복제 대기 시간이 증가합니다.
일정 시간 후에 복제본을 해제하려면 복제 공급자 및 허브에서 nsds5ReplicaReleaseTimeout 매개변수를 설정합니다.
참고
대부분의 환경에는 60 초의 기본값이 적합합니다. 너무 높거나 너무 낮게 설정된 값은 복제 성능에 부정적인 영향을 미칠 수 있습니다. 값을 너무 낮게 설정하면 복제 서버가 지속적으로 서로 복구되며 서버는 많은 업데이트를 보낼 수 없습니다. 트래픽이 많은 복제 환경에서 시간 초과가 길어지면 한 공급업체가 복제본에 독점적으로 액세스하는 상황을 개선할 수 있습니다. 그러나 대부분의 경우 120 초 이상의 값이 복제 속도가 느려집니다.

8.1.1. 명령줄을 사용하여 복제 릴리스 시간 제한 설정

명령줄을 사용하여 복제 릴리스 시간 제한을 설정하려면 다음을 수행합니다.
  1. 시간 초과 값을 설정합니다.
    # dsconf -D "cn=Directory Manager" ldap://supplier.example.com replication set --suffix="dc=example,dc=com" --repl-release-timeout=70
    이 명령은 dc=example,dc=com 접미사의 복제 릴리스 시간 초과 값을 70 초로 설정합니다.
  2. Directory Server 인스턴스를 다시 시작하십시오.
    # dsctl instance_name restart

8.1.2. 웹 콘솔을 사용하여 복제 릴리스 시간 제한 설정

웹 콘솔을 사용하여 복제 릴리스 시간 제한을 설정하려면 다음을 수행합니다.
  1. 웹 콘솔에서 Directory Server 사용자 인터페이스를 엽니다. 자세한 내용은 Red Hat Directory Server 관리 가이드의 웹 콘솔을 사용하여 디렉터리 서버 로깅 섹션을 참조하십시오.
  2. 인스턴스를 선택합니다.
  3. 복제 메뉴를 열고 Configuration (구성)을 선택합니다.
  4. 고급 설정 표시를 클릭합니다.
  5. 복제 릴리스 시간 제한 필드에 시간 초과 값을 설정합니다.
  6. 저장을 클릭합니다.
  7. 작업 버튼을 클릭하고 인스턴스 재시작 을 선택합니다.

10장. Import Performance 개선

매우 큰 엔트리 크기 또는 많은 수의 항목이 가져오기 작업 중에 서버 성능에 부정적인 영향을 미칠 수 있습니다. 이 섹션에서는 가져오기 성능을 개선하기 위해 Directory Server 설정과 운영 체제 설정을 모두 조정하는 방법을 설명합니다.

10.1. 대규모 데이터베이스를 위해 Directory Server 튜닝 및 대규모 속성으로 가져오기 및 가져오기

다음 시나리오에서 항목 캐시를 업데이트합니다.
  • 매우 큰 데이터베이스를 가져오려고 합니다.
  • 인증서 체인 또는 이미지를 저장하는 바이너리 속성과 같이 큰 속성이 있는 데이터베이스를 가져오려고 합니다.

10.2. 많은 수의 항목 가져오기를 위해 Directory Server 튜닝

항목을 많이 가져오는 경우 최대 사용자 프로세스 수에 대한 운영 체제 설정은 Directory Server의 성능을 제한할 수 있습니다.
  • 임시로 최대 프로세스 수를 늘리려면 다음을 입력합니다.
    # ulimit -u 32000
    사용자가 로그아웃하면 변경 사항이 기본 설정으로 돌아갑니다.
  • 최대 프로세스 수를 영구적으로 늘리려면 ulimit 값을 설정하는 방법을 참조하십시오.

부록 A. 수정 내역

버전 번호는 Red Hat Directory Server의 버전 번호가 아닌 이 설명서의 버전 번호와 관련이 있습니다.
고친 과정
고침 11.5-1Tue May 10 2022Marc Muehlfeld
이 가이드의 Red Hat Directory Server 11.5 릴리스.
고침 11.4-1Tue Nov 09 2021Marc Muehlfeld
이 가이드의 Red Hat Directory Server 11.4 릴리스.
고침 11.3-1Tue May 11 2021Marc Muehlfeld
이 가이드의 Red Hat Directory Server 11.3 릴리스.
고침 11.2-1Tue Nov 03 2020Marc Muehlfeld
이 가이드의 Red Hat Directory Server 11.2 릴리스입니다.
고침 11.1-1Tue Apr 28 2020Marc Muehlfeld
이 가이드의 Red Hat Directory Server 11.1 릴리스.
고친 과정
고침 11.0-1Tue Nov 05 2019Marc Muehlfeld
이 가이드의 Red Hat Directory Server 11.0 릴리스.

법적 공지

Copyright © 2021 Red Hat, Inc.
이 문서는 Creative Commons Attribution-ShareAlike 3.0 Unported License 에 따라 Red Hat에 의해 라이센스가 부여됩니다. 이 문서 또는 수정된 버전을 배포하는 경우 Red Hat, Inc.에 속성을 제공하고 원본 링크를 제공해야 합니다. 문서가 수정되는 경우 모든 Red Hat 상표를 제거해야 합니다.
Red Hat은 이 문서의 라이센스 제공자로서 관련 법률이 허용하는 한도 내에서 CC-BY-SA의 섹션 4d를 시행할 권리를 포기하며 이를 주장하지 않을 것에 동의합니다.
Red Hat, Red Hat Enterprise Linux, Shadowman 로고, Red Hat 로고, JBoss, OpenShift, Fedora, Infinity 로고 및 RHCE는 미국 및 기타 국가에 등록된 Red Hat, Inc.의 상표입니다.
Linux® 는 미국 및 기타 국가에 등록된 Linus Torvalds의 등록 상표입니다.
Java® 는 Oracle 및/또는 그 계열사의 등록 상표입니다.
XFS® 는 미국 및/또는 기타 국가에 등록된 Silicon Graphics International Corp. 또는 그 자회사의 상표입니다.
MySQL® 은 미국, 유럽 연합 및 기타 국가에 있는 MySQL AB의 등록 상표입니다.
Node.js® 는 Joyent의 공식 상표입니다. Red Hat은 공식 Joyent Node.js 오픈 소스 또는 상용 프로젝트에서 공식적으로 관련되거나 보증되지 않습니다.
OpenStack® Word Mark 및 OpenStack 로고는 미국 및 기타 국가에서 OpenStack Foundation의 등록 상표/서비스표 또는 상표/서비스표이며 OpenStack Foundation의 권한과 함께 사용됩니다. 당사는 OpenStack Foundation 또는 OpenStack 커뮤니티와 제휴 관계가 아니며 보증 또는 후원을 받지 않습니다.
기타 모든 상표는 각각 해당 소유자의 자산입니다.