재판 : 오라클을위한 네트워크 성능 최적화

이 장에서는 연결 성능을 최적화하는 방법에 대해 설명합니다.. 이 장에는 다음 항목이 포함되어 있습니다.:

세션 데이터 단위 구성

일반적인 데이터베이스 구성에서, Oracle Net은 데이터를 다음 크기의 버퍼로 캡슐화합니다. 세션 데이터 단위 (SDU) 네트워크를 통해 데이터를 보내기 전에. Oracle Net은 채워지면 각 버퍼를 보냅니다., 플러시, 또는 응용 프로그램이 데이터를 읽으려고 할 때. 조정 한 번에 전송하기 위해 Oracle Net에 제공된 데이터 양과 관련된 SDU 버퍼의 크기는 성능을 향상시킬 수 있습니다., 네트워크 활용, 및 메모리 소비. 많은 양의 데이터가 전송되는 경우, SDU 크기를 늘리면 성능과 네트워크 처리량이 향상 될 수 있습니다..

한 번에 전송하기 위해 Oracle Net에 제공되는 데이터의 양을 메시지 크기라고합니다.. Oracle Net은 기본적으로 메시지 크기가 0 과 8192 바이트, 그리고 드물게, 보다 크다 8192 바이트. 이 가정이 사실이라면, 그 다음 대부분, 데이터는 하나의 SDU 버퍼를 사용하여 전송됩니다..

SDU 크기는 다음과 같습니다. 512 바이트 65535 바이트. 클라이언트 및 전용 서버의 기본 SDU는 다음과 같습니다. 8192 바이트. 공유 서버의 기본 SDU는 다음과 같습니다. 65535 바이트.

사용되는 실제 SDU 크기는 연결시 클라이언트와 서버간에 협상되며 클라이언트 및 서버 값 중 더 작습니다.. 기본값과 다른 SDU 크기를 구성하려면 클라이언트와 서버 컴퓨터 모두에서 SDU를 구성해야합니다., 공유 서버를 사용하지 않는 한. 공유 서버의 경우, 공유 서버의 기본값은 최대 값이므로 클라이언트 값만 변경해야합니다..

주요 메시지 크기가 다음보다 작거나 클 때 SDU 크기 변경을 고려해야합니다. 8192. SDU 크기는 70 주요 메시지 크기보다 큰 바이트. 우세한 메시지 크기에 70 바이트가 최대 SDU를 초과합니다., 그런 다음 SDU는 메시지 크기가 각 부분이있는 가장 작은 수의 동일한 부분으로 나뉘도록 설정되어야합니다. 70 SDU 크기보다 작은 바이트. 기본값을 변경하려면, 변경 DEFAULT_SDU_SIZE 매개 변수 sqlnet.ora 파일.

예를 들면, 응용 프로그램에서 보내고받는 대부분의 메시지가 8KB 미만인 경우, 고려하여 70 오버 헤드 용 바이트, SDU를 8KB로 설정하면 좋은 결과를 얻을 수 있습니다.. 충분한 메모리를 사용할 수있는 경우, 그런 다음 SDU에 대해 최대 값을 사용하면 Oracle Net Services에 대한 시스템 호출 수와 오버 헤드가 최소화됩니다..

노트:

Oracle 데이터베이스로 시작 11, Oracle Net Services는 구성 요소에 대해 최적화 된 대량 데이터 전송, Oracle SecureFiles LOB 및 Oracle Data Guard redo 전송 서비스와 같은. SDU 크기 제한, 네트워크 매개 변수 파일에 지정된대로, 이러한 대량 데이터 전송에는 적용되지 않습니다..

데이터베이스의 SDU 크기 설정

데이터베이스 서버의 SDU 크기를 설정하려면, 다음 파일 구성:

  • sqlnet.ora구성 DEFAULT_SDU_SIZE 매개 변수 sqlnet.ora 파일, 다음과 같이:
    DEFAULT_SDU_SIZE = 8192
    
  • 초기화 매개 변수 파일 공유 서버 프로세스를 사용하는 경우, 그런 다음 SDU 크기를 DISPATCHERS 초기화 매개 변수 파일의 매개 변수, 다음과 같이:
    DISPATCHERS ="(DESCRIPTION =(주소 =(프로토콜 = tcp))(SDU = 8192))"
    
  • listener.ora대상 목록으로 리스너를 구성한 경우 listener.ora 파일, 그런 다음 SDU의 값은 SID_LIST 요소는의 현재 설정을 재정의합니다. sqlnet.ora 전용 서버 프로세스를 사용할 때 파일.
    SID_LIST_listener_name=
      (SID_LIST = 
        (SID_DESC =
         (SDU = 8192)
         (SID_NAME = 판매)))
    

    더 작은 SDU 크기 값과 클라이언트에 대해 구성된 값이 우선합니다..

