Erfassung der Hardware-Auslastung während eines Apache JMeter Lasttests
Gemessene Transaktionsdurchsatzraten und Antwortzeiten sind kritische Daten jedes ArcGIS Enterprise Lasttests, aber die erfasste Hardware-Auslastung der Bereitstellungsmaschinen liefert ebenfalls wichtige Informationen. Zusammen ermöglichen diese Testartefakte die ordnungsgemäße Analyse der Fähigkeiten und Effizienzen des Standorts.
Festzustellen, dass eine Anwendung oder ein Feature-Service ein bestimmtes Durchsatzniveau erreicht hat, ist gut, aber die Skalierbarkeitseigenschaften zu bestätigen und gleichzeitig die erfasste Prozessor-Auslastung der getesteten Arbeitslast zu untersuchen, ist noch besser.
Dieser Artikel wird mehrere Möglichkeiten zur Erfassung der Hardware-Auslastung der Maschine besprechen. Diese Ressourcennutzung ist eine großartige Ergänzung zu den Ergebnissen eines Apache JMeter Lasttests von ArcGIS Enterprise und kann die Analyse weiter voranbringen. Der Artikel konzentriert sich auf die gebräuchlichsten Szenarien unter Verwendung kostenloser Tools und Dienstprogramme für Windows und Linux.
Erfassungsstrategien
Leider gibt es keine Einheitslösung für die Erfassung der Hardware-Auslastung in einem Lasttest. Angesichts der Vielzahl unterschiedlicher Umgebungen (Windows, Linux, Cloud, Kubernetes, Docker usw.) oder fehlender erforderlicher Zugriffsrechte und Berechtigungen kann es Fälle geben, in denen Sie Ihre Strategie und Methodik anpassen müssen, um die Nutzungsinformationen Ihrer Hardware während der Ausführung der Apache JMeter Tests zu erfassen und zu überwachen.
Zum Beispiel ist perfmon (z.B. Performance Monitor) kostenlos und in jeder Microsoft Windows-Instanz enthalten und funktioniert hervorragend, wenn alle Maschinen in der Umgebung Windows verwenden. Es ist das Frontend für mehrere Windows-Technologien (z.B. WMI, DCOM) und alle zusammen bieten einen vielseitigen Rahmen zur Überwachung der Hardware-Auslastung in "Echtzeit" mit Grafiken oder zum Skripten einer Ressourcenerfassung in eine Datendatei.
Perfmon ist jedoch für Linux nicht verfügbar, daher wäre ein anderes Tool (z.B. dstat) erforderlich, um die entsprechenden Informationen zu erfassen. Natürlich können selbst bei einer reinen Windows-Konfiguration Herausforderungen mit dem perfmon-Ansatz auftreten, beispielsweise in restriktiven Cloud-Umgebungen. Aber gibt es noch andere Möglichkeiten, diese wertvollen Maschinendaten aufzuzeichnen? Die Antwort auf diese Frage werden wir später in diesem Artikel erkunden.
Welche Informationen sollte der Lasttest erfassen?
Wenn GIS-Arbeiten wie das Erzeugen eines Kartenbildes oder das Berechnen einer Geoverarbeitungs-Service-Anfrage an eine ArcGIS Enterprise-Bereitstellung gesendet werden, nutzen die Servermaschinen, die an der Antwort arbeiten, verschiedene Hardware-Ressourcen zur Aufgabenerfüllung. Idealerweise findet die meiste Arbeit im zentralen Prozessor (CPU) statt, aber das ist nicht immer der Fall.
Unabhängig von der verwendeten Technologie zur Überwachung und Erfassung der Nutzung Ihres Lasttests gibt es vier primäre Hardware-Zählerkategorien, die alle Servermaschinen besitzen:
- Prozessor
- Speicher
- Netzwerk
- Festplatte
Jede Kategorie verfügt über verschiedene Metriken zur Darstellung der Auslastung dieser Ressource. Es ist nicht notwendig (oder empfohlen), während eines Tests jede verfügbare Prozessormetrik zu erfassen... nur die wesentlichen. Mit anderen Worten: diejenigen, die benötigt werden, um typische Lasttestfragen oder die spezifische Fragestellung zu beantworten.
Typischerweise umfassen einige wichtige Metriken Folgendes:
- Prozessor
- Speicher
- Verfügbar (MB oder Bytes)
- Genutzt (MB oder Bytes)
- Nutzungsprozentsatz
- Netzwerk
- Gesendet (MB oder Bytes)
- Empfangen (MB oder Bytes)
- Festplatte
- Leerlaufprozentsatz
- Anfragelänge (Queue length)
- Gelesen (MB oder Bytes)
- Geschrieben (MB oder Bytes)
Hinweis: Wenn Ihre Server mehrere Festplatten haben, wird dringend empfohlen, alle separat zu erfassen. Mit anderen Worten: Behandeln Sie Laufwerk C, Laufwerk D und Laufwerk E als unterschiedliche Ressourcen bei der Erfassung. Technisch gesehen kann es mehrere aktive Netzwerkgeräte geben, aber das ist nicht sehr häufig.
- Die Performance Monitor-Oberfläche sammelt verschiedene manuell hinzugefügte Hardware-Metriken (zu perfmon):

