スムーズ リスタート
GR は Graceful Restart の略で、プロトコルの再起動時に転送サービスが中断されないようにする仕組みです。
GR メカニズムの核心は、デバイスがプロトコルを再起動すると、周囲のデバイスに通知して、一定期間内に安定したネイバー関係とデバイスへのルートを維持することができることです。プロトコルが再起動されると、周辺デバイスは情報 (GR をサポートするルーティング/MPLS 関連プロトコルによって維持されるさまざまなトポロジ、ルーティング、およびセッション情報を含む) の同期を支援して、デバイスを再起動前の状態に復元できます。最短の状態です。プロトコル再起動処理全体で経路のフラッピングやパケット転送経路の変更はなく、システム全体が中断することなくデータを転送できます。このプロセスはスムーズな再起動と呼ばれます。
nginx Smooth Restart
Nginx のプロセスはメインプロセスとワーカープロセスの 2 種類に分かれており、そのスムーズな再起動はシグナル HUB を通じて制御されます。
注: POSIX 準拠のプラットフォームでは、SIGUSR1 と SIGUSR2 は、ユーザー定義の状況を表すプロセスに送信されるシグナルです。
nginx のスムーズな再起動プロセスを詳細に分析するために、nginx プロセスの変化を監視し続けます。
Send HUP signal
kill -HUP `cat /home/git/nginx/logs/nginx.pid`
1. マスターは新しい構成を使用して n-1 個のワーカーと新しいマスターをフォークアウトします#2. 新しいワーカーは新しいリクエストを処理し、古いワーカーは実行後に終了します##3。新しいマスターを使用してサービスを引き継ぐ際、マスターは設定をリロードします
4。マスターがロードされ構成された後、新しいマスターはワーカー作業モードに切り替わります
スムーズな再起動後、マスター プロセス番号変わりません。
nginx スムーズ アップグレード
HUP はスムーズな再起動、設定の読み込みなどにのみ使用されます。nginx バージョンをスムーズにアップグレードし、コンパイルされたバイナリ ファイルをリロードしたい場合は、 USR2 信号を使用する必要があります。
1. USR2 シグナルを送信しますkill -USR2 `cat /home/git/nginx/logs/nginx.pid`
2. 古いマスターと nginx ワーカーに WINCH シグナルを送信します。つまり、新しいリクエストの受信は停止しますが、すでに処理中のリクエストは終了しません。一定の時間が経過すると、古い nginx のすべてのワーカー プロセスが終了し、マスター プロセスのみが残り、すべてのユーザー リクエストは新しい nginx プロセスによって処理されます。
kill -WINCH `cat /home/git/nginx/logs/nginx.pid.oldbin`3. 古いマスターに QUIT シグナルを送信すると、古い nginx プロセスが完全に終了し、スムーズなアップグレードが完了します。
kill -QUIT `cat /home/git/nginx/logs/nginx.pid.oldbin`

FPM Smooth Restart
FPM (FastCGI Process Manager) は、PHP FastCGI の追加機能のほとんどを置き換えるために使用されます。 php5 FPM は .3.3 から統合されています。PHP-FPM は、./configure で –enable-fpm パラメータを渡すことで有効にできます。 FPM のスムーズな再起動は USR2 信号によって制御される必要がありますが、それは nginx のスムーズな再起動プロセスとはまったく異なります。
kill -USR2 `cat /home/git/php/var/run/php-fpm.pid`fpm プロセスの観察を続けると、FPM がスムーズに再起動することがわかります。新しいマスターと子を開始する前に、子プロセスが完全に終了するまで待つ必要があります。プロセスが終了し、古いマスターが終了します。
さらなる分析には strace を使用してください
この結論をさらに検証するには、サーバー側のスリープ スクリプトを作成します。
<?php exec("sleep 5"); echo 'done';
ブラウザを使用してこのアドレスをリクエストします。この間に、fpm はスムーズに再起動され、リクエストは直接502になります。
nginx エラー ログ:[error] 29841#0: *1646 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "GET /test.php HTTP/1.1", upstream: "fastcgi://127.0.0.1:9001", host: "localhost"php bug#60961 には、fpm がスムーズな再起動を正常に実現できないという説明もあります。
FPMはそんなに低いのでしょうか?その時点での答えはノーでした。実際、私たちの目標は process_control_timeout パラメーターを通じて達成できます。
プロセス制御タイムアウト
子プロセスがメインプロセスから多重化シグナルを受け入れるためのタイムアウトを設定します。使用可能な単位: s (秒)、m (分)、h (時間)、または d (日)。デフォルトの単位: s (秒)。デフォルト: 0 (オフ)。
原則として、php-fpm はリクエストを処理するためにアイドル状態の fastcgi プロセスを選択します。処理の前に、php-fpm は fastcgi プロセスがリクエスト処理を受け入れる準備をするために fastcgi にシグナルを送信します。ただし、fastcgi プロセスは常にリクエストを処理できるわけではありません。つまり、信号 (一時停止アニメーションなど) に常に応答できるわけではありません。このとき、php-fpm が fastcgi プロセスに残す時間を次のように設定する必要があります。タイムアウトになった場合、php -fpm は他の方法 (他の fastcgi プロセスを選択するなど) を考えますが、これが process_control_timeout パラメーターの役割です。
このパラメータのデフォルト値は 0 で、これは効果がありません。10 に変更して再確認してください。502 は表示されなくなります。
以上がnginx スムーズ リスタートと FPM スムーズ リスタートとは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