클라이언트의 SDU 크기 설정

클라이언트의 SDU 크기를 설정하려면, 다음 파일 구성:

  • sqlnet.ora클라이언트 측 글로벌 구성의 경우, 구성 DEFAULT_SDU_SIZE 매개 변수 sqlnet.ora 파일, 다음과 같이:
    DEFAULT_SDU_SIZE = 8192
    
  • tnsnames.ora특정 접속 기술자의 경우, 당신은 지정할 수 있습니다 SDU 매개 변수 DESCRIPTION 매개 변수.
    sales.us.example.com =
    (DESCRIPTION = 
        (SDU = 11280) 
          (주소 =(프로토콜 = tcp)(HOST = 판매 서버)(포트 = 1521))
        (CONNECT_DATA =
         (SERVICE_NAME = sales.us.example.com))
    ) 
    

SDU 크기는 특정 접속 설명자에 대한 모든 Oracle Net 프로토콜에 적용됩니다..

대역폭 지연 제품 결정

대역폭-지연 제품은 네트워크 대역폭과 네트워크를 통과하는 데이터의 왕복 시간의 곱입니다.. 왕복 시간을 결정하는 간단한 방법, 다음과 같은 명령을 사용하는 것입니다. ping 한 호스트에서 다른 호스트로 돌아가서 반환 된 응답 시간을 사용합니다. ping.

예를 들면, 네트워크의 대역폭이 100 Mbps 및 5ms의 왕복 시간, 그런 다음 송신 및 수신 버퍼는 최소한 (100*10^ 6) * (5/10^ 3) 조금 또는 대략 62.5 킬로바이트.

다음 방정식은 관련된 단위와 요인 간의 관계를 보여줍니다.:

100,000,000 비트   1 바이트   5 초
---------------- 엑스 ------ 엑스 --------- = 62,500 바이트
 1 둘째          8 비트     1000

설정 SEND_BUF_SIZERECV_BUF_SIZE 적어도 대역폭 지연 제품은 많은 양의 데이터가 전송 될 때 네트워크 대역폭이 최적으로 활용되도록 보장합니다..

앞의 방정식에 따라, 이 네트워크 링크의 대역폭 지연 곱은 약 64KB입니다.. 기본 데이터베이스와 대기 데이터베이스간에 다시 실행 데이터를 전송하는 데 사용되는 가장 큰 메시지가 1MB 인 경우, 다음 값은 SEND_BUF_SIZERECV_BUF_SIZE 매개 변수는 1MB가 될 수 있습니다.. 하나, 평균 메시지가 적은 경우, 64KB로 설정하면 사용 가능한 대역폭의 사용을 최적화 할 수 있습니다..

또한보십시오:

메시지 크기 결정에 대한 정보, 인용하다 “통계 예”

대부분의 네트워크 프로토콜, 확인하십시오 RECV_BUF_SIZE 네트워크 연결의 한쪽 끝에있는 매개 변수, 일반적으로 클라이언트에서, 의 가치와 같습니다 SEND_BUF_SIZE다른 쪽 끝에있는 매개 변수, 일반적으로 서버에서.

I / O 버퍼 공간 구성

안정적인 네트워크 프로토콜, TCP / IP와 같은, 하위 및 상위 계층 프로토콜과 송수신하는 동안 데이터를 송신 및 수신 버퍼에 버퍼링합니다.. 이러한 버퍼의 크기는 흐름 제어 결정에 영향을 주어 네트워크 성능에 영향을줍니다..

그만큼 RECV_BUF_SIZESEND_BUF_SIZE 매개 변수는 Oracle Net 연결과 연관된 소켓 버퍼의 크기를 지정합니다.. 데이터의 지속적인 흐름을 보장하고 네트워크 대역폭을 더 잘 활용하기 위해, 세션의 수신 및 송신 작업에 대한 I / O 버퍼 공간 제한을 지정합니다. RECV_BUF_SIZESEND_BUF_SIZE 매개 변수. 그만큼 RECV_BUF_SIZESEND_BUF_SIZE 매개 변수 값은 일치 할 필요가 없습니다., 하지만 환경에 따라 설정해야합니다..

