ホームページ バックエンド開発 PHPチュートリアル PHP-CGI処理CPU100%とfile_get_contents関数の関係_PHPチュートリアル

PHP-CGI処理CPU100%とfile_get_contents関数の関係_PHPチュートリアル

Jul 21, 2016 pm 02:57 PM
100% cpu file get nginx php-cgi そして 関係 関数 走る プロセス

Nginx および PHP-CGI (php-fpm) Web サービスを実行している Linux サーバーでシステム負荷が突然増加することがあります。top コマンドを使用して、多くの php-cgi プロセスの CPU 使用率が 100% に近いことを確認します。その後、追跡を通じて、この種の状況の発生は PHP の file_get_contents() 関数と密接に関係していることがわかりました。

大規模および中規模の Web サイトでは、HTTP プロトコルに基づく API インターフェイス呼び出しが一般的です。 PHP プログラマーは、URL の返されたコンテンツを取得するために、シンプルで便利な file_get_contents("http://example.com/") 関数を使用することを好みますが、Web サイト http://example.com/ の応答が遅い場合は、file_get_contents(. " ) は常にそこでスタックし、タイムアウトしません。

php.ini には、PHP スクリプトの最大実行時間を設定できるパラメータ max_execution_time があることはわかっていますが、php-cgi (php-fpm) では、このパラメータは有効になりません。 PHP スクリプトの最大実行時間を実際に制御できるのは、php-fpm.conf 構成ファイル内の次のパラメーターです:
ワーカー プロセスが終了するまでの 1 つのリクエストを処理するためのタイムアウト (秒) は、次の場合に使用する必要があります。 max_execution_time' ini オプションは何らかの理由でスクリプトの実行を停止しません '0s' means 'off' 0s デフォルト値は 0 秒で、PHP スクリプトが実行を継続することを意味します。このように、すべての php-cgi プロセスが file_get_contents() 関数でスタックすると、この Nginx+PHP Web サーバーは新しい PHP リクエストを処理できなくなり、Nginx はユーザーに「502 Bad Gateway」を返します。 PHP スクリプトの最大実行時間を設定するにはこのパラメータを変更する必要がありますが、根本的な原因ではなく症状を治療するだけです。たとえば、30s に変更された場合、file_get_contents() が Web コンテンツの取得に遅い場合、これは 150 php-cgi プロセスが 1 秒あたり 5 ファイルしか処理できないことを意味します。 .リクエストの場合、Webサーバーでも「502 Bad Gateway」を回避するのは困難です。

