こんにちは私は、Zeroc Ice communication libary(v3.4.2)を使用してC#クライアント/サーバーアプリケーションを作成しました。Ice :: MemoryLimitExceptionをIce.MessageSizeMax = 2000000で取得する理由
私は、サーバからオブジェクトのシーケンスを転送し、それをクライアントに表形式で表示しています。十分に簡単です。
私は、呼び出し元がアイスを取得し、次のスライスタイプ
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%)に定義:: MemoryLimitException。私たちは通常、一度に2〜3人のクライアントを実行しています。
私はインターネットで回答を検索し、Ice.MessageSizeMaxを増やすように指示されました。私はMessageSizeMaxを最大2,000,000 Kbまで増やしましたが、違いはありませんでした。私はちょうど31,000レコード(約1.8 Megsのデータ)のテストを行い、Ice.MemoryLimitExceptionを取得しました。 1.8メグはあまり大きくありません!
Zeroc Iceに何か間違っている、またはバグがありますか?
何か助けてもらえますか?
この例外がスローされる状況を判断しましたか。このライブラリのソースコードを見ることができますか? –
返事をありがとう。このエラーは、データサイズがMessageSizeMaxよりも大きい場合に発生すると考えられますが、私の場合はネットワーク速度に関連しているようです。たとえばVPN経由では、時間の90%のエラーが発生しますが、LAN上ではわずか25%です。 –
設定ファイルを投稿することができれば便利です。たとえば、MessageSizeMaxはすべてのコンポーネント(サーバー、クライアント、Glacier2ルーターを使用している場合)に設定されていますか?どのコンポーネントが投げているのかを知ることは例外でもあります。 – Josh