Abdruck : Optimieren Sie die Netzwerkleistung für Oracle

In diesem Kapitel wird beschrieben, wie Sie die Verbindungsleistung optimieren. Dieses Kapitel enthält die folgenden Themen:

Konfigurieren der Sitzungsdateneinheit

Unter typischer Datenbankkonfiguration, Oracle Net kapselt Daten in Puffer von der Größe Sitzungsdateneinheit (SDU) bevor die Daten über das Netzwerk gesendet werden. Oracle Net sendet jeden Puffer, wenn er gefüllt ist, gespült, oder wenn eine Anwendung versucht, Daten zu lesen. Anpassen Die Größe der SDU-Puffer im Verhältnis zur Datenmenge, die Oracle Net zu einem beliebigen Zeitpunkt zum Senden bereitgestellt wird, kann die Leistung verbessern, Netzwerkauslastung, und Speicherverbrauch. Wenn große Datenmengen übertragen werden, Durch Erhöhen der SDU-Größe können Leistung und Netzwerkdurchsatz verbessert werden.

Die Datenmenge, die Oracle Net zu einem beliebigen Zeitpunkt zum Senden bereitgestellt wird, wird als Nachrichtengröße bezeichnet. Oracle Net geht standardmäßig davon aus, dass die Nachrichtengröße normalerweise zwischen variiert 0 und 8192 Bytes, und selten, größer sein als 8192 Bytes. Wenn diese Annahme wahr ist, dann meistens, Die Daten werden über einen SDU-Puffer gesendet.

Die SDU-Größe kann zwischen variieren 512 Bytes zu 65535 Bytes. Die Standard-SDU für den Client und einen dedizierten Server ist 8192 Bytes. Die Standard-SDU für einen gemeinsam genutzten Server ist 65535 Bytes.

Die tatsächlich verwendete SDU-Größe wird zum Zeitpunkt der Verbindung zwischen dem Client und dem Server ausgehandelt und ist der kleinere der Client- und Serverwerte. Die Konfiguration einer SDU-Größe, die von der Standardgröße abweicht, erfordert die Konfiguration der SDU sowohl auf dem Client- als auch auf dem Servercomputer, es sei denn, Sie verwenden gemeinsam genutzte Server. Für gemeinsam genutzte Server, Nur der Clientwert muss geändert werden, da der gemeinsam genutzte Server standardmäßig den Maximalwert verwendet.

Sie sollten eine Änderung der SDU-Größe in Betracht ziehen, wenn die vorherrschende Nachrichtengröße kleiner oder größer ist 8192. Die SDU-Größe sollte sein 70 Bytes größer als die vorherrschende Nachrichtengröße. Wenn die vorherrschende Nachrichtengröße plus 70 Bytes überschreitet die maximale SDU, Dann sollte die SDU so eingestellt werden, dass die Nachrichtengröße in die kleinste Anzahl gleicher Teile unterteilt wird, in denen sich jeder Teil befindet 70 Bytes kleiner als die SDU-Größe. Um die Standardeinstellung zu ändern, ändere das DEFAULT_SDU_SIZE Parameter in der sqlnet.ora Datei.

Zum Beispiel, wenn die Mehrheit der von der Anwendung gesendeten und empfangenen Nachrichten kleiner als 8 KB ist, unter Berücksichtigung der 70 Bytes für Overhead, Dann führt die Einstellung der SDU auf 8 KB wahrscheinlich zu guten Ergebnissen. Sofern ausreichend Speicher vorhanden ist, Dann minimiert die Verwendung des Maximalwerts für die SDU die Anzahl der Systemaufrufe und den Overhead für Oracle Net Services.

Hinweis:

Beginnend mit der Oracle-Datenbank 11G, Oracle Net Services optimierte die Massendatenübertragung für Komponenten, wie Oracle SecureFiles LOBs und Oracle Data Guard Redo Transport Services. Die SDU-Größenbeschränkung, wie in den Netzwerkparameterdateien angegeben, gilt nicht für diese Massendatenübertragungen.

Festlegen der SDU-Größe für die Datenbank