Hinweis: Einige Methoden zur Erfassung der Auslastung speichern die Werte in Bytes, während andere Megabytes verwenden. Beides ist in Ordnung, aber es ist wichtig zu verstehen, welche Einheit für Analyse und Berichtspräsentation erfasst wird.
Hinweis: Zusammen mit dem Transaktionsdurchsatz (z.B. Transaktionen/Sekunde) und den Transaktionsantwortzeiten (z.B. Sekunden) bilden die oben aufgeführten Metriken den Großteil der Key Performance Indicators (KPIs) eines Lasttests. KPI helfen dabei, den Erfolg eines bestimmten Tests oder Vorhabens gegenüber definierten Testzielen (z.B. dem Testplan) zu bewerten und zu benchmarken.
Abtastintervall
Typischerweise läuft ein Lasttest (mit primärem Fokus auf Skalierbarkeit) nicht länger als ein bis zwei Stunden. Da dies als relativ kurze Dauer gilt, macht es Sinn, die Hardware-Auslastung mit einem schnellen Intervall (z.B. kurzer Frequenz) von 5 bis 10 Sekunden zu erfassen. Dies stellt sicher, dass genügend Daten für eine gründliche Analyse gewonnen werden. Bei einem Erfassungsintervall von 1 Minute oder länger könnten einige signifikante Auswirkungen auf die Hardware-Ressourcen (durch den Test) übersehen werden.
Hinweis: Auf Ihrem Netzwerk könnte bereits Überwachungssoftware laufen, die periodisch die Hardware-Auslastung Ihrer ArcGIS Enterprise Server sammelt. Falls Berichte verfügbar sind, können diese für die Lasttestanalyse verwendet werden, solange das Erfassungsintervall kurz ist (z.B. 5 bis 10 Sekunden). Für die Lasttestanalyse interessieren Sie sich eher für detaillierte Metriken über einige Stunden als für eine breite Metrikabdeckung über einen ganzen Tag.
Der Unterschied zwischen Erfassen und Überwachen
Die Begriffe „Erfassen“ und „Überwachen“ der Hardware-Auslastung werden oft synonym verwendet. Für Apache JMeter Testzwecke konzentriert sich dieser Artikel jedoch auf das Erfassen der Nutzung statt auf deren Überwachung. Der entscheidende Unterschied besteht darin, dass Erfassen bedeutet, dass wir die Informationen aufzeichnen oder speichern für eine einfachere Nachtestanalyse.
Testclients (Lastgeneratormaschinen)
Beim Erfassen der Hardware-Auslastung aus einem Lasttest gegen ArcGIS Enterprise ist es bewährte Testpraxis, auch die Nutzung von Testclient-Maschinen zu messen.
Verständlicherweise liegt der Fokus meist auf den Serverressourcen, aber auch die Hardware der Testclients kann ein Engpass sein. Wenn diese Maschinen nicht über ausreichende Kapazitäten verfügen (z.B. Prozessor, Speicher, Netzwerk oder Festplatte), wird die Fähigkeit zur Generierung von Last gegen Ihre Bereitstellung negativ beeinflusst!
Verstehen Sie Ihre Server-Baselines
Wenn Sie mit der Hardware Ihrer ArcGIS Enterprise-Bereitstellung nicht sehr vertraut sind, wird empfohlen, die Ressourcennutzung im Leerlaufzustand zu beobachten. Diese „Nutzung“ hilft dabei, sich ein mentales Bild des beste Fall Szenarios zu machen. Mit anderen Worten: Wie sieht die Maschine aus, wenn Software und Dienste laufen, aber niemand sie benutzt? In einem solchen Szenario sollte die Ressourcenauslastung aller vier Hardware-Kategorien minimal sein.
Ein Lasttest muss diese Information des „Leerlaufzustands“ nicht aufzeichnen, aber es ist gut zu wissen, wie dieser aussieht.
Hinweis: Tools wie Task Manager (für Windows) oder top (für Linux) sind großartige Werkzeuge für eine manuelle schnelle Ansicht der Systemressourcennutzung. Allerdings sind sie nicht ideal zum Speichern der Nutzung aller Kategorien in einer Datei.
- Task Manager Ansicht der Systemressourcennutzung (Windows):

- top Ansicht der Systemressourcennutzung (Linux):

