過去 2 日間で、一連の Apache サーバーを構築しました。各サーバーには 4G メモリがあり、最初に設定された接続数が少なすぎて、後でユーザーのリクエストに応答するのに時間がかかりました。 , Apache 2.0 .59 設定ファイル httpd.conf を変更しました:
# prefork MPM # StartServers: number of server processes to start # MinSpareServers: minimum number of server processes which are kept spare # MaxSpareServers: maximum number of server processes which are kept spare # MaxClients: maximum number of server processes allowed to start # MaxRequestsPerChild: maximum number of requests a server process serves StartServers 10 MinSpareServers 10 MaxSpareServers 15 ServerLimit 2000 MaxClients 2000 MaxRequestsPerChild 10000
httpd プロセスの数 (つまり、Apache がプリフォーク モードで処理できる同時リクエストの数) を表示します:
Linux コマンド:
ps -ef | grep httpd | wc -l
戻り結果の例:
1388
は、Apache が 1388 個の同時リクエストを処理できることを意味します。この値は、Apache が負荷に応じて自動的に調整できます。グループ内の各サーバーのピーク値は 2002 に達しました。
Apacheの同時リクエスト数とそのTCP接続ステータスを表示します:
Linuxコマンド:
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
戻り結果の例:
LAST_ACK 5
SYN_RECV 30
ESTABLISHED 1597
FIN_WAIT1 51
FIN_WAIT2 504
TIME_WAIT 1057
SYN_RECV は待機中であることを示します処理されたリクエストの数は、通常のデータ送信ステータスを示します。TIME_WAIT は、処理され、タイムアウトが終了するのを待っているリクエストの数を示します。
ステータス: 説明
CLOSED: アクティブまたは進行中の接続はありません
LISTEN: サーバーは着信を待機しています
SYN_RECV: 接続リクエストが到着し、確認を待機しています
SYN_SENT: アプリケーションが開始され、接続をオープンしています
ESTABLISHED: 通常のデータ送信ステータス
FIN_WAIT1: アプリケーションは完了したと言っています
FIN_WAIT2: 相手側が解放に同意しました
ITMED_WAIT: すべてのパケットが終了するのを待っています
CLOSING: 両側が同時にクローズしようとしています
TIME_WAIT : 相手側がリリースを初期化しました
LAST_ACK: すべてのパケットが終了するのを待っています