複数のプロセスで swoole を使用すると、メインプロセスのメモリが増え続けるのはなぜですか?

WBOY
リリース: 2023-03-02 06:14:01
オリジナル
1894 人が閲覧しました

現在のビジネスではデータフローのリアルタイム分析機能を実装する必要があり、これは第 2 レベルまで正確である必要があります。当初は swoole タスクを使用してタスクサービスを実装する予定でしたが、現在実行する対応するマシンがありません。サーバーが壊れたので、一時的にswooleのマルチプロセスモデルの組み合わせを使用することにしました。 swooleのタイマーの実装中に、親プロセスが発生し、メモリ使用量が急増し続けました。解決してください。コードロジックは、親プロセスに 6 つの swoole_process を作成し、swoole_timer を通じてアイドル状態の子プロセスにタスクを毎秒分散し、子プロセスがタスクを完了した後、プロセスをビジーとしてマークし、パイプを介して親プロセスと通信します。現在のプロセスがアイドル状態であることを親プロセスに通知します。プロセスが一定期間以上アイドル状態である場合、「親プロセスが子プロセスのプールを維持する」と同様の効果があります。処理タスクが一定数を超えた場合、親プロセスはプロセスに通知して、新しい子プロセスを破棄して開始することができます。コードロジックはおおよそ次のとおりですが、親プロセスのメモリ使用量が徐々に増加しているという問題が発生しました。これを swoole マスターはどのように解決できるでしょうか。親プロセスがこの同様の子プロセス プールを維持しているためでしょうか?教えてください

返信内容:

現在のビジネスではデータフローのリアルタイム分析機能を実装する必要があり、これは第 2 レベルまで正確である必要があります。当初は swoole タスクを使用してタスクサービスを実装する予定でしたが、現在実行する対応するマシンがありません。サーバーが壊れたので、一時的にswooleのマルチプロセスモデルの組み合わせを使用することにしました。 swooleのタイマーの実装中に、親プロセスが発生し、メモリ使用量が急増し続けました。解決してください。コードロジックは、親プロセスに 6 つの swoole_process を作成し、swoole_timer を通じてアイドル状態の子プロセスにタスクを毎秒分散し、子プロセスがタスクを完了した後、プロセスをビジーとしてマークし、パイプを介して親プロセスと通信します。現在のプロセスがアイドル状態であることを親プロセスに通知します。プロセスが一定期間以上アイドル状態である場合、「親プロセスが子プロセスのプールを維持する」と同様の効果があります。処理タスクが一定数を超えた場合、親プロセスはプロセスに通知して、新しい子プロセスを破棄して開始することができます。コードロジックはおおよそ次のとおりですが、親プロセスのメモリ使用量が徐々に増加しているという問題が発生しました。これを swoole マスターはどのように解決できるでしょうか。親プロセスがこの同様の子プロセス プールを維持しているためでしょうか?教えてください


親プロセスのメモリがリークしました。これは、一部のグローバル変数配列がメモリをすぐに解放しないことが原因でした。コードを確認してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート