1

実稼働環境でのプロセスに問題があり、開発環境でも問題をシミュレートできます。

プロセスには 5 つのスレッドがあり、そのうちスレッド 3 と 4 が非常にアクティブです。Thread 4メッセージをキューに入れるプロデューサーであり、メッセージをデキューThread 3するコンシューマーです。どちらのスレッドも DB 集中型です。

問題

プロセスが実行中の場合、topこのプロセスと oninit(Informix) の CPU 使用率が高いことが出力に示されます。CPU 負荷が常に 4 を超えており、危険です。このマシンには、2 つの仮想 CPU を持つ 1 つの CPU しかありません。

すべての DB クエリがcommitted read分離レベルで実行されている

分析

  1. ps -eLo pid,ppid,lwp,nlwp,osz,rss,ruser,pcpu,stime,etime,args | grep <processname>

この出力は、スレッド 3 および 4 による CPU 使用率が高いことを示しています

  1. onstat -g act -r 2

この出力は、スレッド 3 と 4 のクエリが頻繁に行われることを示しています。

上記のすべての事実を考慮して、oninit とプロセスの CPU 使用量と CPU 負荷を減らす方法はありますか

4

1 に答える 1

0

一見すると、システムはうまく機能しています。データ サーバーによって適切に処理されている 2 つの DB 集中型スレッドがあります。どちらのスレッドもハングアップしていないようです。データ サーバーはワークロードに対応できます。I/O の待機や重大なページング アクティビティなどが見られない場合は、スレッド 3 と 4 のアクティビティ レベルを下げると、oninitビジー状態も低下するはずです。

DB アクティビティの量が気になる場合は、スレッドがサーバーに要求している SQL を確認する必要があります。ステートメントは準備されていますか?統計は最新ですか?クエリを簡素化できますか? クエリを組み合わせることができますか (多くの場合、単純化の反対)? スレッドが要求している 1 秒あたりのクエリ数は?

4 の CPU 負荷平均が問題であると確信していますか? 私の Mac (2.3 GHz Intel Core i7、16 GiB RAM) は、8 つの BOINC バックグラウンド プロセスと、いくつかの DBMS および Web ブラウザーなどを実行しており、負荷平均はおおよそ 4 から 10 の間で変動します。それは完全にうまく動作しています (しかし、あなたのマシンと同じではありません)。

于 2012-11-24T05:27:45.023 に答える