NginxとApacheはどちらも強力なWebサーバーであり、それぞれがパフォーマンス、スケーラビリティ、効率の点で独自の利点と短所を備えています。 1)nginxは、静的なコンテンツを処理し、逆プロキシを逆にするときにうまく機能します。 2)Apacheは、動的コンテンツを処理するときにパフォーマンスが向上し、リッチモジュールサポートが必要なプロジェクトに適しています。サーバーの選択は、プロジェクトの要件とシナリオに基づいて決定する必要があります。

Nginxは、高い並行リクエストの処理に適していますが、Apacheは複雑な構成と機能的拡張が必要なシナリオに適しています。 1.Nginxは、イベント駆動型の非ブロッキングアーキテクチャを採用しており、高電流環境に適しています。 2。Apacheはプロセスまたはスレッドモデルを採用して、複雑な構成のニーズに適したリッチモジュールエコシステムを提供します。

Nginxは、Webサイトのパフォーマンス、セキュリティ、およびスケーラビリティを改善するために使用できます。 1)逆プロキシおよびロードバランサーとして、Nginxはバックエンドサービスを最適化し、トラフィックを共有できます。 2)イベント駆動型および非同期アーキテクチャを通じて、nginxは高い並行接続を効率的に処理します。 3)構成ファイルでは、静的ファイルサービスやロードバランシングなどのルールの柔軟な定義を可能にします。 4)最適化の提案には、GZIP圧縮の有効化、キャッシュの使用、およびワーカープロセスの調整が含まれます。

Nginxunitは複数のプログラミング言語をサポートし、モジュラー設計を通じて実装されています。 1。言語モジュールの読み込み:構成ファイルに従って対応するモジュールをロードします。 2。アプリケーションの起動:呼び出し言語が実行されたときにアプリケーションコードを実行します。 3。リクエスト処理:リクエストをアプリケーションインスタンスに転送します。 4。応答返品:処理された応答をクライアントに返します。

NginxとApacheには独自の利点と短所があり、さまざまなシナリオに適しています。 1.Nginxは、高い並行性と低リソース消費シナリオに適しています。 2。Apacheは、複雑な構成とリッチモジュールが必要なシナリオに適しています。コア機能、パフォーマンスの違い、ベストプラクティスを比較することで、ニーズに最適なサーバーソフトウェアを選択するのに役立ちます。

質問:nginxを開始する方法は?回答:nginxスタートアップnginx検証nginxはnginxを開始しました他のスタートアップオプションを自動的に開始

nginxが開始されるかどうかを確認する方法:1。コマンドラインを使用します:SystemCTLステータスnginx(Linux/unix)、netstat -ano | FindStr 80(Windows); 2。ポート80が開いているかどうかを確認します。 3.システムログのnginx起動メッセージを確認します。 4. Nagios、Zabbix、Icingaなどのサードパーティツールを使用します。

NGINXサービスをシャットダウンするには、次の手順に従ってください。インストールタイプを決定します:Red Hat/Centos(SystemCtl Status Nginx)またはDebian/Ubuntu(Service Nginx Status)サービスを停止します:Red Hat/Centos(SystemCtl Stop Nginx)またはDebian/Ubuntu(Service Nginx Stop)無効自動起動(オプション):Debuntos/Centos/Centos/Centos/Centos/Centos (syst


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境