Bekannte Beispiele zur Erfassung von Auslastungen
Verwendung von Perfmon (zur Erfassung der Auslastung außerhalb des Lasttests)
Vorausgesetzt, dass für Ihr Benutzerkonto unter Windows die erforderlichen Berechtigungen vorhanden sind, ist perfmon eines die einfachsten Methoden zur Aufzeichnung der Hardware-Auslastung für die Lasttestanalyse. Performance Monitor (und die unterstützenden Technologien) kann die Nutzung vom lokalen Rechner oder mehreren Remote-Servern gleichzeitig erfassen.<\/P>
Hinweis: Zur Erinnerung, die innerhalb jeder Hardware-Gruppe verfügbaren Metriken in perfmon sind zahlreich.<\/STRONG><\/FONT>
Es gibt auch eine große Anzahl von Software-Metriken, die erfasst werden können. Aber in diesem Fall gilt: Weniger ist mehr. Für die meisten Situationen werden nur eine kleine Handvoll Zähler benötigt.<\/STRONG><\/FONT><\/P>Wie bereits erwähnt, wo Sie auf Überlegungen stoßen können:<\/P>Die ArcGIS Enterprise-Bereitstellung läuft unter Linuxperfmon ist für Linux nicht verfügbarDie einfachste Lösung besteht darin, eine andere Methode zur Informationssammlung zu verwenden (später besprochen)<\/LI><\/UL><\/LI><\/UL><\/LI>Die Bereitstellung befindet sich in der CloudDas Ausführen von perfmon in der Cloud, um von anderen Bereitstellungsmaschinen (in der Cloud) zu sammeln, ist technisch möglich, aber im Hintergrund werden Netzwerkprotokolle verwendet, die in der Umgebung typischerweise blockiert sindDie einfachste Lösung hier ist, perfmon manuell auf jeder Cloud-Maschine auszuführen und die generierten Ausgaben nach Abschluss des Tests zu sammeln<\/LI><\/UL><\/LI><\/UL><\/LI><\/UL>Das Starten von perfmon in Windows ist so einfach wie das Ausführen von:<\/P>Ausführen --> perfmon<\/LI><\/UL>Von dort aus können Sie jede Maschine sowie jede jeweilige Hardware-Metrik und jeden Zähler hinzufügen. Obwohl dies sehr leistungsfähig ist, kann es zeitaufwendig sein und potenziell zu Tippfehlern führen!<\/P>Stattdessen wird für diese Methodik empfohlen, ein PowerShell-Skript zu verwenden, bei dem all diese Elemente vordefiniert sind.<\/P>Das Folgende sammelt wichtige perfmon-Metriken (die bereits definiert sind) aus den vier primären Hardware-Kategorien und macht dies für vier verschiedene Maschinen (die Sie angeben können):<\/LI><\/UL> <\/P># ===============================================================================
# Aktualisiert: 2022-08-02
# Dateiname: ps_get_all_continuous.ps1
# Version: 0.1.0
# Beschreibung: Kontinuierliche Erfassung verschiedener Metriken und Speichern (binärer) Werte in einer Datei
# Hinweise: Es wird empfohlen, die Metrik-Erfassung 20 Sekunden vor Testbeginn zu starten
# da die Initialisierung der Zähler einige Zeit in Anspruch nehmen kann
# ===============================================================================
Write-Output -InputObject 'Sammle alle Metriken (kontinuierlich)...'
# Variablen
# Windows Perfmon Zähler
$counters = "Processor(_Total)\% Processor Time","Memory\Available MBytes","Memory\Committed Bytes","Memory\% Committed Bytes In Use","Network Interface(*)\Bytes Received/sec","Network Interface(*)\Bytes Sent/sec","LogicalDisk(_Total)\% Idle Time","LogicalDisk(_Total)\Disk Read Bytes/sec","LogicalDisk(_Total)\Disk Write Bytes/sec"
# Maschinen, von denen gesammelt wird
$computers = @('server1.domain.com','server2.domain.com','server3.domain.com','server4.domain.com')
# Zeit in Sekunden zwischen jeder Stichprobenerfassung
$sampleinterval = 10
$date = (Get-Date)
$dyndate = '{0:yyyyMMddTHHmmss}' -f $date # 20220303T140044
# Dateiname
$filename = "perfmon_all_continuous"
# Ausgabedateityp (Optionen sind blg, csv oder tsv)
$outputfiletype = "blg"
# Ausgabedatei
$outputfile = '{0}_{1}.{2}' -f $filename, $dyndate, $outputfiletype
# Get-counter
Write-Output -InputObject ('Startdatum und -zeit: {0}' -f $date)
Get-counter -Computername $computers -Counter $counters -Continuous -Sampleinterval $sampleinterval | Export-counter -Force -FileFormat $outputfiletype -Path $outputfile <\/code><\/pre><P> <\/P><UL><LI>Die Metriken werden alle 10 Sekunden <U>erfasst, bis Sie im PowerShell-Fenster Strg-C drücken<\/U>. Die Informationen werden in einer binär formatierten Datei gespeichert, die Sie unter Windows öffnen können (für weitere Analysen oder Transformationen):<\/LI><\/UL><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="capturehardware_powershell_start_output.png" style="width: 999px;"><img src="https:\/\/us.v-cdn.net\/6038851\/uploads\/images\/49356iC6B4C3B9199D2CF8\/capturehardware_powershell_start_output.png" role="button" title="capturehardware_powershell_start_output.png" alt="capturehardware_powershell_start_output.png" \/></span><\/P><P><STRONG><FONT color="#FF0000">Hinweis: Es wird empfohlen, dieses Powershell-Skript etwa 20 oder 30 Sekunden <U>vor</U> Beginn Ihres Lasttests zu starten, da die Initialisierung der Zähler nicht sofort erfolgt und ein oder zwei Momente dauert.<\/FONT><\/STRONG><\/P><UL><LI>Sie können die *.blg-Datei jederzeit während der Erfassung öffnen, aber die neuesten Informationen werden erst gespeichert und in die Datei geschrieben, wenn Sie im PowerShell-Fenster Strg-C drücken, in dem das Skript ausgeführt wird.<\/LI><LI>Ein Doppelklick zum Öffnen der *.blg-Datei sollte ähnlich wie folgt aussehen:<\/LI><\/UL><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="capturehardware_powershell_results.png" style="width: 965px;"><img src="https:\/\/us.v-cdn.net\/6038851\/uploads\/images\/49377i9D7D47D522AD17A4\/capturehardware_powershell_results.png" role="button" title="capturehardware_powershell_results.png" alt="capturehardware_powershell_results.png" \/></span><\/P><P><SPAN>Das Endergebnis ist eine Ausgabe, die sehr ähnlich aussieht wie das, was wir erfasst haben. In diesem Fall wurde der Prozess jedoch automatisiert (was gut ist).<\/SPAN><\/P><P><SPAN>Über diese Oberfläche im Performance Monitor können Sie Metriken für eine spezifische Isolierung auswählen/abwählen, das Diagramm als Bild exportieren, die Rohdaten in ein anderes Format wie CSV speichern oder Nutzungsanalysen aller gesammelten Maschinen durchführen. Sehr leistungsfähig!<\/SPAN><\/P><P><SPAN><FONT color="#FF0000"><STRONG>Hinweis: Performance Monitor-Skripte integrieren sich nicht direkt in JMeter. <\/STRONG><\/FONT><\/SPAN><\/P><P><SPAN><FONT color="#FF0000"><STRONG>Hinweis: Für Cloud-Bereitstellungen müssen Sie das perfmon-Skript möglicherweise manuell auf jedem jeweiligen Server ausführen.<\/STRONG><\/FONT><\/SPAN><\/P><H3 id="toc-hId--464400263">Verwendung von dstat (zur Erfassung der Auslastung außerhalb des Lasttests)<\/H3><P>dstat ist ein kostenloses Kommandozeilen-Tool (geschrieben von dag@wieers.com), das für (oder mit) den meisten Linux-Distributionen verfügbar ist und die Hardware-Auslastung erfasst (und überwacht).<BR \/>Obwohl das Tool seit mehreren Jahren nicht aktualisiert wurde, ist es ziemlich robust und leicht zu skripten.<\/P><UL><LI>dstat Terminal-Ausgabe bei Ausführung ohne Optionen:<\/LI><\/UL><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="capturehardware_dstat_monitor.png" style="width: 797px;"><img src="https:\/\/us.v-cdn.net\/6038851\/uploads\/images\/49381i3426B23A73682927\/capturehardware_dstat_monitor.png" role="button" title="capturehardware_dstat_monitor.png" alt="capturehardware_dstat_monitor.png" \/></span><\/P><P>Das Folgende wird auf Ihrem Linux-Server ausgeführt und erfasst alle 5 Sekunden die Hardware-Nutzung in einer CSV-Datei <U>, bis Sie es manuell mit Strg-C stoppen<\/U>:<\/P><UL><LI>[gisadmin@pesrv04 ~]$ <STRONG>dstat -tTcmn --disk-util -d --nocolor --noheaders --output dstat_20220823.csv 5<\/STRONG></LI><\/UL><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="capturehardware_dstat_capture.png" style="width: 999px;"><img src="https:\/\/us.v-cdn.net\/6038851\/uploads\/images\/49383i12F99873FC093EA3\/capturehardware_dstat_capture.png" role="button" title="capturehardware_dstat_capture.png" alt="capturehardware_dstat_capture.png" \/></span><\/P><P><FONT color="#FF0000"><STRONG>Hinweis: Bei dstat ist die erfasste Prozessor-Auslastung der "Leerlaufzeitanteil", <EM>nicht</EM> der Nutzungsanteil. Um den Nutzungsanteil zu erhalten, ziehen Sie den Wert von 100 ab. Die Festplattenauslastung hingegen wird als Nutzungsprozentsatz angegeben. Zusätzlich enthält die obige Ausgabe ein Präsentationsformat, sodass die Rohwerte (nicht angezeigt) für Speicher, Netzwerk und Festplatte als Bytes gespeichert werden.<\/STRONG></FONT></P ><P ><FONT color="#FF0000"><STRONG >Hinweis : dstat-Skripte müssten manuell und separat auf jeder Linux-Maschine in der Bereitstellung ausgeführt werden. Sie integrieren sich nicht direkt in JMeter. Sobald ein Lasttest abgeschlossen ist und die Skripte gestoppt wurden, können die CSV-Dateien gesammelt und analysiert werden (z.B. geplottet oder in einem Tabellenkalkulationsprogramm dargestellt).< \/ STRONG >< \/ FONT >< \/ P >< H3 id = "toc-hId-2023112570" > Verwendung von Apache JMeter (zur direkten Erfassung der Auslastung aus dem Lasttest)< \/ H3 >< P > Obwohl es einige mehr Schritte hat (sowie eigene Hürden) als perfmon- und dstat-Skripte , hat die Verwendung von Apache JMeter zur Erfassung der Hardware-Auslastung einen Hauptvorteil : < \/ P >< UL >< LI >< STRONG > Konsistenz < \/ STRONG > . Der gleiche JMeter-Testplan kann verwendet werden , um dieselben Hardware-Metriken von Windows und Linux (und Mac) zu erfassen < UL >< LI > Dies wird durch mehrere kostenlose Softwarekomponenten erreicht : < UL >< LI > Die <A href = "https:\/\ /jmeter-plugins.org/wiki/PerfMon/ " target = "_blank" rel = "noopener nofollow noreferrer " > jp@gc - PerfMon Metrics Collector < \/ A > Erweiterung , die zu JMeter hinzugefügt wird < BR \/ >< UL >< LI > Diese Komponente wird verwendet , um festzulegen , welche Metriken gesammelt werden sollen und von welchen Maschinen < \/ LI >< \/ UL >< \/ LI >< LI > Das <A href = "https:\/\ /github.com/undera/perfmon-agent/blob/master/README.md " target = "_blank" rel = "noopener nofollow noreferrer " > PerfMon Server Agent < \/ A > Tool , das in einer Java Runtime Environment (JRE) auf jedem Server in der Bereitstellung ausgeführt wird < UL >< LI > Diese Komponente führt die eigentliche Sammlung auf jedem Server durch und sendet die Daten zurück an JMeter < \/ LI >< \/ UL >< \/ LI >< \/ UL >< \/ LI >< \/ UL >< \/ LI >< \/ UL >< P > Die jp@gc - PerfMon Metrics Collector-Komponente kann einfach über den JMeter Plugins Manager zum Testplan hinzugefügt werden (zu finden unter „PerfMon (Servers Performance Monitoring):< \/ P >< P >< span class = "lia-inline-image-display-wrapper lia-image-align-center " image-alt = "capturehardware_jmeter_pluginmanager.png " style = "width: 999px; " >< img src = "https:\/\ /us.v-cdn.net/6038851/uploads/images/49709i9536381D99067E93/capturehardware_jmeter_pluginmanager.png " role = "button " title = "capturehardware_jmeter_pluginmanager.png " alt = "capturehardware_jmeter_pluginmanager.png " \/ ></ span >< \/ P >< P >< SPAN > Die Die PerfMon Server Agent-Komponente ist relativ einfach hinzuzufügen, erfordert jedoch einige zusätzliche Schritte, um richtig zu funktionieren.<\/SPAN><\/P><P><FONT color="#FF0000"><STRONG>Hinweis: Aufgrund eines Fehlers in der sigar-amd64-winnt-Bibliothek stürzt der ServerAgent <EM>ab<\/EM>, wenn Sie die out-of-the-box-Bibliothek mit JDK oder JRE größer als Version 8 verwenden. Die Lösung besteht darin, die Bibliothek zu patchen oder eine aktuelle Version 8 JRE zu verwenden.<\/STRONG><\/FONT><\/P><P><FONT color="#000000"><A href="https:\/\/www.openlogic.com\/openjdk-downloads" target="_self" rel="nofollow noopener noreferrer">OpenLogic<\/A> bietet kostenlose, regelmäßig aktualisierte v8 OpenJDK (und JRE) Releases zum Download für Windows, Linux und Mac an. Obwohl das JDK funktionieren würde, wird in diesem Fall das JRE empfohlen, da es ein kleineres Paket zum Herunterladen ist, aber dennoch die Umgebung bereitstellt, die für den Betrieb des Agenten erforderlich ist. <\/FONT><\/P><P><FONT color="#FF0000"><STRONG>Hinweis: Sowohl das 32bit- als auch das 64bit-JRE funktionieren für den ServerAgent.<\/STRONG><\/FONT><\/P><P><FONT color="#FF0000"><STRONG>Hinweis: Das OpenLogic JDK oder JRE kann auch verwendet werden, um Apache JMeter selbst auszuführen.<\/STRONG><\/FONT><\/P><P><FONT color="#000000"><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="capturehardware_openlogic_download.png" style="width: 943px;"><img src="https:\/\/us.v-cdn.net\/6038851\/uploads\/images\/49406iEBD98A1C9C85F57D\/capturehardware_openlogic_download.png" role="button" title="capturehardware_openlogic_download.png" alt="capturehardware_openlogic_download.png" \/><\/span><\/FONT><\/P><UL><LI><FONT color="#000000"><SPAN>Der ServerAgent und das OpenLogic JRE wurden im selben Ordner entpackt:<\/SPAN><\/FONT><\/LI><\/UL><P><FONT color="#000000"><FONT color="#000000"><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="capturehardware_openlogic_serveragent_explorer.png" style="width: 942px;"><img src="https:\/\/us.v-cdn.net\/6038851\/uploads\/images\/49499i1001834053E61544\/capturehardware_openlogic_serveragent_explorer.png" role="button" title="capturehardware_openlogic_serveragent_explorer.png" alt="capturehardware_openlogic_serveragent_explorer.png" \/><\/span><\/FONT><\/FONT><\/P><UL><LI> Das OpenLogic JRE wurde in den ServerAgent-Ordner verschoben:<\/LI><\/UL><P><FONT color="#000000"><FONT color="#000000"><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="capturehardware_openlogic_serveragent_jre.png" style="width: 943px;"><img src="https:\/\/us.v-cdn.net\/6038851\/uploads\/images\/49500i9E7477A4EACB100A\/capturehardware_openlogic_serveragent_jre.png" role="button" title="capturehardware_openlogic_serveragent_jre.png" alt="capturehardware_openlogic_serveragent_jre.png" \/><\/span><\/FONT><\/FONT><\/P><UL><LI>Öffnen Sie die Datei startAgent.bat in einem Editor und aktualisieren Sie sie mit dem Namen des JRE-Verzeichnisses, das in den ServerAgent-Ordner kopiert wurde:<\/LI><\/UL><P> <\/P><pre class="lia-code-sample language-csharp"><code> off\n\nset JAVAPATH=.\\openlogic-openjdk-jre-8u342-b07-windows-64\\bin\n%JAVAPATH%\\java -jar %0\\..\\CMDRunner.jar --tool PerfMonAgent %*<\/code><\/pre><P> <\/P><UL><LI>Speichern Sie die Änderungen<\/LI><LI>Der Ordner C:\JMeterAgent\ServerAgent-2.2.3 enthält jetzt einen eigenständigen ServerAgent, der auf die entsprechenden Maschinen kopiert werden kann, um deren Hardware-Auslastung zu erfassen<\/LI><LI>Um den Agenten unter <STRONG>Windows<\/STRONG> zu starten, doppelklicken Sie auf startAgent.bat<UL><LI>Der Agent wird in einem Befehlsfenster gestartet:<\/LI><\/UL><\/LI><\/UL><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="capturehardware_serveragent_listening.png" style="width: 976px;"><img src="https:\/\/us.v-cdn.net\/6038851\/uploads\/images\/49501iB7B6D67885E49A9C6A9C9C8E49A9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9\capturehardware_serveragent_listening.png" role="button" title="capturehardware_serveragent_listening.png" alt="capturehardware_serveragent_listening.png" \/></span></P><UL><LI>Der Agent beginnt erst dann mit dem Sammeln von Metriken, wenn dies vom Apache JMeter Testplan angewiesen wird<BR \/ ><UL ><LI >Standardmäßig kommunizieren der Agent und JMeter über TCP- und UDP-Port 4444 miteinander<\ / LI ><\ / UL ><\ / LI ><\ / UL >< P >< FONT color = "#FF0000" >< STRONG > Hinweis: Der jp@gc - PerfMon Metrics Collector verwendet den Namen "perfmon", nutzt jedoch <U>nicht<\ / U > tatsächlich die Windows Performance Monitor-Technologie.<\ / STRONG ><\ / FONT ><\ / P >< H1 id = "toc-hId--737670810" > Der <SPAN > SampleWorldCities <\ / SPAN > Testplan mit Metriksammlung-Unterstützung <\ / H1 >< UL >< LI > Um den Apache JMeter Testplan herunterzuladen, der in diesem Artikel verwendet wird, siehe: <STRONG ><A href = "https:\/ \/community.esri.com \/ccqpr47374 \/attachments \/ccqpr47374 \/implementing-arcgis-blog \/355.14 \/1 \/sampleworldcities5.zip " target = "_self " > sampleworldcities5.zip <\ / A ><\ / STRONG > <\ / LI >< LI > Das Öffnen des Testplans in Apache JMeter sollte ähnlich wie folgt aussehen:<UL class = "lia-list-style-type-circle " >< LI > Passen Sie die benutzerdefinierten Variablen an Ihre Umgebung an<UL >< LI > Dieser Test definiert vier verschiedene Maschinen zur Erfassung der Hardware-Auslastung:<UL >< LI > Ein Webadapter<UL >< LI > Die Anfragen werden ebenfalls an diesen Endpunkt gesendet<\ / LI ><\ / UL ><\ / LI >< LI > Ein ArcGIS Server<\ / LI >< LI > Ein Portal für ArcGIS<\ / LI >< LI > Der Testclient (die Maschine, auf der JMeter ausgeführt wird)<UL >< LI > Der Hostname dieser Maschine wird von JMeter automatisch erkannt, wenn der Test ausgeführt wird<\ / LI ><\ / UL ><\ / LI ><\ / UL ><\ / LI ><\ / UL ><\ / LI ><\ / UL >< P >< span class = "lia-inline-image-display-wrapper lia-image-align-center " image-alt = "capturehardware_jmetertestplan_userdefinedvariables.png " style = "width: 999px; " >< img src = "https:\/ \/us.v-cdn.net \/6038851 \/uploads \/images \/49509iFF0B49BC3452FB54 \/capturehardware_jmetertestplan_userdefinedvariables.png " role = "button " title = "capturehardware_jmetertestplan_userdefinedvariables.png " alt = "capturehardware_jmetertestplan_userdefinedvariables.png " \/ ></ span ><\ / P >< H2 id = "toc-hId-1878924742 " > Komponenten des Testplans <\ / H2 >< P > Die Erweiterung jp@gc - PerfMon Metrics Collector ist hier das einzige interessante Element, da dieser Test praktisch identisch mit früheren Artikel-Testplänen für SampleWorldCities ist.<\ / P >< H3 id = "toc-hId-200552998 " > jp@gc - PerfMon Metrics Collector Erweiterung <\ / H3 >< P > Wie bereits erwähnt, teilt die Erweiterung jedem laufenden Agenten mit, was er sammeln soll. Der im Artikel verfügbare Testplan hat bereits die Zähler für jede der vier primären Hardwarekategorien hinzugefügt. <\ / P >< P >< FONT color = "#FF0000 " >< STRONG > Hinweis: Die Metrikparameter funktionieren für Linux und Mac. Die Disks IO-Metriken in der Erweiterung sind jedoch so konfiguriert, dass sie auf dem Laufwerk C (z.B. C\\:) gesammelt werden, welches unter Linux nicht existiert. Dies müsste auf \/ geändert werden.<\ / STRONG ><\ / FONT ><\ / P >< span class = "lia-inline-image-display-wrapper lia-image-align-center " image-alt = "capturehardware_jmetertestplan_perfmonmetricscollector.png " style = "width: 999px; " >< img src = "https:\/ \/us.v-cdn.net \/6038851 \/uploads \/images \/49510iD61C8B558F5AFD10 \/capturehardware_jmetertestplan_perfmonmetricscollector.png " role = "button " title = "capturehardware_jmetertestplan_perfmonmetricscollector.png " alt = "capturehardware_jmetertestplan_perfmonmetricscollector.png " \/ ></ span ><\ / P >< H2 id = "toc-hId--1735984184 " > Validieren der Verbindung zwischen JMeter und ServerAgent <\ / H2 >< P > Starten Sie den Test aus der GUI durch Klicken auf die Wiedergabetaste (grünes Dreieck)<\ / P >< UL >< LI > Wenn alle ServerAgents auf allen vorgesehenen Maschinen in der ArcGIS Enterprise-Bereitstellung laufen und erreichbar sind, sollten sie in der Lage sein, Auslastungsdaten zu sammeln und diese an den Testplan zurückzusenden<\ / LI >< LI > Sobald JMeter diese Informationen erhält, zeigt es sie im Diagramm-Tab an<UL >< LI > Lassen Sie dies einige Sekunden lang sammeln, um die Verbindung zu validieren, und stoppen Sie dann den Test<\ / LI ><\ / UL ><\ / LI ><\ / UL >< P >< span class = "lia-inline-image-display-wrapper lia-image-align-center " image-alt = "capturehardware_jmetertestplan_validateconnectivity.png " style = "width: 999px; " >< img src = "https:\/ \/us.v-cdn.net \/6038851 \/uploads \/images \/49512iACE9249861C62895 \/capturehardware_jmetertestplan_validateconnectivity.png " role = "button " title = "capturehardware_jmetertestplan_validateconnectivity.png " alt = "capturehardware_jmetertestplan_validateconnectivity.png " \/ ></ span ><\ / P >< P >< FONT color = "#FF0000 " >< STRONG > Hinweis: Wenn der Test über die Befehlszeile ausgeführt wird, basiert der Dateiname mit den gesammelten Metrikdaten auf Variablen im bat-Skript, die die Datei mit dem Präfix „results_“ definieren. Nach Abschluss des Tests können Sie dieses Element „jp@gc - PerfMon Metrics Collector“ verwenden, um die Rohwerte zu laden und entweder bestimmte Zähler zu isolieren oder Diagrammbilder zu erzeugen. Diese Datei beginnt mit dem String „perfmon_“. Die <\ / STRONG ><\ FONT color="#FF0000"><STRONG>Ergebnis- und perfmon-Dateien enden beide mit einer *.jtl-Erweiterung sind aber nur CSV-Dateien.<\ / STRONG ></ FONT ></ P ></ FONT ></ P ></ FONT ></ P ></ FONT ></ P ></ FONT ></ P ></ FONT ></ P ></ FONT ></ P ></ FONT ></ P ></ FONT ></ P ></ FONT ></ P ></ FONT ></ P ></ FONT ></ P ></ FONT ></ P ></ FONT ></ P ></ FONT ></ P ></ FONT ></ P ></ FONT ></ P /></font></p> Speicherort des JMeter Testplan-Stammordners (z. B. der Ordner, in dem sich der Testplan befindet)
set projectdir=%~dp0
rem Name des JMeter Testplans (ohne die JMX-Dateierweiterung)
set testname=sampleworldcities5
rem Zeichenfolge, die an die Ergebnisdatei jedes Testlaufs angehängt wird
set runname=testrun1
rem Proxy-Einstellungen
rem set proxyhost=http:\/\/localhost
rem set proxyport=8888
rem ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
rem *** Starten Sie Ihre Motoren ***
color 20
rem Setzen Sie die Umgebungsvariable zur Referenz im Test (z. B. ${__P(env.run)})
set jvm_args="-Denv.runname=%testname%_%runname%"
echo on
rem *** Test gestartet ***
%javadir%\java.exe --illegal-access=warn %jvm_args% %heap% -jar %jmeterbin%\ApacheJMeter.jar -Jjmeter.save.saveservice.autoflush=false -n -f -t "%projectdir%\%testname%.jmx" ^
-l "%projectdir%\results\results_%testname%_%runname%.jtl" ^
-j "%projectdir%\logs\debug_%testname%_%runname%.log" ^
-e -o "%projectdir%\reports\%testname%_%runname%" ^
rem bei Bedarf auskommentieren
rem -H %proxyhost% -P %proxyport% ^
rem *** Test abgeschlossen ***
echo off
color 40
ping localhost -n 5
color 07
Hinweis: Es wird immer empfohlen , den Startzeitpunkt und die Dauer des Lasttests mit den zuständigen Personen Ihrer Organisation abzustimmen. Dies gewährleistet minimale Auswirkungen auf Benutzer und andere Kollegen, die möglicherweise ebenfalls Ihre lokale ArcGIS Enterprise Site nutzen müssen. Zusätzlich hilft dies, Systemrauschen durch andere Aktivitäten und Nutzung zu vermeiden, das die Testergebnisse „verunreinigen“ könnte.
Hinweis: Aus mehreren Gründen wird dringend empfohlen, niemals Lasttests für von ArcGIS Online bereitgestellte Dienste durchzuführen.
Allgemeiner Methodik-Leitfaden
Dieser Leitfaden soll nicht umfassend alle Szenarien zur Erfassung der Hardwareauslastung abdecken.
- Szenario #1
- Server
- Umgebung
- Erfassungsgerät (Testclient)
- Beschreibung
- Erfassung der Windows-Auslastung von Windows aus
- Schwierigkeitsgrad
- Empfohlene Methodik
- Windows Perfmon (über PowerShell-Skript)
- Szenario #2
- Server
- Umgebung
- Erfassungsgerät (Testclient)
- Beschreibung
- Erfassung der Windows/Linux-Auslastung von Windows aus
- Schwierigkeitsgrad
- Empfohlene Methodik
- JMeter Perfmon Extension und ServerAgent
- Szenario #3
- Server
- Umgebung
- Erfassungsgerät (Testclient)
- Beschreibung
- Erfassung der Linux-Auslastung von Windows/Linux aus
- Schwierigkeitsgrad
- Empfohlene Methodik
- Szenario #4
- Server
- Umgebung
- Erfassungsgerät (Testclient)
- Beschreibung
- Erfassung der Windows/Linux-Auslastung von Windows aus
- Schwierigkeitsgrad
- Empfohlene Methodik
- Cloud Watch/Azure Monitor (nicht in diesem Artikel behandelt)