2

こんにちは、Zeroc Ice 通信ライブラリ (v3.4.2) を使用して C# クライアント/サーバー アプリケーションを作成しました。

サーバーから一連のオブジェクトを転送し、それらをクライアントに表形式で表示しています。十分に単純です。

次のスライスタイプを定義しました

enum DrawType { All, Instant, Raffle };

struct TicketSoldSummary {
  int scheduleId;
  DrawType dType;
  string drawName;
  long startDate;
  long endDate;
  string winningNumbers;
  int numTicket;
  string status;
};
sequence<TicketSoldSummary> TicketSoldSummaryList;

interface IReportManager {
  [..]
  TicketSoldSummaryList getTicketSoldSummary(long startTime, long endTime);
};

このメソッドを呼び出すと、通常は問題なく動作しますが、(約 25% の確率で) 呼び出し元が Ice::MemoryLimitException を受け取ることがあります。通常、一度に 2 ~ 3 のクライアントを実行しています。

インターネットで答えを探したところ、Ice.MessageSizeMax を増やすように言われたので、それを実行しました。MessageSizeMax を 2,000,000 Kb まで増やしましたが、違いはありませんでした。31,000 レコード (約 1.8 メガバイトのデータ) でテストを行ったところ、それでも Ice.MemoryLimitException が発生しました。1.8 メガはそれほど大きくありません。

私は何か間違ったことをしていますか、それとも Zeroc Ice にバグがありますか?

助けを提供できる人に感謝します。

4

2 に答える 2

0

MessageSizeMax は、クライアント側とサーバー側で構成する必要があると思います。また、最大値 (3) でトレースを有効にし、メッセージのサイズを (ネットワーク上で) チェックします。

于 2013-01-22T06:07:53.537 に答える