최상의 성능을 위해, 전송 및 수신 버퍼의 크기는 네트워크 연결에서 동시에 전송 될 수있는 모든 데이터를 보유 할 수있을만큼 충분히 크게 설정되어야합니다.. 간단한 데이터베이스 연결의 경우, 이것은 일반적으로 OCI_PREFETCH_MEMORY 크기.

이러한 매개 변수는 네트워크 및 시스템 성능에 영향을 미치므로주의해서 사용하십시오.. 이러한 매개 변수의 기본값은 운영 체제에 따라 다릅니다..

이 매개 변수는 TCP에서 지원됩니다., SSL을 사용하는 TCP / IP, 및 SDP. 추가 프로토콜은 특정 운영 체제에서 이러한 매개 변수를 지원할 수 있습니다.. 이러한 매개 변수에 대한 권장 값은 설치 안내서에 지정되어 있습니다.. 추가 정보는 Oracle Net의 운영 체제 별 문서를 참조하십시오..

메모:

  • 의 실제 가치 SEND_BUF_SIZERECV_BUF_SIZE 매개 변수는 호스트 운영 체제의 제한 또는 메모리 제한으로 인해 지정된 값보다 작을 수 있습니다..
  • 시스템이 지원해야하는 총 동시 연결 수와 사용 가능한 메모리 리소스를 고려하는 것이 중요합니다.. 이러한 연결에서 사용하는 총 메모리 양은 동시 연결 수와 해당 버퍼의 크기에 따라 다릅니다..

또한보십시오:

Oracle Call Interface 프로그래머 가이드 에 대한 추가 정보는 OCI_PREFETCH_MEMORY 매개 변수

클라이언트에서 I / O 버퍼 공간 구성

