目次
ディスカッションへの返信 (解決策)
ホームページ バックエンド開発 PHPチュートリアル 同時実行性が高い場合、Apache が頻繁に再起動する

同時実行性が高い場合、Apache が頻繁に再起動する

Jun 23, 2016 pm 01:41 PM

いくつかのサーバーはすべて Windows 2008 システムです
各サーバーの Apache の最大同時実行数は ThreadsPerChild 1000 に設定しました
最近、元のプログラムを最適化するために、マルチスレッドを記述する必要があります (php は Apache のマルチスレッドを使用します)実装) 長時間実行されるプログラムの場合、スレッド数は 50 です。
これらの長時間実行プログラムは、最大 1 時間実行されると一律に停止することがわかりました。原因を長い間調べた結果、プログラムが停止するときに「子プロセスが終了しました」というメッセージが表示されることがわかりました。 Apacheのエラーログにstatus 255 -- Restarting.」と表示されると、Apacheが自動的に再起動します。
そこで、各サーバーの Apache のエラー ログを確認したところ、サーバーの同時実行数が高くなるほど、Apache がより頻繁に再起動されることがわかりました。同時実行数が約 200 の 1 つのサーバーは、実際に数分ごとに再起動しました。
その後、1 つのスレッドを使用して長時間実行プログラムを実行しようとしましたが、1 日後に 50 スレッドに切り替えた後、1 時間以内に再び停止しました。
すでに混乱しています。Apache の設定は複数のポートと同時実行のみを設定しており、残りはオリジナルの設定です。見落としている重要な設定はありますか?
しばらくオンラインで検索しましたが、適切な解決策がありません。一緒に分析して議論しましょう
「子プロセスがステータス 255 で終了しました -- 再起動中です。」Apache が再起動する問題を解決するにはどうすればよいですか?
PHP がプログラムを長時間実行し、Apache が自動的に再起動した場合に自動的に回復する方法は?


ディスカッションへの返信 (解決策)

httpd.conf ファイルをこのように変更すると、一般的なボトルネックは mysql にあると思います。それでもうまくいかない場合は、思い切って nginx に変更してください。私も少し前はそうでしたが、今は nginx を使っていてとても満足しています。

<IfModule prefork.c>    StartServers           5    MinSpareServers        5    MaxSpareServers        10    ServerLimit            2000    MaxClients             1500    MaxRequestsPerChild    1000</IfModule>
ログイン後にコピー

子プロセスはステータス 255 で終了しました -- 再起動中です
子プロセスの終了ステータスは 255?? 再起動します

Windows の PHP はスレッドをサポートしません

fsockopen を通じてシミュレートすると、アクティブに開始された httpプロセス 。 Apache の場合、これはブラウザによって開始されるものと何ら変わりません
同時 http リクエストが Apache の事前設定された同時実行数を超えた場合、キューイングのみが発生しますが、クラッシュは発生しません
もちろん、同時実行数に応じてメモリが必要です保証されています。メモリ不足、クラッシュは当然です

さらに、http レスポンダーが長時間出力しない場合、Apache はハングします。これは Apache の問題ではなく、対応するプログラムの問題です

httpd.conf ファイルをこのように変更する場合、一般的なボトルネックは mysql にあると思います。それでもうまくいかない場合は、思い切って nginx に変更してください。私も少し前はそうでしたが、今は nginx を使っていてとても満足しています。


ありがとうございます。これまで nginx を使用したことがなかったので、試してみることにしました

あなたが Windows システムを使用していることに気づきませんでした。おそらくモデレータが正しいでしょう。

子プロセスはステータス 255 で終了しました -- 再起動中です
子プロセスの終了ステータスは 255?? 再起動しています

Windows の PHP はスレッドをサポートしていません

fsockopen を通じてシミュレートする場合、それはアクティブに開始された http プロセスです。 Apache の場合、これはブラウザによって開始されるものと何ら変わりません
同時 http リクエストが Apache の事前設定された同時実行数を超えた場合、キューイングのみが発生しますが、クラッシュは発生しません
もちろん、同時実行数に応じてメモリが必要です保証されています。メモリ不足、クラッシュは当然です

さらに、http レスポンダーが長時間出力しない場合、Apache はハングします。これは Apache の問題ではなく、対応するプログラムの問題です


私は fsockopen シミュレーションを通じてこれを達成しました。
Apache エラーが発生する場合、タスク マネージャーのメモリが不足していることが原因ではないことをしばらく監視していました。
出力するようにとネットで読んだので、以下も出力しました
echo ' ';//一个空格ob_flush();flush();
ログイン後にコピー

出力は正しく書かれていますか? 「出力バッファの内容をフラッシュする」という文を追加する必要があるかどうかはわかりませんが、出力内容がバッファに保持されると問題が発生すると思います。正してください。

