私が見ているこれらのsleepingプロセスの原因は何topですか?PHPの関数を呼び出すとしたら、それは私が見るカウントにsleep()追加されますか?数が多いことのデメリットはありますか?sleepingtopsleeping
4 に答える
プロセスがブロックされるとスリープ状態になり、何かを待機します。たとえばread()、ネットワークストリームからデータが到着するのを呼び出して待機している可能性があります。
sleep()確かに、プロセスをしばらくスリープ状態にする1つの方法です。ただし、スリープは、コンピューティングに大きく依存するプロセスを除くすべてのプロセスの通常の状態です。スリープは、基本的に、プロセスが他に何もしていないときに実行することです。ほとんどのプロセスがスリープ状態になっているのは通常の状態です。そうでない場合は、より多くのCPU馬力が必要であることを示している傾向があります。
スリーププロセスは、中断されたプロセスのようなものです。プロセスは次の場合にスリープします。
- I / O操作を実行しています(I / Oのブロック)
- sleep()でスリープするように注文した場合
プロセスのステータスは次のとおりです。
- 準備完了:実行の準備ができており、特定の優先度でプロセッサの呼び出しを待機しているキューにある場合
- Sleeping:実行中で、I / O操作のためにブロックされたとき、またはsleep()を実行したとき
- 実行中:プロセッサがプロセスを実行すると、実行中になります。
ステータス意味
Rランナブル
T停止
PPageinを待っています
D I/Oを待機しています
S睡眠<20秒
アイドル-20秒以上の睡眠
Zゾンビまたは廃止
これらは、現在CPUで実行されていないプロセスです。これは必ずしも悪いことではありません。
スリープしているプロセスの数が膨大な場合(たとえば、サーバーシステムで10,000)、それらを追跡するために使用されるメモリの量などにより、スリープしていないプロセスのシステムの効率が低下する可能性があります。
そうでなければ、それは大丈夫です。
ほとんどの通常のサーバーシステムには、ほとんどの場合100〜1000があります。これは大したことではありません。
彼らが今何もしていないからといって、すぐにそうしないという意味ではありません。それらをメモリに保持し、準備ができていると、必要なときに遅延が減少します。
ここでもう少し詳しく説明すると、S状態はプロセスがタイマーまたは低速のデバイスでD待機していることを意味し、状態は高速のデバイスで待機していることを意味します。
高速デバイスと低速デバイスを構成するものは、それほど明確に定義されていませんが、一般に、すべてのシリアル、ネットワーク、および端末デバイスは低速デバイスであり、ディスクは高速デバイスです。