클라이언트를 구성하려면, 지정된 파일의 다음 위치에 버퍼 공간 크기를 설정하십시오.:

  • 설정 만 RECV_BUF_SIZE 매개 변수는 일반적으로 적절합니다.. 클라이언트가 큰 요청을 보내는 경우, 그런 다음 또한 SEND_BUF_SIZE 매개 변수. 이러한 매개 변수는 클라이언트의 sqlnet.ora 파일.
  • 특정 접속 기술자의 경우, 클라이언트의 현재 설정을 재정의 할 수 있습니다. sqlnet.ora 파일. 특정 프로토콜 주소 또는 설명에 대한 버퍼 공간 매개 변수를 지정할 수 있습니다. tnsnames.ora 다음과 유사한 파일:
    sales.us.example.com =
     (DESCRIPTION = 
       (ADDRESS_LIST =
         (주소 =(프로토콜 = tcp)(HOST = sales1-server)(포트 = 1521)
            (SEND_BUF_SIZE = 11784)
            (RECV_BUF_SIZE = 11784))
         (주소 =(프로토콜 = tcp)(HOST = sales2-server)(포트 = 1521)
            (SEND_BUF_SIZE = 11784)
            (RECV_BUF_SIZE = 11784))
       (CONNECT_DATA =
         (SERVICE_NAME = sales.us.example.com)))
    hr.us.example.com =
     (DESCRIPTION = 
       (SEND_BUF_SIZE = 8192)
       (RECV_BUF_SIZE = 8192)
         (주소 =(프로토콜 = tcp)(HOST = hr1- 서버)(포트 = 1521))
       (CONNECT_DATA =
         (SERVICE_NAME = hr.us.example.com)))
    

서버에서 I / O 버퍼 크기 구성

데이터베이스 서버가 클라이언트에 데이터를 쓰기 때문에, 설정 SEND_BUF_SIZE 서버 측의 매개 변수는 일반적으로 적절합니다.. 데이터베이스 서버가 큰 요청을받는 경우, 그런 다음 또한 RECV_BUF_SIZE 데이터베이스 서버를 구성하려면, 버퍼 공간 크기를 listener.orasqlnet.ora 파일.

에서 listener.ora 파일, 특정 프로토콜 주소 또는 설명에 대한 버퍼 공간 매개 변수 지정. 다음은 설정의 예입니다.:

리스너 =
(DESCRIPTION =
(주소 =(프로토콜 = tcp)(HOST = 판매 서버)(포트 = 1521)
(SEND_BUF_SIZE = 11784)
(RECV_BUF_SIZE = 11784))
(주소 =(프로토콜 = ipc)(키 = extproc)
(SEND_BUF_SIZE = 11784)
(RECV_BUF_SIZE = 11784)))
LISTENER2 =
(DESCRIPTION =
(SEND_BUF_SIZE = 8192)
(RECV_BUF_SIZE = 16384)
(주소 =(프로토콜 = tcp)(HOST = 판매 서버)(포트 = 1521)))

다음은 설정의 예입니다. sqlnet.ora 파일:

RECV_BUF_SIZE=65536
SEND_BUF_SIZE=65536

공유 서버 프로세스에 대한 버퍼 크기 매개 변수 설정

공유 서버 프로세스를 사용하는 경우, 그런 다음 서버에서 가져온 현재 설정을 재정의 할 수 있습니다. sqlnet.ora 파일에 버퍼 공간 매개 변수를 설정하여 DISPATCHERS다음과 같이 초기화 매개 변수:

DISPATCHERS ="(주소 =(프로토콜 = tcp)(SEND_BUF_SIZE = 65536))"

InfiniBand 연결을위한 SDP 지원 구성

Oracle Net Services는 Sockets Direct Protocol에 대한 지원을 제공합니다. (SDP) InfiniBand 고속 네트워크 용.

SDP는 클러스터 된 서버 환경을위한 표준 통신 프로토콜입니다.. SDP는 네트워크 인터페이스 카드와 애플리케이션 간의 인터페이스입니다.. SDP 사용, 응용 프로그램은 대부분의 메시징 부담을 네트워크 인터페이스 카드에 부과합니다., 다른 작업을 위해 CPU 해제. 결과적으로, SDP로 네트워크 감소 지연 시간 및 CPU 사용률.

SDP는 시스템 영역 네트워크를 위해 특별히 설계되었습니다. (없이). SAN은 단거리가 특징입니다., 여러 서버 시스템 간의 고성능 통신, Oracle Application Server 또는 하나의 스위치에 클러스터 된 기타 타사 중간 계층 클라이언트 및 데이터베이스 서버와 같은.

노트:

Oracle Database와의 버전 호환성은 개별 공급 업체에 문의하십시오. 11.SDP 지원에 대한 추가 정보는 Oracle Technology Network를 방문하십시오.

http://otn.oracle.com/membership

다음 섹션에서는 중간 계층 및 데이터베이스 서버 통신을 위해 SDP의 Oracle Net 지원을 설정하는 방법에 대해 설명합니다.. 다음 항목이 포함되어 있습니다.:

또한보십시오:

“성능 이해” 지원되는 배포에 대한 개요

SDP 사용을위한 전제 조건

SDP에 대한 지원을 구성하기 전에, 필요한 하드웨어 설치, 및 OpenFabrics Enterprise Distribution과 호환되는 InfiniBand 하드웨어 및 소프트웨어 설정 (OFED) 1.4 응용 프로그램 웹 서버와 데이터베이스 서버 모두의 지정된 공급 업체로부터.

InfiniBand 소프트웨어 설치 중, 시스템의 SDP 또는 주소 계열을 정의하는 상수 식별. 운영 체제 또는 OFED 문서에서 얻을 수 있습니다..

또한보십시오:

설치 정보에 대한 공급 업체 문서.

서버에서 SDP 구성

데이터베이스 서버를 구성하려면, SDP 주소를 listener.ora 데이터베이스 서버의 파일.

노트:

SDP 또는 주소 프로토콜 계열 상수가 27, Oracle Net Services의 기본값, 그런 다음 상수를 SDP.PF_INET_SDP 매개 변수 sqlnet.ora 파일.

다음 예제는 포트 번호를 사용하는 SDP 엔드 포인트를 보여줍니다. 1521 컴퓨터에서 sales-server.

경청자=
  (DESCRIPTION =
    (ADDRESS_LIST =
      (주소 =(프로토콜 = sdp)(HOST = 판매 서버)(포트 = 1521))
      (주소 =(프로토콜 = tcp)(HOST = 판매 서버)(포트 = 1521))
      (주소 =(프로토콜 = ipc)(키 = extproc))))

클라이언트에서 SDP 구성

노트:

SDP 또는 주소 프로토콜 계열 상수가 27, Oracle Net Services의 기본값, 그런 다음 상수를 SDP.PF_INET_SDP 매개 변수 sqlnet.ora 파일.

다음 절차는 Oracle Application Server 서버 또는 타사 중간 계층 클라이언트를 구성하는 방법을 설명합니다.:

  1. 타사 중간 계층 클라이언트를 구성하는 경우, 그런 다음 Oracle Database를 사용하도록 클라이언트를 업그레이드하십시오. 11 클라이언트 소프트웨어, 다음과 같이:
    1. Oracle Universal Installer 실행.
    2. 고르다 Oracle 데이터베이스 11 고객 사용 가능한 제품 페이지에서.
  2. Oracle Application Server 서버 및 타사 중간 계층 클라이언트 모두, 데이터베이스 서버에 연결하기위한 네트 서비스 이름 생성:
    • Oracle Application Server 서버의 경우, 에 구성된 동일한 TCP / IP 프로토콜 주소를 사용하는 네트 서비스 이름을 지정하십시오. tnsnames.ora 파일. 예를 들면:
      판매 =
       (DESCRIPTION =
         (주소 =(프로토콜 = tcp)(HOST = 판매 서버)))
         (CONNECT_DATA =
           (SERVICE_NAME = sales.us.example.com)))
      
    • 타사 중간 계층 클라이언트의 경우, 에 구성된 동일한 SDP 주소를 사용하는 네트 서비스 이름을 지정하십시오. tnsnames.ora 예를 들어:
      판매 =
       (DESCRIPTION =
         (주소 =(프로토콜 = sdp)(HOST = 판매 서버)))
         (CONNECT_DATA =
           (SERVICE_NAME = sales.us.example.com)))
      

      또한보십시오:

      장 8, “이름 지정 방법 구성” 접속 기술자 생성에 대한 추가 정보