Zum Festlegen der SDU-Größe für den Datenbankserver, Konfigurieren Sie die folgenden Dateien:

  • sqlnet.oraKonfigurieren Sie die DEFAULT_SDU_SIZE Parameter in der sqlnet.ora Datei, wie folgt:
    DEFAULT_SDU_SIZE=8192
    
  • InitialisierungsparameterdateiBei Verwendung gemeinsam genutzter Serverprozesse, Stellen Sie dann die SDU-Größe im ein DISPATCHERS Parameter in der Initialisierungsparameterdatei, wie folgt:
    DISPATCHERS="(BESCHREIBUNG=(ADRESSE=(PROTOKOLL=tcp))(SDU=8192))"
    
  • listener.oraWenn Sie den Listener mit einer Liste von Zielen in konfiguriert haben listener.ora Datei, dann der Wert für SDU im SID_LIST Das Element überschreibt die aktuelle Einstellung im sqlnet.ora Datei, wenn dedizierte Serverprozesse verwendet werden.
    SID_LIST_Listener_Name=
      (SID_LIST= 
        (SID_DESC=
         (SDU=8192)
         (SID_NAME=Verkäufe)))
    

    Der kleinere Wert der SDU-Größe und der für den Client konfigurierte Wert haben Vorrang.

Festlegen der SDU-Größe für den Client

Zum Festlegen der SDU-Größe für den Client, Konfigurieren Sie die folgenden Dateien:

  • sqlnet.oraZur globalen Konfiguration auf Client-Seite, Konfigurieren Sie die DEFAULT_SDU_SIZE Parameter in der sqlnet.ora Datei, wie folgt:
    DEFAULT_SDU_SIZE=8192
    
  • tnsnames.oraFür einen bestimmten Verbindungsdeskriptor, Sie können das angeben SDU Parameter in der DESCRIPTION Parameter.
    sales.us.example.com=
    (BESCHREIBUNG= 
        (SDU=11280) 
          (ADRESSE=(PROTOKOLL=tcp)(HOST=Vertriebsserver)(PORT=1521))
        (CONNECT_DATA=
         (SERVICE_NAME=sales.us.example.com))
    ) 
    

Die SDU-Größe gilt für alle Oracle Net-Protokolle für den jeweiligen Verbindungsdeskriptor.

Bestimmen des Bandbreitenverzögerungsprodukts

Das Bandbreitenverzögerungsprodukt ist das Produkt aus Netzwerkbandbreite und der Umlaufzeit der Daten, die über das Netzwerk übertragen werden. Eine einfache Möglichkeit, die Roundtrip-Zeit zu bestimmen, ist die Verwendung eines Befehls wie ping von einem Host zum anderen und verwenden Sie die von zurückgegebenen Antwortzeiten ping.

Zum Beispiel, wenn ein Netzwerk eine Bandbreite von hat 100 Mbit/s und eine Round-Trip-Zeit von 5 ms, dann sollten die Sende- und Empfangspuffer mindestens sein (100*10^6) * (5/10^3) Bits oder ungefähr 62.5 Kilobyte.

Die folgende Gleichung zeigt die Beziehungen zwischen den beteiligten Einheiten und Faktoren:

100,000,000 Bits   1 Byte   5 Sekunden
---------------- x ------ x --------- = 62,500 Bytes
 1 zweite          8 Bits     1000

Einstellen der SEND_BUF_SIZE und RECV_BUF_SIZE Zumindest das Bandbreiten-Verzögerungsprodukt sorgt dafür, dass bei der Übertragung großer Datenmengen die Netzwerkbandbreite optimal genutzt wird.

Basierend auf der vorhergehenden Gleichung, Das Bandbreiten-Verzögerungsprodukt dieser Netzwerkverbindung beträgt ungefähr 64 KB. Wenn die größte Nachricht, die zum Übertragen von Redo-Daten zwischen einer Primärdatenbank und einer Standby-Datenbank verwendet wird, 1 MB beträgt, dann der Wert für die SEND_BUF_SIZE und RECV_BUF_SIZE Parameter könnten 1 MB groß sein. Jedoch, wenn die durchschnittliche Nachricht geringer ist, dann sollte eine Einstellung von 64 KB ausreichen, um die verfügbare Bandbreite optimal zu nutzen.

Siehe auch:

