1. Testtools:
Apache-Stresstesttool ab
ab ist ein Leistungstesttool für Apache. Sie können nur das ab-Tool installieren.
Ubuntu-Installation ab
apt-get install apache2-utils
Centos-Installation ab
yum install httpd-tools
Detaillierte Erläuterung der ab-Parameter
Format: ./ab [Optionen] [ http://]hostname[:port]/path
Parameter:
-nDie Anzahl der in der Testsitzung ausgeführten Anforderungen. Standardmäßig wird nur eine Anfrage ausgeführt.
-c Die Anzahl der gleichzeitig generierten Anfragen. Die Standardeinstellung ist jeweils eine.
-tDie maximale Anzahl an Sekunden, die der Test ausführen soll. Sein interner impliziter Wert ist -n 50000, wodurch der Test des Servers auf eine feste Gesamtzeit begrenzt wird. Standardmäßig gibt es keine zeitliche Begrenzung.
-p enthält die Datei mit den Daten, die gepostet werden müssen.
-P bietet einem Transitagenten BASIC-zertifiziertes Vertrauen. Benutzername und Passwort werden durch ein : getrennt und in Base64-Kodierung gesendet. Diese Zeichenfolge wird unabhängig davon gesendet, ob der Server dies erfordert (d. h. ob ein 401-Authentifizierungsanforderungscode gesendet wurde).
-T Inhaltstyp-Header-Informationen, die von POST-Daten verwendet werden.
-v legt die Ausführlichkeit der angezeigten Informationen fest – ein Wert von 4 oder höher zeigt Header-Informationen an, ein Wert von 3 oder höher kann Antwortcodes (404, 200 usw.) anzeigen, ein Wert von 2 oder Größer kann Warnungen und andere Informationen anzeigen.
-V zeigt die Versionsnummer an und wird beendet.
-w gibt die Ergebnisse im HTML-Tabellenformat aus. Standardmäßig handelt es sich um eine zweispaltige Tabelle mit weißem Hintergrund.
-ich führe eine HEAD-Anfrage anstelle einer GET-Anfrage durch.
-x legt die Zeichenfolge des
-Attributs fest. -C Hängen Sie ein Cookie an die Anforderungszeile an. Seine typische Form ist ein Parameterpaar aus Name=Wert, und dieser Parameter kann wiederholt werden. -H fügt der Anfrage zusätzliche Header-Informationen hinzu. Die typische Form dieses Parameters ist eine gültige Kopfzeile, die durch Doppelpunkte getrennte Feld- und Wertepaare enthält (z. B. „Accept-Encoding:zip/zop;8bit“). -A bietet dem Server BASIC-Authentifizierungsvertrauen. Benutzername und Passwort werden durch ein : getrennt und in Base64-Kodierung gesendet. Diese Zeichenfolge wird unabhängig davon gesendet, ob der Server dies erfordert (d. h. ob ein 401-Authentifizierungsanforderungscode gesendet wurde). -h zeigt die Nutzung an. -d Zeigt die Meldung „Prozentsatz, der innerhalb der Tabelle XX [ms] bereitgestellt wurde“ nicht an (bietet Unterstützung für frühere Versionen). -e erzeugt eine durch Kommas getrennte Datei (CSV), die den entsprechenden Prozentsatz der Zeit (in Mikrosekunden) enthält, der für die Verarbeitung jedes entsprechenden Prozentsatzes von Anforderungen erforderlich ist (von 1 % bis 100 %). Da dieses Format „binarisiert“ wurde, ist es nützlicher als das „gnuplot“-Format. -g Schreibt alle Testergebnisse in eine „Gnuplot“- oder TSV-Datei (durch Tabulatoren getrennt). Diese Datei kann problemlos in Gnuplot, IDL, Mathematica, Igor und sogar Excel importiert werden. Die erste Zeile ist der Titel. -ich führe eine HEAD-Anfrage anstelle einer GET-Anfrage durch. -k aktiviert die HTTP-KeepAlive-Funktion, die mehrere Anfragen in einer HTTP-Sitzung ausführt. Standardmäßig ist die KeepAlive-Funktion nicht aktiviert. -q Wenn die Anzahl der verarbeiteten Anfragen mehr als 150 beträgt, gibt ab jedes Mal einen Fortschrittszähler auf stderr aus, wenn etwa 10 % oder 100 Anfragen verarbeitet werden. Das Flag -q unterdrückt diese Nachrichten. z. B.: ### POST /user/login ab -n 100 -kc 10 -p user_login -T 'application/json' -H 'Accept-Encoding:gzip, deflate' -H 'accept-language:zh-Hans-CN;q=1, en-CN;q=0.9' http://XXX/user/login ##### request data 文件 user_login 内容: {"email":"ws65536@qq.com","password":"ws65536"} ### GET /default/index ab -n 1000 -c 100 http://XXX/default/index Während des Tests können Sie den Befehl htop auf dem zu testenden Server verwenden, um die Echtzeitnutzung von CPU und Speicher anzuzeigen: Weitere Informationen zu ab finden Sie unter: Ausführliche Erläuterung der Verwendung des Apache-Leistungstesttools ab 2. Konfigurationsoptimierung nginx verfügt über drei Schritte zur Verarbeitung von PHP-Anfragen. Schritt eins: Akzeptieren Sie die Anfrage, stellen Sie fest, dass es sich um eine PHP-Anfrage handelt, und fahren Sie mit Schritt zwei fort. Schritt 2: Stellen Sie über den Socket eine Verbindung zum Fast-CGI von PHP-FPM her und lassen Sie PHP-FPM die Anfrage verarbeiten. Schritt 3: Erhalten Sie das PHP-FPM-Verarbeitungsergebnis, fügen Sie den http-Header hinzu und geben Sie ihn an den Client zurück. Wenn wir also die PHP-Parallelitätsleistung von Nginx verbessern wollen, müssen wir diese drei Schritte ausführen. 1. Erhöhen Sie die Anzahl gleichzeitiger Verbindungen von nginx (passen Sie worker_connections und worker_processes in nginx.conf an). worker_connections: Die maximale Anzahl von Verbindungen, die jeder Arbeitsprozess gleichzeitig verarbeiten (initiieren) kann (einschließlich der Anzahl aller Verbindungen) worker_processes: Gibt die Anzahl der Prozesse an, die von Nginx geöffnet werden sollen. Laut offizieller Aussage reicht es im Allgemeinen aus, mehrere zu öffnen, um die Auswirkungen von Maschinen-E/A zu verringern. Im Allgemeinen beträgt sie das Ein- bis Zweifache der Gesamtzahl der CPU-Kerne auf dem aktuellen Computer. Referenz: Nachdenken über Nginx-Parallelitätsprobleme: Worker_Connections, Worker_Processes und Max ClientsNginx-Arbeitsprinzip, Optimierung und Lücken2.调大php-fpm的并发连接数(调php-fpm.conf 的pm.max_children等)。 本人用的是Ubuntu 14.04.4,PHP 5.5.9,以下目录结构对其他服务器环境可能不适用。 由于在 /etc/php5/fpm/php-fpm.conf 中并没有找到 max_children ,于是使用以下命令进行查找: # 在/etc/php5/fpm 目录下查找所有文件,并依次在每个文件中查找"max_children" sudo find /etc/php5/fpm -name * | xargs grep "max_children" 终于在 /etc/php5/fpm/pool.d/www.conf 中找到了 max_children 等相关配置。 关于具体配置,请参考以下内容: (PHP手册)FastCGI 进程管理器(FPM) php-fpm的配置和优化 PHP-FPM性能优化参考 PHP FPM php-fpm.conf设置详解 3.增加系统的最大文件数量限制(ulimit -n 65535)。 由于NGINX处理PHP请求的第二步需要通过socket的方式和PHP-FPM通信,它能新建的最大socket数受到系统最大打开文件数的限制。新装的Linux默认只有1024,所以必须增加系统最大打开文件数目。 ulimit -n 命令可以查看当前系统最大打开文件数。 ulimit -n 65535 可以将系统最大打开文件数临时修改为65535,然而退出登录后就会失效。 想要修改系统最大打开文件数,并永久生效: vi /etc/security/limits.conf # 添加如下的行 * soft noproc 11000 * hard noproc 11000 * soft nofile 65535 * hard nofile 65535 说明: * 代表针对所有用户 noproc 是代表最大进程数 nofile 是代表最大文件打开数 具体配置参考一下内容: ulimit -n 修改 linux有效修改max open files/ulimit -n |