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