Informationen zum Bestimmen der Nachrichtengröße, beziehen auf “Statistikbeispiel”

Für die meisten Netzwerkprotokolle, Stellen Sie sicher, dass die RECV_BUF_SIZE Parameter an einem Ende der Netzwerkverbindung, typischerweise beim Kunden, entspricht dem Wert des SEND_BUF_SIZEParameter am anderen Ende, normalerweise auf dem Server.

Konfigurieren des E/A-Pufferraums

Zuverlässige Netzwerkprotokolle, wie TCP/IP, Puffern Sie Daten in Sende- und Empfangspuffern, während Sie an oder von Protokollen der unteren und oberen Schicht senden und empfangen. Die Größe dieser Puffer wirkt sich auf die Netzwerkleistung aus, indem sie Entscheidungen zur Flusssteuerung beeinflusst.

Der RECV_BUF_SIZE und SEND_BUF_SIZE Parameter geben die Größe der Socket-Puffer an, die einer Oracle Net-Verbindung zugeordnet sind. Um den kontinuierlichen Datenfluss und eine bessere Nutzung der Netzwerkbandbreite sicherzustellen, Geben Sie das I/O-Pufferspeicherplatzlimit für Empfangs- und Sendevorgänge von Sitzungen mit an RECV_BUF_SIZE und SEND_BUF_SIZE Parameter. Der RECV_BUF_SIZE und SEND_BUF_SIZE Parameterwerte müssen nicht übereinstimmen, sollte aber entsprechend Ihrer Umgebung eingestellt werden.

Für beste Leistung, Die Größe der Sende- und Empfangspuffer sollte groß genug eingestellt werden, um alle Daten aufzunehmen, die gleichzeitig über die Netzwerkverbindung gesendet werden können. Für eine einfache Datenbankanbindung, Dies wird normalerweise dem zugeordnet OCI_PREFETCH_MEMORY Größe.

Verwenden Sie diese Parameter mit Vorsicht, da sie sich auf die Netzwerk- und Systemleistung auswirken. Die Standardwerte für diese Parameter sind betriebssystemspezifisch.

Diese Parameter werden für TCP unterstützt, TCP/IP mit SSL, und SDPs. Zusätzliche Protokolle unterstützen diese Parameter möglicherweise auf bestimmten Betriebssystemen. Die empfohlenen Werte für diese Parameter sind in der Installationsanleitung angegeben. Weitere Informationen finden Sie in der betriebssystemspezifischen Dokumentation von Oracle Net.

Anmerkungen:

  • Der tatsächliche Wert der SEND_BUF_SIZE und RECV_BUF_SIZE Parameter können aufgrund von Einschränkungen im Host-Betriebssystem oder aufgrund von Speicherbeschränkungen kleiner als der angegebene Wert sein.
  • Es ist wichtig, die Gesamtzahl der gleichzeitigen Verbindungen zu berücksichtigen, die Ihr System unterstützen muss, sowie die verfügbaren Speicherressourcen. Die Gesamtmenge des von diesen Verbindungen verbrauchten Speichers hängt von der Anzahl gleichzeitiger Verbindungen und der Größe ihrer jeweiligen Puffer ab.

Siehe auch:

Programmierhandbuch für Oracle Call Interface für weitere Informationen zum OCI_PREFETCH_MEMORY Parameter

Konfigurieren des E/A-Pufferraums auf dem Client

