---
title: "OpenResty FAQ | Netzwerkstruktur für Tests, SSL-bezogene Funktionen, DSL, `ab`-Tool - API7.ai"
description: "Dieser Artikel beschreibt, wie man eine Testnetzwerkumgebung aufbaut, die Unterstützung von test::nginx für SSL, DSL und das `ab`-Tool."
url: "https://api7.ai/de/learning-center/openresty/faq-3"
---

# OpenResty FAQ | Netzwerkstruktur für Tests, SSL-bezogene Funktionen, DSL, \`ab\`-Tool

API7.ai

December 1, 2022

[OpenResty (NGINX + Lua)](https://api7.ai/learning-center/openresty)

Die OpenResty-Artikelserie wurde bisher aktualisiert, und wir haben den Teil über das Testen abgeschlossen. Herzlichen Glückwunsch, dass Sie nicht zurückgeblieben sind, aktiv gelernt und praktiziert haben und begeistert Ihre Gedanken hinterlassen haben.

Viele der in den Kommentaren gestellten Fragen sind wertvoll, und einige der typischeren und interessanteren wurden speziell für das heutige Q\&A extrahiert.

Schauen wir uns heute diese fünf Fragen an.

## Frage 1: Wie baut man die Netzwerkstruktur für Tests auf?

F: Sollte der Client, der `wrk` ausführt, auf einer Maschine im externen Netz oder auf einer Maschine im selben LAN wie der Server platziert werden? Welche dieser beiden Optionen ist für Leistungstests sinnvoller?

A: Für das Testen von webbezogenen Diensten ist die Wahl des richtigen Testtools nur ein guter Anfang, und wie man die Netzwerkstruktur für Tests aufbaut, ist ebenfalls ein wesentlicher Teil der Nachbereitung.

Im Allgemeinen möchten wir die Leistungsgrenzen des Dienstes allein testen, ohne alle Netzwerkstörungen. Zu diesem Zweck können wir zwei Möglichkeiten haben, das Netzwerk für den Stresstest aufzubauen.

Die erste Methode besteht darin, `wrk` und die Serveranwendungen auf derselben leistungsstarken Maschine zu installieren. Zum Beispiel können wir acht Worker in NGINX aktivieren und die verbleibenden CPU-Ressourcen auf `wrk` aufteilen, sodass es nur lokale Netzwerkkommunikation gibt, was den Einfluss des Netzwerks minimiert.

Die zweite Methode besteht darin, ein LAN mit einem dedizierten Router aufzubauen und die Maschine, auf der `wrk` läuft, mit der Maschine zu verbinden, auf der der Server läuft.

Es wird nicht empfohlen, direkt in einem bestehenden Netzwerk zu testen, da die meisten Netzwerke Switches und Firewalls haben, die die Stresstests bei großen Datenmengen einschränken und zu ungenauen Testergebnissen führen können.

Darüber hinaus möchte ich noch ein paar Worte zu Leistungstesttools sagen. Erstens können Leistungstesttools Coordinated Omission-Probleme haben, auf die Sie besonders achten müssen, wenn Sie die Latenzdaten des Tools analysieren.

Coordinated Omission bedeutet, dass es beim Durchführen von Leistungstests nicht ausreicht, die Zeit zwischen dem Senden und Empfangen einer Antwort zu zählen, was nur die Dienstzeit ist, sodass die Statistiken viele potenzielle Probleme übersehen. Daher müssen wir auch die Wartezeit der Testanfrage einbeziehen, was insgesamt die Antwortzeit ist, die den Benutzern wichtig ist. Natürlich, wenn Ihr Serverprogramm blockieren könnte, müssen Sie dieses Problem berücksichtigen. Andernfalls können Sie es ignorieren.

## Frage 2: Kann `test::nginx` SSL-bezogene Funktionen testen?

F: Ist es unmöglich, SSL-bezogene Funktionen mit `test::nginx` zu testen?

A: Das ist nicht der Fall. `test::nginx` kann SSL-bezogene Funktionen testen; Sie können sich auf [ssl.t](https://github.com/apache/apisix/blob/master/t/admin/ssl.t) beziehen. Diese Testfall-Datei testet den gesamten Prozess des SSL-Zertifikats. Zuerst, wie Sie sehen können, verwendet der Testfall Lua-Code, um die öffentlichen und privaten Schlüssel des lokalen Zertifikats zu lesen; dann wird das Zertifikat über die HTTP-API eingerichtet; schließlich wird cosocket verwendet, um den SSL-Handshake und den Zugriff zu testen, um zu überprüfen, ob das Zertifikat gültig ist.

Tatsächlich können nicht nur SSL, sondern auch die in OpenResty enthaltenen Funktionen durch die Verwendung von `test::nginx` überschrieben werden.

Wenn Sie sich nicht sicher sind, ob eine bestimmte Funktion mit `test::nginx` implementiert werden kann, können Sie zuerst die Testfälle von `lua-nginx-module` und anderen OpenResty-Open-Source-Projekten durchsuchen, und Sie werden normalerweise entsprechende Beispiele finden. Schließlich ist `test::nginx` sehr spielbar und variabel, und einige unerwartete Kombinationen und Tricks warten darauf, entdeckt zu werden.

## Frage 3: Was genau ist DSL?

F: Was genau sind DSL und `test::nginx`?

A: DSL steht für Domain Specific Language. Der Zweck von DSL unterscheidet sich von den gängigen Entwicklungssprachen. Es geht nicht darum, die Anforderungen eines allgemeinen Bereichs zu lösen, sondern die eines bestimmten Bereichs. Die bekannteste DSL ist SQL, die Structured Query Language, die im Datenbankbereich verwendet wird.

Was `test::nginx` betrifft, ist es eine DSL, die geschaffen wurde, um die Testanforderungen von NGINX und OpenResty zu erfüllen. Tatsächlich haben die Autoren von OpenResty viele DSL-Ideen erfunden und viele neue Versuche und Lösungen für die OpenResty-Community gebracht. Wie jedoch im vorherigen Artikel erwähnt, ist DSL ein zweischneidiges Schwert, und das Hauptkriterium zur Bewertung des Wertes von DSL ist, ob es den Endbenutzern eine Produktivitätssteigerung bringen kann.

## Frage 4: `test::nginx` Installationsproblem

F: Muss ich nach dem Ausführen von `git clone` den folgenden Befehl ausführen, um `test::nginx` zu installieren?

```
cd test-nginx
perl Makefile.PL
make
sudo make install
```

A: Tatsächlich ist das nicht der Fall. Hier können Sie sich auf einige Open-Source-Projekte beziehen.

Schritt 1: [Installieren Sie es über den Paketmanager](https://github.com/apache/apisix/blob/master/ci/linux_openresty_common_runner.sh#L24)

```
sudo cpanm --notest Test::Nginx >build.log 2>&1 || (cat build.log && exit 1)
```

Schritt 2: [`git clone` das neueste `test::nginx`](https://github.com/apache/apisix/blob/master/ci/linux_openresty_common_runner.sh#L41)

```
git clone https://github.com/openresty/test-nginx.git test-nginx
```

Schritt 3: Fügen Sie das `test-nginx`-Verzeichnis hinzu, wenn Sie den `prove`-Befehl verwenden

```
prove -Itest-nginx/lib -r t
```

Wie ich bereits erwähnt habe, sind die besten Anleitungen für die Installation von OpenResty und den umliegenden Projekten in CI zu finden, nicht in der Dokumentation. Dies mag bei anderen Projekten anders sein, hauptsächlich weil OpenResty seine eigenen Forks oder spezifische Versionen einiger der umliegenden Projekte pflegt und weil OpenResty auch stark von CI abhängig ist. Daher sollten Sie OpenResty auf die gleiche Weise verwenden und testen, wie es in CI gebaut wird, um Konsistenz mit der offiziellen Version zu gewährleisten.

## Frage 5: Ist das `ab`-Testtool gut oder nicht?

F: Wie kommt es, dass Yichun Zhang in Google Groups häufig `ab` als das beste Testtool erwähnt hat?

A: Wie ich im Artikel erwähnt habe, ist `ab` allein in Bezug auf die Tool-Funktionen kein gutes Leistungstesttool, da es nicht genug Anfragedruck erzeugen kann. Allerdings ist die Leistung des Serverprogramms jetzt sehr stark. Wir verwenden `ab` anstelle von `wrk` in `test::nginx`, weil im `TEST_NGINX_BENCHMARK`-Modus `test::nginx` entweder `ab` oder `weighttp` verwendet, abhängig von der HTTP-Protokollversion, als Tool für Leistungstests.

Darüber hinaus hoffe ich, dass Sie beachten, dass sich die Internettechnologie sehr schnell ändert und jeder von uns sein Wissen und seine Fähigkeiten rechtzeitig aktualisieren muss. Zum Beispiel ist meiner Meinung nach diese Wahl von `test::nginx` jetzt aktualisierungsbedürftig, und Yichun Zhang kannte damals möglicherweise die Existenz von `wrk` nicht. Natürlich könnte es in Zukunft bessere Leistungstesttools als `wrk` geben, und wir sollten natürlich eine positive und offene Einstellung haben, um zu lernen und zu wählen.

Heute beantworte ich hauptsächlich die oben genannten Fragen. Ich hoffe, dass ich durch Kommunikation und Q\&A helfen kann, das Gelernte in das Erreichte umzuwandeln. Sie sind auch herzlich eingeladen, diesen Artikel weiterzuleiten, damit wir gemeinsam kommunizieren und Fortschritte erzielen können.

Share article link

Share

Related Posts

[![\`systemtap-toolkit\` und \`stapxx\`: Wie man Daten nutzt, um schwierige Probleme zu lösen?](https://static.api7.ai/2022/12/23/63a548149b18c.png)](https://api7.ai/learning-center/openresty/systemtap-toolkit-and-stapxx)

## [\`systemtap-toolkit\` und \`stapxx\`: Wie man Daten nutzt, um schwierige Probleme zu lösen?](https://api7.ai/learning-center/openresty/systemtap-toolkit-and-stapxx)

[![Genauigkeit bei Performance-Tests mit \`wrk\`](https://static.api7.ai/2022/11/25/63802abdc3b1b.png)](https://api7.ai/learning-center/openresty/performance-testing-tool-wrk)

## [Genauigkeit bei Performance-Tests mit \`wrk\`](https://api7.ai/learning-center/openresty/performance-testing-tool-wrk)

Table of Contents

- [Frage 1: Wie baut man die Netzwerkstruktur für Tests auf?](#frage-1-wie-baut-man-die-netzwerkstruktur-f%C3%BCr-tests-auf)
- [Frage 2: Kann `test::nginx` SSL-bezogene Funktionen testen?](#frage-2-kann-testnginx-ssl-bezogene-funktionen-testen)
- [Frage 3: Was genau ist DSL?](#frage-3-was-genau-ist-dsl)
- [Frage 4: `test::nginx` Installationsproblem](#frage-4-testnginx-installationsproblem)
- [Frage 5: Ist das `ab`-Testtool gut oder nicht?](#frage-5-ist-das-ab-testtool-gut-oder-nicht)
