1

スタンドアロン ライブラリとして Siddhi CEP 3.0.2 を使用しています。連続するイベントを関連付けて変更を検出するために、以下のストリームとクエリ定義を使用した単一の実行プランがあります。カスタム関数呼び出しを呼び出しています。ストリーム定義で言及されているオブジェクト属性は、カスタム Java オブジェクトおよび java.util.Map オブジェクト タイプです。

すべてのイベントが定期的に 5 分間発生すると、CPU 使用率が 1 秒間で約 40% から 50% に達し、徐々に低下することがわかりました。しかし、この CPU 使用率は 5 分ごとに増加しています。

パターン クエリの使用方法に問題があります。これについて何か助けはありますか?

define stream portStream (source string,seq long, portInfo object); 
define stream deviceStream (source string,seq long, deviceinfo object); 

partition with (source of portstream, source of deviceStream) begin " +

@info(name = 'query1')
from (every e1= portStream->e2=portStream[e1.seq != e2.seq]) within 6 min "+ 
select e2.seq as currSeq, e1.source, 
custom:findPortStatus(e1.portInfo, e2.portInfo) as affecteddata "
insert into portStatusStream; 

@info(name = 'query2’) 
from (every e1=deviceStream-> e2=deviceStream [seq!=e1.seq]) within 6 min 
select e2.seq as curSeq, custom:findDeviceStatus(e1.deviceinfo,e2.deviceinfo) 
    as affectedDeviceInfo
insert into dStatusChangedStream; "

end;
4

1 に答える 1

0

CPU 使用率の増加が予想されます。これを例で説明しましょう。パターンがある場合every A -> B within 10 seconds、イベント A が到着するたびに別のスレッドが生成され、B イベントを 10 秒間待機します。A の到着から 10 秒以内に B イベントの到着がない場合、イベント B は破棄されます。私は研究活動で多くの実験を行い、同様の行動を見てきました。ただし、シミュレートした入力ストリームの到着間隔は一定でした。したがって、着信ストリームの分布は、新しいスレッドを作成する A イベントと、一致につながった B イベントがいつ来るかを決定する重要な要素です。

あなたの場合、多くの A イベントが 5 分目に発生し、CPU 使用率が増加した可能性があります。また、CPU 使用率を計算するためにどのような方法を使用したかを知りたいです。

于 2018-05-23T01:04:07.230 に答える