Um den Client zu konfigurieren, Legen Sie die Pufferspeichergröße an den folgenden Stellen in der angegebenen Datei fest:

  • Nur die Einstellung RECV_BUF_SIZE Der Parameter ist normalerweise ausreichend. Wenn der Client große Anfragen sendet, dann auch einstellen SEND_BUF_SIZE Parameter. Diese Parameter werden beim Kunden eingestellt sqlnet.ora Datei.
  • Für einen bestimmten Verbindungsdeskriptor, Sie können die aktuellen Einstellungen im Client überschreiben sqlnet.ora Datei. Sie können die Pufferspeicherparameter für eine bestimmte Protokolladresse oder Beschreibung im angeben tnsnames.ora Datei ähnlich der folgenden:
    sales.us.example.com=
     (BESCHREIBUNG= 
       (ADDRESS_LIST=
         (ADRESSE=(PROTOKOLL=tcp)(HOST=sales1-server)(PORT=1521)
            (SEND_BUF_SIZE=11784)
            (RECV_BUF_SIZE=11784))
         (ADRESSE=(PROTOKOLL=tcp)(HOST=sales2-server)(PORT=1521)
            (SEND_BUF_SIZE=11784)
            (RECV_BUF_SIZE=11784))
       (CONNECT_DATA=
         (SERVICE_NAME=sales.us.example.com)))
    hr.us.example.com=
     (BESCHREIBUNG= 
       (SEND_BUF_SIZE=8192)
       (RECV_BUF_SIZE=8192)
         (ADRESSE=(PROTOKOLL=tcp)(HOST=hr1-server)(PORT=1521))
       (CONNECT_DATA=
         (SERVICE_NAME=hr.us.example.com)))
    

Konfigurieren der E/A-Puffergröße auf dem Server

Weil der Datenbankserver Daten an Clients schreibt, Einstellen der SEND_BUF_SIZE Der Parameter auf der Serverseite ist normalerweise ausreichend. Wenn der Datenbankserver große Anfragen empfängt, dann auch einstellen RECV_BUF_SIZE Parameter.Um den Datenbankserver zu konfigurieren, Legen Sie die Pufferspeichergröße im fest listener.ora und sqlnet.ora Dateien.

Im listener.ora Datei, Geben Sie die Pufferspeicherparameter für eine bestimmte Protokolladresse oder für eine Beschreibung an. Im Folgenden finden Sie ein Beispiel für die Einstellungen:

HÖRER=
(BESCHREIBUNG=
(ADRESSE=(PROTOKOLL=tcp)(HOST=Vertriebsserver)(PORT=1521)
(SEND_BUF_SIZE=11784)
(RECV_BUF_SIZE=11784))
(ADRESSE=(PROTOKOLL=ipc)(SCHLÜSSEL=extproc)
(SEND_BUF_SIZE=11784)
(RECV_BUF_SIZE=11784)))
LISTENER2=
(BESCHREIBUNG=
(SEND_BUF_SIZE=8192)
(RECV_BUF_SIZE=16384)
(ADRESSE=(PROTOKOLL=tcp)(HOST=Vertriebsserver)(PORT=1521)))

Im Folgenden finden Sie ein Beispiel für die Einstellungen im sqlnet.ora Datei:

RECV_BUF_SIZE=65536
SEND_BUF_SIZE=65536

Festlegen des Puffergrößenparameters für gemeinsam genutzte Serverprozesse

Bei Verwendung gemeinsam genutzter Serverprozesse, Anschließend können Sie die vom Server erhaltenen aktuellen Einstellungen überschreiben sqlnet.ora Datei durch Festlegen der Pufferplatzparameter in der Datei DISPATCHERSInitialisierungsparameter wie folgt:

DISPATCHERS="(ADRESSE=(PROTOKOLL=tcp)(SEND_BUF_SIZE=65536))"

Konfigurieren der SDP-Unterstützung für InfiniBand-Verbindungen

Oracle Net Services bietet Unterstützung für das Sockets Direct Protocol (SDP) für InfiniBand-Hochgeschwindigkeitsnetzwerke.

SDP ist ein Standard-Kommunikationsprotokoll für Cluster-Server-Umgebungen. SDP ist eine Schnittstelle zwischen einer Netzwerkschnittstellenkarte und der Anwendung. Durch die Verwendung von SDP, Anwendungen belasten die Netzwerkschnittstellenkarte zum größten Teil mit der Messaginglast, die CPU für andere Aufgaben freigeben. Infolge, SDP verringert das Netzwerk Latenz und CPU-Auslastung.

SDP wurde speziell für System Area Networks entwickelt (SANs). Ein SAN zeichnet sich durch kurze Distanzen aus, Hochleistungskommunikation zwischen mehreren Serversystemen, B. Oracle Application Server oder andere Middle-Tier-Client- und Datenbankserver von Drittanbietern, die auf einem Switch geclustert sind.

Hinweis:

Erkundigen Sie sich bei Ihrem jeweiligen Anbieter nach der Versionskompatibilität mit Oracle Database 11G.Weitere Informationen zur SDP-Unterstützung finden Sie im Oracle Technology Network unter

http://otn.oracle.com/membership

In den folgenden Abschnitten wird beschrieben, wie Sie die Oracle Net-Unterstützung von SDP für die Kommunikation zwischen Mittelschicht und Datenbankserver einrichten. Es enthält die folgenden Themen:

Siehe auch:

“Leistung verstehen” für eine Übersicht der unterstützten Bereitstellungen

Voraussetzungen für die Verwendung von SDP

Vor der Konfiguration der Unterstützung für SDP, Installieren Sie die erforderliche Hardware, und richten Sie InfiniBand-Hardware und -Software ein, die mit OpenFabrics Enterprise Distribution kompatibel ist (OFED) 1.4 von einem bestimmten Anbieter sowohl auf dem Anwendungs-Webserver als auch auf dem Datenbankserver.

Während der Installation der InfiniBand-Software, Identifizieren Sie die Konstante, die SDP oder die Adressfamilie für das System definiert. Diese kann dem Betriebssystem oder der OFED-Dokumentation entnommen werden.

Siehe auch:

Herstellerdokumentation für Installationsinformationen.

Konfigurieren von SDP auf dem Server

So konfigurieren Sie den Datenbankserver, Konfigurieren Sie eine SDP-Adresse im listener.ora Datei auf dem Datenbankserver.

Hinweis:

Wenn die SDP- oder Adressprotokollfamilienkonstante nicht vorhanden ist 27, der Standardwert für Oracle Net Services, Definieren Sie dann die Konstante im SDP.PF_INET_SDP Parameter in der sqlnet.ora Datei.

Das folgende Beispiel zeigt einen SDP-Endpunkt, der eine Portnummer verwendet 1521 auf dem Computer sales-server.

HÖRER=
  (BESCHREIBUNG=
    (ADDRESS_LIST=
      (ADRESSE=(PROTOKOLL=sdp)(HOST=Vertriebsserver)(PORT=1521))
      (ADRESSE=(PROTOKOLL=tcp)(HOST=Vertriebsserver)(PORT=1521))
      (ADRESSE=(PROTOKOLL=ipc)(SCHLÜSSEL=extproc))))

Konfigurieren von SDP auf dem Client

Hinweis:

Wenn die SDP- oder Adressprotokollfamilienkonstante nicht vorhanden ist 27, der Standardwert für Oracle Net Services, Definieren Sie dann die Konstante im SDP.PF_INET_SDP Parameter in der sqlnet.ora Datei.

Im folgenden Verfahren wird beschrieben, wie Sie die Oracle Application Server-Server oder den Middle-Tier-Client eines Drittanbieters konfigurieren:

  1. Bei der Konfiguration eines Middle-Tier-Clients eines Drittanbieters, Aktualisieren Sie dann die Clients, um Oracle Database zu verwenden 11G Client-Software, wie folgt:
    1. Führen Sie Oracle Universal Installer aus.
    2. Wählen Oracle-Datenbank 11G Klient auf der Seite „Verfügbare Produkte“..
  2. Sowohl für Oracle Application Server-Server als auch für Middle-Tier-Clients von Drittanbietern, Erstellen Sie einen Netzdienstnamen, um eine Verbindung zum Datenbankserver herzustellen:
    • Für Oracle Application Server-Server, Geben Sie einen Netzdienstnamen an, der dieselbe TCP/IP-Protokolladresse verwendet, die im konfiguriert ist tnsnames.ora Datei. Zum Beispiel:
      Umsatz=
       (BESCHREIBUNG=
         (ADRESSE=(PROTOKOLL=tcp)(HOST=Vertriebsserver)))
         (CONNECT_DATA=
           (SERVICE_NAME=sales.us.example.com)))
      
    • Für mittelständische Drittkunden, Geben Sie einen Netzdienstnamen an, der dieselbe im konfigurierte SDP-Adresse verwendet tnsnames.ora Datei.Zum Beispiel:
      Umsatz=
       (BESCHREIBUNG=
         (ADRESSE=(PROTOKOLL=sdp)(HOST=Vertriebsserver)))
         (CONNECT_DATA=
           (SERVICE_NAME=sales.us.example.com)))
      

      Siehe auch:

      Kapitel 8, “Benennungsmethoden konfigurieren” Weitere Informationen zum Erstellen von Verbindungsdeskriptoren finden Sie hier

