首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我得到冰::内存限制异常,即使使用Ice.MessageSizeMax=2000000

为什么我得到冰::内存限制异常,即使使用Ice.MessageSizeMax=2000000
EN

Stack Overflow用户
提问于 2011-12-09 00:41:24
回答 2查看 958关注 0票数 2

您好,我已经使用Zeroc Ice通信库(v3.4.2)编写了一个C#客户端/服务器应用程序。

我正在从服务器传输一个对象序列,然后在客户端以表格格式显示它们。很简单。

我定义了以下切片类型

代码语言:javascript
复制
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中有一个bug?

非常感谢任何能提供帮助的人。

EN

回答 2

Stack Overflow用户

发布于 2013-01-22 14:07:54

我认为MessageSizeMax需要在客户端和服务器端进行配置。使用最大值(3)启用跟踪,并检查消息的大小(在网络上)

票数 0
EN

Stack Overflow用户

发布于 2013-06-12 22:35:48

在服务器端打开Ice.Warn.Connections并查看日志。还要确保正确应用客户端最大消息大小。我在客户端设置了Ice.MessageSizeMax,如下所示

代码语言:javascript
复制
Ice.Properties properties = Ice.Util.createProperties();
properties.setProperty("Ice.MessageSizeMax", "2097152");//2gb in kb
Ice.InitializationData initData = new Ice.InitializationData();
initData.properties = properties;
Ice.Communicator communicator = Ice.Util.initialize(initData);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8434429

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档