ホームページ 类库下载 PHP类库 php + nginx Web サイトの同時実行ストレス テストと最適化

php + nginx Web サイトの同時実行ストレス テストと最適化

Oct 20, 2016 pm 01:41 PM

1. テストツール:

Apache ストレステストツール ab

ab は、ab ツールのみをインストールできます。

Ubuntuのインストール ab

apt-get install apache2-utils
ログイン後にコピー

centosのインストール ab

yum install httpd-tools
ログイン後にコピー

abのパラメータを詳しく説明します

形式: ./ab [options] [http://]hostname[:port]/path

パラメータ:

- n テスト セッション中に実行されたリクエストの数。デフォルトでは、リクエストは 1 つだけ実行されます。

-c 一度に生成されるリクエストの数。デフォルトは一度に 1 つです。

-tテストが行​​われる最大秒数。その内部の暗黙的な値は -n 50000 で、サーバーのテストを固定の合計時間に制限します。デフォルトでは、時間制限はありません。

-p には、POST する必要があるデータを含むファイルが含まれています。

-P は、交通機関に BASIC 認定の信頼を提供します。ユーザー名とパスワードは : で区切られ、base64 エンコードで送信されます。この文字列は、サーバーが要求するかどうか (つまり、401 認証要件コードが送信されたかどうか) に関係なく送信されます。

-T POST データで使用される Content-type ヘッダー情報。

-v は、表示される情報の詳細度を設定します。値が 4 以上の場合はヘッダー情報が表示され、値 3 以上の場合は応答コード (404、200 など) が表示され、値 2 以上の場合はヘッダー情報が表示されます。警告やその他の情報。

-V はバージョン番号を表示して終了します。

-w は結果を HTML テーブル形式で出力します。デフォルトでは、背景が白の 2 列のテーブルです。

- GET の代わりに HEAD リクエストを実行します。

-x は、

属性の文字列を設定します。

-X はリクエストにプロキシ サーバーを使用します。

-y

属性を設定する文字列。

-z は、

属性の文字列を設定します。

-C リクエストに Cookie を添付します: OK。その典型的な形式は、名前=値のパラメータのペアであり、このパラメータは繰り返すことができます。

-H は追加のヘッダー情報をリクエストに追加します。このパラメータの一般的な形式は、コロンで区切られたフィールドと値のペアを含む有効なヘッダー行です (例: "Accept-Encoding:zip/zop;8bit")。

-A は、BASIC 認定の信頼をサーバーに提供します。ユーザー名とパスワードは : で区切られ、base64 エンコードで送信されます。この文字列は、サーバーが要求するかどうか (つまり、401 認証要件コードが送信されたかどうか) に関係なく送信されます。

-h は使用法を示します。

-d 「XX [ms] テーブル内で提供された割合」メッセージを表示しません (以前のバージョンのサポートを提供します)。

-e は、リクエストの対応する割合 (1% から 100%) を処理するのに必要な時間の対応する割合 (マイクロ秒単位) を含むカンマ区切り (CSV) ファイルを生成します。この形式は「バイナリ化」されているため、「gnuplot」形式よりも便利です。

-g は、すべてのテスト結果を「gnuplot」または TSV (タブ区切り) ファイルに書き込みます。このファイルは、Gnuplot、IDL、Mathematica、Igor、さらには Excel に簡単にインポートできます。一行目はタイトルです。

- GET の代わりに HEAD リクエストを実行します。

-k は、1 つの HTTP セッションで複数のリクエストを実行する HTTP KeepAlive 機能を有効にします。デフォルトでは、KeepAlive 機能は有効になっていません。

-q 処理されるリクエストの数が 150 を超える場合、ab は約 10% または 100 個のリクエストを処理するたびに、進行状況カウントを stderr に出力します。 -q フラグは、これらのメッセージを抑制します。

例:

### 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
ログイン後にコピー

テスト中に、テスト対象のサーバーで htop コマンドを使用して、CPU とメモリのリアルタイムの使用状況を表示できます:

php + nginx Web サイトの同時実行ストレス テストと最適化

ab の詳細については、以下を参照してください: Apacheパフォーマンステストツールabの使い方の詳細説明

2. 構成の最適化

nginxはPHPリクエストを処理するために3つのステップがあります。

ステップ 1: リクエストを受け入れ、それが PHP リクエストであることを確認して、ステップ 2 に進みます。

ステップ 2: ソケットを介して PHP-FPM の fast-cgi に接続し、PHP-FPM にリクエストを処理させます。

ステップ 3: PHP-FPM の処理結果を取得し、http ヘッダーを追加してクライアントに返します。

したがって、nginx の PHP 同時実行パフォーマンスを向上させたい場合は、次の 3 つの手順を実行する必要があります。

1. nginxの同時接続数を増やします(nginx.confのworker_connectionsとworker_processesを調整します)。

worker_connections: 各ワーカープロセスが同時に処理(開始)できる接続の最大数(すべての接続の数を含む)

worker_processes: nginx によってオープンされるプロセスの数を指定します。公式の声明によると、通常は 1 つです。それだけで十分です。さらに開いてください。マシン IO の影響を軽減できるものはいくつかあります。 一般に、これは現在のマシンの CPU コアの総数の 1 ~ 2 倍です。

参考:

nginx 同時実行の問題の考え方:worker_connections、worker_processes、最大クライアント数

Nginx の動作原理、最適化、抜け穴

2.调大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


このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)