무단으로 자원 소비 제한 사용자

리스너 또는 데이터베이스 서버에 대한 무단 액세스로 인해 서비스 거부 공격, 권한이없는 클라이언트가 권한이있는 사용자를 차단하려는 경우’ 필요할 때 시스템에 액세스하고 사용할 수있는 기능. 악의적 인 클라이언트가 리소스 소비만을 목적으로하는 연결 요청으로 리스너 또는 데이터베이스 서버를 넘치려고 시도 할 수 있습니다., 연결과 같은, 프로세스, 또는 스레드. 이러한 유형의 공격을 완화하려면, 인증 전에 리소스를 보유 할 수있는 시간을 제한하는 제한을 구성합니다.. 클라이언트가 구성된 제한을 초과하려고하면 연결이 종료되고 기록되는 클라이언트의 IP 주소가 포함 된 감사 추적이 발생합니다..

권한이없는 사용자의 리소스 소비를 제한하고 감사 추적을 활성화하려면, 에 설명 된 매개 변수에 대한 시간 제한 값 설정 표 14-1.

표 14-1 연결 시간 초과 매개 변수

매개 변수 파일 기술
INBOUND_CONNECT_TIMEOUT_listener_name listener.ora 시간, 몇 초 안에, 클라이언트가 네트워크 연결이 설정된 후 리스너에 대한 연결 요청을 완료하도록 리스너가 지정된 시간 내에 클라이언트 요청을 수신하지 못하는 경우, 그런 다음 연결을 종료합니다.. 게다가, 리스너는 클라이언트의 IP 주소를 기록하고 ORA-12525: TNS:리스너가 허용 된 시간 내에 클라이언트의 요청을받지 못했습니다. 오류 메시지 listener.log파일.
SQLNET.INBOUND_CONNECT_TIMEOUT 데이터베이스 서버의 sqlnet.ora 시간, 몇 초 안에, 클라이언트가 데이터베이스 서버에 연결하여 필요한 인증 정보를 제공하도록합니다. 클라이언트가 지정된 시간 내에 연결 설정 및 인증을 완료하지 못한 경우, 그러면 데이터베이스 서버가 연결을 종료합니다.. 게다가, 데이터베이스 서버는 클라이언트의 IP 주소를 기록하고 ORA-12170: TNS:연결 시간 초과가 발생했습니다. 오류 메시지 sqlnet.log파일. 클라이언트는 ORA-12547: TNS:lost contact 또는 ORA-12637: 패킷 수신 실패 오류 메시지.

이러한 매개 변수의 값을 지정할 때, 다음 권장 사항을 고려하십시오.:

  • 두 매개 변수를 초기 낮은 값으로 설정.
  • 값을 설정 INBOUND_CONNECT_TIMEOUT_listener_name 매개 변수를 SQLNET.INBOUND_CONNECT_TIMEOUT 매개 변수.

예를 들면, 당신은 설정할 수 있습니다 INBOUND_CONNECT_TIMEOUT_listener_name ...에 10 초 및 SQLNET.INBOUND_CONNECT_TIMEOUT 매개 변수 50 초. 특정 환경에 정상적인 시스템 또는 네트워크 지연으로 인해 클라이언트가 지정된 시간 내에 연결을 완료 할 수없는 경우, 그런 다음 필요에 따라 시간을 늘립니다..

또한보십시오:

 

원래 URL: https://docs.oracle.com/cd/E18283_01/network.112/e10836/performance.htm

답장을 남겨주세요