现在我正在尝试在 java 项目中使用 ICE。我想知道是否应该为服务器和客户端配置连接数。如果应该,我该如何配置计数?
问问题
804 次
1 回答
0
是的,你应该这样做。
每个通信器创建两个线程池:
客户端线程池为传出连接提供服务,主要涉及处理传出请求的回复并包括通知 AMI 回调对象。如果在双向模式下使用连接,客户端线程池也会分派传入的回调请求。服务器线程池为传入连接提供服务。它分派传入的请求,并且对于双向连接,处理对传出请求的回复。默认情况下,这两个线程池由所有通信器的对象适配器共享。如有必要,您可以将各个对象适配器配置为使用私有线程池。
线程数默认只有一个。所以你可能想放大它。
通过三种方式更改这些数字:
- 命令行参数
- 硬编码
- 配置文件
硬代码示例:
protected void initProperties(Ice.Properties iceProperties) {
iceProperties.setProperty("Ice.Override.ConnectTimeout", "70");
iceProperties.setProperty("Ice.ThreadPool.Client.Size", "100");
iceProperties.setProperty("Ice.ThreadPool.Client.SizeMax", "1000");
iceProperties.setProperty("Ice.ThreadPool.Client.StackSize", "131072");//128k
iceProperties.setProperty("Ice.ThreadPool.Server.SizeMax", "1000");
iceProperties.setProperty("Ice.ThreadPool.Server.StackSize", "131072");
iceProperties.setProperty("Ice.MessageSizeMax", "102400");
}
protected void init() {
Ice.Properties iceProperties = Ice.Util.createProperties();
initProperties(iceProperties);
Ice.InitializationData initData = new Ice.InitializationData();
initData.properties = iceProperties;
ic = Ice.Util.initialize(initData);
communicators.add(ic);
}
看到这个:
于 2012-02-22T04:01:47.013 回答