Benutzer-Werkzeuge

Webseiten-Werkzeuge


prog:oracle_ords_performance_tuning

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
prog:oracle_ords_performance_tuning [2017/09/08 13:57] – [Apache => Tomcat => ORDS Umgebung mod_jk optimieren] gpipperrprog:oracle_ords_performance_tuning [2021/08/20 08:43] (aktuell) – [Quellen] gpipperr
Zeile 1: Zeile 1:
-===== Oracle ORDS Performance Überlegungen ==== +===== Oracle APEX Webserver Stack mit Apache / Tomcat / ORDS / APEX Performance Überlegungen und Testes ====
- +
-Installation siehe [[prog:first_steps_oracle_rest_data_service|Oracle ORDS 3.0 (Oracle REST Data Services) mit APEX 5.0 und als REST Interface verwenden]]+
  
 +Installation mit entsprechenden Performance Anpassungen siehe:
 +  * Linux => [[prog:oracle_apex_20_2_install_windows_19c_linux_8|Oracle Apex 20.2 / ORDS 20.4 / Tomcat 9  / Apache 2.4 mit der Oracle Datenbank 19c unter Oracle Linux 8 - Installation]]
 +  * Windows =>[[prog:first_steps_oracle_rest_data_service|Oracle ORDS 3.0 (Oracle REST Data Services) mit APEX 5.0 und als REST Interface verwenden]]
  
  
 Vor dem Optimieren steht das Messen um vergleichbare Ergebnisse zu erzielen. Vor dem Optimieren steht das Messen um vergleichbare Ergebnisse zu erzielen.
-==== Vorbereitung - Messen ==== 
  
  
-Um die Leistungsfähigkeit der Umgebung zu messen wird ein einfacher Test Case eingerichtet, siehe =>  +Als Basis für eine hochperformante APEX Umgebung benötigen wir eine möglichste schnelle "Auslieferung" der statischen Ressourcen, wie CCS, JavaScript, Icons etc. der jeweiligen Maske. 
-Rest Data Service mit Oracle ORDS siehe [[prog:ords_rest_service|Oracle ORDS 3.0 REST API nativ verwenden]].+ 
 +Notwendige Messungen 
 +  * Timing der Statischen Elemente von APEX  
 +  * Timing einer vergleichbaren APEX Seite mit simplen SQL 
 +  * Timing einfacher ORDS Rest Service  
 + 
 + 
 +Für das APEX und ORDS Rest Timing wird eine einfach Anwendung gestaltet um verschiedene Umgebung zu vergleichen. 
 + 
 +Bzgl. Rest Data Service mit Oracle ORDS siehe [[prog:ords_rest_service|Oracle ORDS 3.0 REST API nativ verwenden]]. 
 + 
 +Nach dem Vermesse dieser Testläufe wird die Umgebung optimiert bis zufriedenstellende Ergebnisse erzielt werden. 
 + 
 +Ist dann alles in der Basis richtig eingestellt kann es an die Optimierung der eigentlichen Applikation gehen. Dort  ist dann wohl der bedeutende Punkt das verwendete SQL, das ganz klassisch in der DB / Applikation optimiert werden kann. 
 + 
 + 
 +---- 
 + 
 +==== Vorbereitung - Messen ==== 
 + 
 +Um Messen wird das Apache JMeter Tool eingesetzt
  
  
   * Apache JMeter herunterladen von http://jmeter.apache.org   * Apache JMeter herunterladen von http://jmeter.apache.org
-  * Entpacken z.B. nach C:\tools\apache-jmeter-3.2+  * Entpacken z.B. nach C:\tools\apache-jmeter-5.4.1
   * Starten mit "jmeter.bat"    * Starten mit "jmeter.bat" 
- 
  
  
Zeile 26: Zeile 45:
  
   * Zoom in/out by using CTRL +/-   * Zoom in/out by using CTRL +/-
-  * jmeter.bat erweitern um <code java>set JVM_ARGS=%JVM_ARGS% -Dswing.plaf.metal.controlFont=Dialog-26+  * jmeter.bat erweitern um (nach setlocal Zeile 51) <code java>set JVM_ARGS=%JVM_ARGS% -Dswing.plaf.metal.controlFont=Dialog-26
 set JVM_ARGS=%JVM_ARGS% -Dswing.plaf.metal.systemFont=Dialog-26 set JVM_ARGS=%JVM_ARGS% -Dswing.plaf.metal.systemFont=Dialog-26
 set JVM_ARGS=%JVM_ARGS% -Dswing.plaf.metal.userFont=SansSerif-22 set JVM_ARGS=%JVM_ARGS% -Dswing.plaf.metal.userFont=SansSerif-22