Begrenzung des Ressourcenverbrauchs durch Unbefugte Benutzer

Unbefugter Zugriff auf den Listener oder Datenbankserver kann dazu führen Denial-of-Service-Angriffe, wobei ein nicht autorisierter Client versucht, autorisierte Benutzer zu blockieren’ Fähigkeit, bei Bedarf auf das System zuzugreifen und es zu nutzen. Böswillige Clients versuchen möglicherweise, den Listener oder Datenbankserver mit Verbindungsanforderungen zu überfluten, deren einziger Zweck darin besteht, Ressourcen zu verbrauchen, wie zum Beispiel Verbindungen, Prozesse, oder Threads. Um diese Art von Angriffen abzuschwächen, Konfigurieren Sie Grenzwerte, die die Zeit einschränken, in der Ressourcen vor der Authentifizierung gehalten werden können. Versuche des Clients, die konfigurierten Grenzwerte zu überschreiten, führen zu Verbindungsabbrüchen und einem Audit-Trail mit der IP-Adresse des Clients, der protokolliert wird.

Um den Ressourcenverbrauch durch nicht autorisierte Benutzer zu begrenzen und den Prüfpfad zu aktivieren, Legen Sie Zeitgrenzwerte für die in beschriebenen Parameter fest Tabelle 14-1.