完全な解決策を達成するには、PHP プログラマが file_get_contents("http://example.com/") を直接使用する習慣を変更できるようにするだけですが、それをわずかに変更し、タイムアウトを追加し、次のメソッドを使用して HTTP を実装します。 GET リクエスト。それが面倒な場合は、次のコードを自分で関数にカプセル化することもできます。
array( 'timeout' => 1 //タイムアウトを秒単位で設定します) ) ); file_get_contents("http://example.com/", 0, $ctx); もちろん、php -CGI が発生します。プロセス CPU 100% だけが原因ではないので、file_get_contents() 関数が原因であるかどうかを判断するにはどうすればよいでしょうか。

まず、top コマンドを使用して、CPU 使用率が高い php-cgi プロセスを表示します。

トップ - 724 日、10:34:18 アップ、21:01、3 ユーザー、負荷平均: 17.86、11.16、7.69
タスク: 合計 561、実行中 15、スリープ 546、停止 0、ゾンビ 0
CPU: 5.9%us、4.2%sy、0.0%ni、89.4%id、0.2%wa、0.0%hi、0.2%si、0.0%st
メモリ: 合計 8100996k、使用済み 4320108k、空き 3780888k、バッファー 772572k
スワップ: 819310合計8,000 、50776k 使用、8142332k 空き、412088k キャッシュ

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
10747 www 18 0 360m 22m 12m R 100.6 0.3 0:02.60 php-cgi
10709 www 16 0 359m 28m 17m R 96.8 0.4 0:11.34 php-cgi
10745 www 18 0 360m 24m 14m R 94.8 0.3 0:39.51 php-cgi
10707 www 18 0 360m 25m 14m S 77.4 0.3 0:33.48 php-cgi
10782 www 20 0 360m 26m 15m R 75.5 0.3 0:10.93 php-cgi
10708 www 25 0 360m 22m 12m R 69.7 0.3 0:45.16 php-cgi
10683 www 25 0 362m 28m 15m R 54.2 0.4 .65 php-cgi
10711 www 25 0 360m 25m 15m R 52.2 0.3 0:44.25 php-cgi
10688 www 25 0 359m 25m 15m R 38.7 0.3 0:10.44 php-cgi
10719 www 25 0 360m 26m 16m R 7.7 0.3 :40.59 php-cgi

找その中の一个CPU 100% の php-cgi 処理の PID、次のコマンドを使用して追跡します:

strace -p 10747

如果画面表示:

select(7, [6], [6], [], {15, 0 }) = 1 (出力 [6]、左 {15, 0})
poll([{fd=6, events=POLLIN}], 1, 0) = 0 (タイムアウト)
select(7, [6], [6], [], {15, 0}) = 1 (出力 [6]、左 {15, 0})
poll([{fd=6, events=POLLIN}], 1, 0) = 0 (タイムアウト)
select(7, [6], [6], [], {15, 0}) = 1 (out [6], left {15, 0})
poll([{fd=6, events= POLLIN}], 1, 0) = 0 (タイムアウト)
select(7, [6], [6], [], {15, 0}) = 1 (out [6], left {15, 0})
poll([{fd=6, events=POLLIN}], 1, 0) = 0 (タイムアウト)
select(7, [6], [6], [], {15, 0}) = 1 (アウト[6], left {15, 0})
poll([{fd=6, events=POLLIN}], 1, 0) = 0 (タイムアウト)
select(7, [6], [6], [] 、{15, 0}) = 1 (出力 [6]、左 {15, 0})
poll([{fd=6, events=POLLIN}], 1, 0) = 0 (タイムアウト)
select(7 , [6], [6], [], {15, 0}) = 1 (出力 [6]、左 {15, 0})
poll([{fd=6, events=POLLIN}], 1, 0) = 0 (タイムアウト)
select(7, [6], [6], [], {15, 0}) = 1 (out [6], left {15, 0})
poll([{fd =6, events=POLLIN}], 1, 0) = 0 (タイムアウト)
select(7, [6], [6], [], {15, 0}) = 1 (out [6], left { 15, 0})
poll([{fd=6, events=POLLIN}], 1, 0) = 0 (タイムアウト)
select(7, [6], [6], [], {15, 0} ) = 1 (出力 [6]、左 {15, 0})
poll([{fd=6, events=POLLIN}], 1, 0) = 0 (タイムアウト)

那么,就可确定是 file_get_contents( ) 結果として生じる問題は解決しました。

http://www.bkjia.com/PHPjc/363903.htmlwww.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/363903.html技術記事時々、Nginx、PHP-CGI(php-fpm) Web サービスの Linux サーバーを実行し、突然システムのダウンロードが上昇し、トップ コマンドを使用して、多くの php-cgi プロセスの CPU 使用率が 100% に近づきます。その後...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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)

144コア、3DスタックSRAM:富士通、次世代データセンタープロセッサMONAKAの詳細を発表 144コア、3DスタックSRAM:富士通、次世代データセンタープロセッサMONAKAの詳細を発表 Jul 29, 2024 am 11:40 AM

7月28日の当サイトのニュースによると、海外メディアTechRaderは、富士通が2027年に出荷予定の「FUJITSU-MONAKA」(以下、MONAKA)プロセッサを詳しく紹介したと報じた。 MONAKACPUは「クラウドネイティブ3Dメニーコア」アーキテクチャをベースとし、Arm命令セットを採用しており、AIコンピューティングに適しており、メインフレームレベルのRAS1を実現できます。富士通は、MONAKAはエネルギー効率と性能の飛躍的な向上を達成すると述べた。超低電圧(ULV)技術などの技術のおかげで、CPUは2027年には競合製品の2倍のエネルギー効率を達成でき、冷却には水冷が必要ない; さらに、プロセッサのアプリケーションパフォーマンスが相手の2倍に達することもあります。命令に関しては、MONAKAにはvectorが搭載されています。

AM4 は死ぬことを拒否、ニュースによると AMD は最大 4.8GHz のクロックで動作する Ryzen 9 5900XT/7 5800XT を発売するとのこと AM4 は死ぬことを拒否、ニュースによると AMD は最大 4.8GHz のクロックで動作する Ryzen 9 5900XT/7 5800XT を発売するとのこと Jun 05, 2024 pm 09:43 PM

6 月 1 日のこの Web サイトのニュースによると、ソースの @CodeCommando が本日ツイートし、Computex2024 イベントでの AMD の今後のプレゼンテーション資料のスクリーンショットを共有しました。ツイートの内容は「AM4 は決して死ぬことはない」であり、添付の写真には 2 つの新しいものが示されていました。 Ryzen5000XTシリーズプロセッサ。スクリーンショットによると、次の 2 つの製品が示されています。 Ryzen95900XTR Ryzen95900XT は、AMD の Ryzen95950X よりもわずかに遅いクロック速度を持つ、比較的ハイエンドに位置する新しい 16 コア AM4 プロセッサです。 Ryzen75800XT AMD の既存の Ryzen75800X プロセッサの高速バージョンです。両方のプロセッサのクロックは最大 4.8G です。

リークにより、Intel Arrow Lake-U、-H、-HX、-S の主要な仕様が明らかに リークにより、Intel Arrow Lake-U、-H、-HX、-S の主要な仕様が明らかに Jun 15, 2024 pm 09:49 PM

IntelArrowLake は、LunarLake と同じプロセッサ アーキテクチャに基づいていると予想されており、つまり、Intel の新しい Lion Cove パフォーマンス コアが経済的な Skymont 効率コアと組み合わされることになります。

Intel、LGA9324 Oak Stream-AP プラットフォームが Diamond Rapids Xeon プロセッサをサポートしていることを確認 Intel、LGA9324 Oak Stream-AP プラットフォームが Diamond Rapids Xeon プロセッサをサポートしていることを確認 Aug 22, 2024 am 11:16 AM

8月22日の当サイトのニュースによると、Xプラットフォームユーザーの포시포시さん(@harukz5719)は、Intelが公式WebサイトのDESIGN-iNTOOLSstoreにLGA9324-OKS-APプラットフォームの電源テストに適したアダプタボードを2枚掲載していることに気づいた。 ▲REDバージョンに加えてBLUバージョンのアダプターボードもインテルはこれら2製品の説明で、LGA9324-OKS-APOakStreamプラットフォームがDiamondRapidsをサポートしていると書いており、これはXeon 6以降の次世代Xeonパフォーマンスコア「GraniteRapids」の存在を明確に裏付けています。プロセッサと対応するプラットフォーム。 DiamondRapids プロセッサーと OakStream プラットフォームに関する最新情報

Excel関数の公式の完全なコレクション Excel関数の公式の完全なコレクション May 07, 2024 pm 12:04 PM

1. SUM 関数は、列またはセルのグループ内の数値を合計するために使用されます (例: =SUM(A1:J10))。 2. AVERAGE 関数は、列またはセルのグループ内の数値の平均を計算するために使用されます (例: =AVERAGE(A1:A10))。 3. COUNT 関数。列またはセルのグループ内の数値またはテキストの数をカウントするために使用されます。例: =COUNT(A1:A10)。 4. IF 関数。指定された条件に基づいて論理的な判断を行い、結果を返すために使用されます。対応する結果。

Intel 第 13 世代および第 14 世代プロセッサの安定性の問題の解決策 Intel 第 13 世代および第 14 世代プロセッサの安定性の問題の解決策 Jun 18, 2024 pm 06:01 PM

第 13 世代と第 14 世代のプロセッサでは、ゲームのクラッシュ、ブルー スクリーン、コンピューターの自動再起動などの障害が発生していましたが、以前は nvidia のグラフィック カードが原因であると考えられていましたが、最近ではインテルのプロセッサが原因であることが判明しました。マザーボードと BIOS システムのメーカーは、第 13/14 世代プロセッサの安定性の問題を非難しました。 Intel も解決策を提案しています。以下のエディターで見てみましょう。第13世代および第14世代Coreプロセッサーの電圧、周波数、消費電力、安定性に関する600および700シリーズのマザーボードのBIOSの設定オプションが誤って設定されているか、設定値が公式の範囲外である可能性があります。インテルによって許可されているため、プロセッサーの動作が不安定になるか、そのリスクが高まります (下図を参照)。

Intel CPU サイズとコアのスケジューリングの問題、12 世代を超える CPU サイズとコアの最適化設定 Intel CPU サイズとコアのスケジューリングの問題、12 世代を超える CPU サイズとコアの最適化設定 Jun 19, 2024 am 01:42 AM

Inteli5-12600 以降の CPU、i5-13400 以降の CPU には、「大きいコアと小さいコア」のスケジューリングの問題により、P コア パフォーマンス コア (大きいコア) と E コア エネルギー効率コア (小さいコア) が搭載されています。実際、システムは現在のシーンに対処するために、古い CPU をディスパッチする必要はないと考えています。古いコアが休んでいて動作していません。以下のエディターでは、この問題を解決する方法を説明します。デスクトップに新しいテキスト ドキュメントを作成し、次の内容をコピーして 1.reg として保存し、右クリックして結合します。 WindowsRegistryEditorVersion5.00[HKEY_LOCAL_MACHINE\SY]

Intel Z890マザーボードにはThunderbolt 4が標準搭載される見込みで、Arrow Lake-Sプロセッサコアディスプレイにはさまざまなサイズが含まれると報じられています。 Intel Z890マザーボードにはThunderbolt 4が標準搭載される見込みで、Arrow Lake-Sプロセッサコアディスプレイにはさまざまなサイズが含まれると報じられています。 May 07, 2024 pm 05:10 PM

5 月 7 日のこのサイトのニュースによると、ブロガーの Jinzhu Upgrade Package は最近、Intel の次世代デスクトップ プロセッサ ArrowLake-S シリーズには複数のバージョンのコア グラフィックスが含まれ、サポートする Z890 マザーボードには Thunderbolt が搭載される予定であるというニュースを伝えました。 4インターフェースを標準装備。最新のニュースによると、ArrowLake-S シリーズ CPU は GT1 仕様コア ディスプレイを使用し、最大 4 つの Xe コア (つまり 64EU) を搭載します。しかし、インテルは依然として、ローエンド製品でその中核となるディスプレイ技術を「誇示し」、Xeコアを3つ、あるいは2つしか搭載していないモデルを排除するつもりだ。現在発売されている Core Ultra5125H プロセッサには、Meteor Lake-P シリーズ製品よりも少ない 7 つの Xe コアしか搭載されていません。

See all articles