Zeile 35: Zeile 54:
  
  
 +
 +----
 +====Timing der Statischen Elemente von APEX====
 +
 +Im ersten Testauf wird das Ausliefern der Statischen Elemente von APEX vermessen. Da hier kein Login notwendig ist ist der Test schnell aufgesetzt.
 +
 +Der Test prüft die Leistung des HTTP Servers, in meine Fall einem Apache 2.4 HTTP.
 +
 +Aus eine APEX App ermitteln wir uns als Testcase 10 typische Statische Elemente die mit einer Seite immer geladen werden wie:
 +
 +<code >
 +
 +https://apex01.pipperr.local
 +
 +1 /i/app_ui/font/apex-5-icon-font.woff2                   39K
 +2 /i/libraries/apex/minified/chartBundle.min.js           1.4M
 +3 /i/app_ui/css/Core.min.css                              271k
 +4 /i/apex_ui/img/rw/avatars/avatar-bg-4.png               1.3k          
 +5 /i/apex_ui/js/staticData/pd_static_data_en.json         2.6M 
 +6 /i/libraries/oraclejet/9.1.0/js/libs/oj/v9.1.0/resources/nls/en/localeElements.js     8.8k
 +
 +</code>
 +
 +Diese binden wir in JMeter ein:
 +
 +{{ :prog:apex:jmeter_apex_performance_test.jpg?600 | APEX Static Resource JMeter Test}}
 +
 +
 +Starten den Test und beobachten die Load auf der Maschine.
 +
 +Nmon:
 +{{ :prog:apex:jmeter_apex_performance_test_load_server.jpg?600 | Load auf der Maschine JMeter Test}}
 +
 +
 +
 +Ergebniss im JMeter dann nach dem Lauf auswerten:
 +
 +
 +
 +{{ :prog:apex:jmeter_apex_performance_test_load_server_result.jpg?600 | JMeter Results Load Test Static Resources}}
 +
 +
 +Der URL Aufruf 2 chartBundle.min.js und 5 pd_static_data_en.json schwankt sehr stark.
 +
 +Ein Test mit dem Oracle statischen <nowiki>https://static.oracle.com/cdn/apex/20.2.0.00.20</nowiki> Dienst zeigt ein ähnliches Verhalten, ist allerdings deutlich langsamer als oberer Test.
 +  
 +
 +Nur was schließen wir nun aus diesem Ergebnis? 
 +
 +
 +=== CPU belegt vom ksoftirqd Prozess ===
 +
 +Was auffällt das optisch eine CPU nur mit Interrupts beschäftigt ist (in top "ksoftirqd/0")
 +
 +=> https://blog.packagecloud.io/eng/2016/06/22/monitoring-tuning-linux-networking-stack-receiving-data/#ksoftirqd
 +
 +
 +Das hat wohl mit dem Traffic auf der Netzwerkkarte zu tun, hier ist das Stichwort "InterruptThrottleRate", das steuert das Interrupt Verhalten der Karte.
 +
 +
 + 
 +
 +Den gleichen Test werde ich nächste Woche auf einen weiteren System durchführen um hier Vergleichswerte zu haben.
 +
 +
 +
 +
 +----
 +
 +----
 +
 +==== Apache mit einem Cache System unterstützen===
 +
 +siehe auch  => https://www.tecmint.com/install-varnish-cache-for-apache-on-centos-rhel-8/
 +
 +
 +
 +----
  
 ---- ----
Zeile 44: Zeile 141:
 === Neuest Release testen=== === Neuest Release testen===
  
-Im ersten Schritt gleich auf das aktuellste Release umsteigen (3.0.11 September 2017) um unnötige Bugs zu übergehen. +Im ersten Schritt gleich auf das aktuellste Release umsteigen (3.0.11 September 2017, bzw. 2021 auf 20.4) um unnötige Bugs zu übergehen.
  
  
Zeile 61: Zeile 157:
  
 Bei diesen Parameter ist zu beachten, das viel hilft viel der Datenbank nicht hilft! D.h. sinnvolle produktive Werte liegen so bei 10/50 und sollten nicht zu groß gewählt werden! Bei diesen Parameter ist zu beachten, das viel hilft viel der Datenbank nicht hilft! D.h. sinnvolle produktive Werte liegen so bei 10/50 und sollten nicht zu groß gewählt werden!
 +
  
 === JVM Speicher ORDS Standalone optimieren ===  === JVM Speicher ORDS Standalone optimieren === 
Zeile 101: Zeile 198:
  
 Apache JMeter Apache JMeter
-http://jmeter.apache.org/usermanual/best-practices.html+  * http://jmeter.apache.org/usermanual/best-practices.html 
 + 
 +Web 
 +  * https://knowledgebase.mt-ag.com/ords/f?p=311:1:0::::P1_SEARCH:apexjmeter
  
  
-Oracle+==Oracle==
  
  
prog/oracle_ords_performance_tuning.1504871877.txt.gz · Zuletzt geändert: 2017/09/08 13:57 von gpipperr