あなたが Windows システムを実行していることに気づきませんでした。おそらくモデレータの言うことは正しいでしょう。


Windows版もあるようなので、とりあえず確認してみます。
本当に機能しない場合、唯一の選択肢は全体として Linux に切り替えることです。つまり、それに応じて変更する必要がある項目がさらに多くなります。

php は Linux 上で動作します。基本的には大きく変える必要はありません。対応するファイルの大文字と小文字に注意してください。

Windows 環境の場合は、fsockopen を使用して動作をシミュレートすることをお勧めします。

現時点では、Apache または nginx を使用し続けることができます。たとえ Win 上の問題が一時的に解決されたとしても、次のピットが待っています。また、それはあまりにも残酷です...
しかし、システムがますます大きくなるにつれて、ますます多くのトラブルが発生し、以前の経験不足によって残された隠れた危険の代償を払わなければならないことは事実です。

昨日、一時的な解決策を考えて、長時間操作がないとマルチスレッドが再起動されるように監視プログラムを書きました(プログラムが長時間実行されると、基本的にはapacheの再起動が原因なので、そのままフォローして再起動するだけのようです。

今日観察してみたら、かなり安定していることが分かり、やっと安心しました。
次に、最も単純なプログラムを使用して、同時実行中に Apache が再起動し続けるかどうかをテストしてみます。まず問題の特徴を明らかにしてから、プログラムの問題を解決するか、環境を変更するかを決定します。



確認すると、Apache の問題であるはずです。
Windowsのnginxには、1つのアクセスが完了しないと他のアクセスが実行できないという問題があり、実行に時間がかかるプログラムを書かなければなりません。

環境問題に関してはどうすることもできませんが、現状では、たとえこれが落とし穴だったとしても、Linux に投資することが最大の希望のようです。

皆さんありがとうございます、先にスレッドを閉じさせていただきます。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 Apr 05, 2025 am 12:04 AM

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

セッションのハイジャックはどのように機能し、どのようにPHPでそれを軽減できますか? セッションのハイジャックはどのように機能し、どのようにPHPでそれを軽減できますか? Apr 06, 2025 am 12:02 AM

セッションハイジャックは、次の手順で達成できます。1。セッションIDを取得します。2。セッションIDを使用します。3。セッションをアクティブに保ちます。 PHPでのセッションハイジャックを防ぐための方法には次のものが含まれます。1。セッション_regenerate_id()関数を使用して、セッションIDを再生します。2。データベースを介してストアセッションデータを3。

確固たる原則と、それらがPHP開発にどのように適用されるかを説明してください。 確固たる原則と、それらがPHP開発にどのように適用されるかを説明してください。 Apr 03, 2025 am 12:04 AM

PHP開発における固体原理の適用には、次のものが含まれます。1。単一責任原則(SRP):各クラスは1つの機能のみを担当します。 2。オープンおよびクローズ原理(OCP):変更は、変更ではなく拡張によって達成されます。 3。Lischの代替原則(LSP):サブクラスは、プログラムの精度に影響を与えることなく、基本クラスを置き換えることができます。 4。インターフェイス分離原理(ISP):依存関係や未使用の方法を避けるために、細粒インターフェイスを使用します。 5。依存関係の反転原理(DIP):高レベルのモジュールと低レベルのモジュールは抽象化に依存し、依存関係噴射を通じて実装されます。

システムの再起動後にUnixSocketの権限を自動的に設定する方法は? システムの再起動後にUnixSocketの権限を自動的に設定する方法は? Mar 31, 2025 pm 11:54 PM

システムが再起動した後、UnixSocketの権限を自動的に設定する方法。システムが再起動するたびに、UnixSocketの許可を変更するために次のコマンドを実行する必要があります:sudo ...

phpstormでCLIモードをデバッグする方法は? phpstormでCLIモードをデバッグする方法は? Apr 01, 2025 pm 02:57 PM

phpstormでCLIモードをデバッグする方法は? PHPStormで開発するときは、PHPをコマンドラインインターフェイス(CLI)モードでデバッグする必要がある場合があります。

PHPでの後期静的結合を説明します(静的::)。 PHPでの後期静的結合を説明します(静的::)。 Apr 03, 2025 am 12:04 AM

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

PHPのCurlライブラリを使用してJSONデータを含むPOSTリクエストを送信する方法は? PHPのCurlライブラリを使用してJSONデータを含むPOSTリクエストを送信する方法は? Apr 01, 2025 pm 03:12 PM

PHP開発でPHPのCurlライブラリを使用してJSONデータを送信すると、外部APIと対話する必要があることがよくあります。一般的な方法の1つは、Curlライブラリを使用して投稿を送信することです。

See all articles