Tabelle 14-1 Connect-Timeout-Parameter

Parameter Datei Beschreibung
INBOUND_CONNECT_TIMEOUT_Listener_Name listener.ora Die Zeit, in Sekunden, Damit der Client seine Verbindungsanforderung an den Listener abschließen kann, nachdem die Netzwerkverbindung hergestellt wurde. Wenn der Listener die Clientanforderung nicht innerhalb der angegebenen Zeit erhält, dann wird die Verbindung beendet. Zusätzlich, Der Listener protokolliert die IP-Adresse des Clients und eine ORA-12525: TNS:Der Zuhörer hat die Anfrage des Kunden nicht rechtzeitig erhalten Fehlermeldung an die listener.logDatei.
SQLNET.INBOUND_CONNECT_TIMEOUT sqlnet.ora auf dem Datenbankserver Die Zeit, in Sekunden, damit ein Client eine Verbindung zum Datenbankserver herstellen und die erforderlichen Authentifizierungsinformationen bereitstellen kann. Wenn der Client innerhalb der angegebenen Zeit keine Verbindung herstellen und die Authentifizierung nicht abschließen kann, dann beendet der Datenbankserver die Verbindung. Zusätzlich, Der Datenbankserver protokolliert die IP-Adresse des Clients und eine ORA-12170: TNS:Verbindungs-Timeout ist aufgetreten Fehlermeldung an die sqlnet.logDatei. Der Kunde erhält entweder eine ORA-12547: TNS:lost contact oder ein ORA-12637: Fehlermeldung „Paketempfang fehlgeschlagen“..

Bei der Angabe von Werten für diese Parameter, Beachten Sie die folgenden Empfehlungen:

  • Stellen Sie beide Parameter auf einen anfänglichen niedrigen Wert ein.
  • Legen Sie den Wert fest INBOUND_CONNECT_TIMEOUT_listener_name Parameter auf einen niedrigeren Wert als den SQLNET.INBOUND_CONNECT_TIMEOUT Parameter.

Zum Beispiel, kannst du einstellen INBOUND_CONNECT_TIMEOUT_listener_name zu 10 Sekunden und SQLNET.INBOUND_CONNECT_TIMEOUT Parameter zu 50 Sekunden. Wenn Clients aufgrund von System- oder Netzwerkverzögerungen, die für die jeweilige Umgebung normal sind, nicht in der Lage sind, Verbindungen innerhalb der angegebenen Zeit herzustellen, Erhöhen Sie dann die Zeit nach Bedarf.

Siehe auch:

 

Original-URL: https://docs.oracle.com/cd/E18283_01/network.112/e10836/performance.htm

Hinterlasse eine Antwort