ICE 中的连接数

发布于 2025-01-06 22:45:52 字数 67 浏览 1 评论 0 原文

现在我正在尝试在java项目中使用ICE。我想知道是否应该配置服务器和客户端的连接计数。如果应该的话,我该如何配置计数?

Now I am trying to use ICE in a java project. I wonder whether I should config the connection count for both server and client. If I should, how can I config the count?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

简美 2025-01-13 22:45:52

是的,你应该这样做。

每个通信器创建两个线程池:

客户端线程池为传出连接提供服务,主要是
涉及处理对传出请求的答复,并包括
通知 AMI 回调对象。如果连接用于
双向模式,客户端线程池也会调度传入的
回调请求。服务器线程池服务传入
连接。它调度传入的请求,并且对于双向
连接,处理对传出请求的答复。默认情况下,这些
两个线程池被所有通信者的对象共享
适配器。如有必要,您可以配置单独的对象适配器
使用私有线程池代替。

线程数默认只有1个。所以你可能想放大它。

通过三种方式更改这些数字:

  1. 命令行参数
  2. 硬代码
  3. 配置文件

硬代码示例

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);
}

请参阅:

Yes, you should do this.

Each communicator creates two thread pools:

The client thread pool services outgoing connections, which primarily
involves handling the replies to outgoing requests and includes
notifying AMI callback objects. If a connection is used in
bidirectional mode, the client thread pool also dispatches incoming
callback requests. The server thread pool services incoming
connections. It dispatches incoming requests and, for bidirectional
connections, processes replies to outgoing requests. By default, these
two thread pools are shared by all of the communicator's object
adapters. If necessary, you can configure individual object adapters
to use a private thread pool instead.

The number of threads is only one by default. So you may want to enlarge it.

Change these numbers in three ways:

  1. command line arguments
  2. hard code
  3. config file

Hard Code example:

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);
}

See this:

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文