CLIとしてPHPを実行するときの高い%wa cpu負荷
-
29-09-2019 - |
質問
あいまいな質問で申し訳ありませんが、CLIとして自分自身を実行するPHPコードを書いたばかりです。それが不正行為だと確信しています。コマンドラインで「トップ」を実行すると、個々のプロセスに与えられたリソースがほとんどありませんが、IOWAIT Time(%WA)から40〜98%のリソースが表示されません。私は通常、%usと%syの間に約.7%が分布しており、残りのリソースはアイドルプロセスになります(通常は20〜50%の間)。
このサーバーは、他のサーバーが同じクエリを実行するのに300倍の時間を簡単に300倍に実行しているため、SSHを介してログオンするために永遠にログオンするように見えることさえあります。非常に悪いことが起こっていることは明らかです。どんなスクリプトが実行されていても、MySQLデータベースが更新されていますが、開始時よりも指数関数的に遅くなっているようです。
何が起こっているのかを診断するための打ち上げポイントとして役立つアイデアが必要です。
私が知りたいことがいくつかあります:
- 実際に実行されているスクリプトの数を確認する方法
- とにかく、これらのスクリプトがCPUの時間とメモリを「ぶらぶら」するだけでなく、実際にシャットダウンしていることを確認するためにありますか?
- このスクリプトのあまり多くのインスタンスを作成しないことを確認するために、どのような種類のボトルネックをチェックする必要があります。
これはおそらく大きな質問だと思いますが、提供されたリンクをフォローしてこれを読み上げてみたいと思っています。
解決
高いアイオワイトは、あなたが遅い/欠陥のあるディスクを持っていることを意味するかもしれません。スマートディスクモニターでチェックアウトしてみてください。
http://www.linuxjournal.com/magazine/monitoring-hard-disks-smart
- ps auxww | Grep ScriptName
- 同じ。
- 最初からスクリプトの複数のインスタンスを実行しているのはなぜですか?
他のヒント
高いIOWAITとは、ディスク帯域幅が飽和していることを意味します。これは、MySQLサーバーにあまりにも多くのクエリであふれているからといって、データを実行して実行しようとするディスクを最大化しているからかもしれません。
あるいは、物理的なメモリを低く走っている可能性があり、スワッピングのために大量のディスクIOを引き起こす可能性があります。
診断を開始するには、実行します vmstat 60
5分間、出力を確認します si
と so
列は、スワップインとスワップアウトを示しています bi
と bo
線は他のIOを示しています。 (質問を編集し、さらに支援を得るために出力を貼り付けます)。