1

我想知道我的 CORBA 服务器可以同时处理多少个客户端请求

  1. 服务器是否为每个新的客户端请求创建一个新线程?
  2. 有线程池吗?
  3. 默认线程池大小是多少?
  4. 如果我们达到最大尺寸会发生什么?新线程是否在队列中等待?
  5. 池中非活动线程(已用于客户端的线程)的空闲时间是多少?
  6. 我们可以配置这些参数(池大小和空闲时间)吗?

我做了很多研究,但我没有为 Sun/Oracle 官方 CORBA 实现 (JDK) 找到这些问题的真正答案。在 Oracle 文档(链接)中,我们可以看到: -Djava.naming.factory.initial=com.sun.appserv.naming.S1ASCtxFactory -Dcom.sun.appserv.iiop.orbconnections=value

=> 我不确定这个参数到底是什么,而且这个参数可能不兼容所有的JVM,它的默认值为“one”。

我知道对于 RMI,有一个“ sun.rmi.transport.tcp.maxConnectionThreads ”参数用于更改默认线程池大小(这已经是“无限制的”)。非活动线程空闲时间为 1 分钟... RMI 受 CORBA 启发,所以 Sun/Oracle 可能为它们设置了相同的参数?

谢谢

4

1 回答 1

0
  1. 服务器是否为每个新的客户端请求创建一个新线程?

Sun CORBA 实现有线程池。

  1. 有线程池吗?

是的。Sun CORBA 实现有线程池。

  1. 默认线程池大小是多少?

你不需要担心这个。

  1. 如果我们达到最大尺寸会发生什么?新线程是否在队列中等待?

我使用 JacORB,它们的默认大小是 100,在以前的版本(JacORB 2.2.2)中,客户端在服务器达到这个大小时一直被杀死。

  1. 池中非活动线程(已用于客户端的线程)的空闲时间是多少?

不知道。我认为实现使用线程池。

  1. 我们可以配置这些参数(池大小和空闲时间)吗?

不知道。我想你不应该担心它。

** 我认为 JacORB 比 SUN 的实现要好。它有 CORBA 2.3。

** 警告:您需要担心本地 ThreadLocal。因为当客户端的请求结束时,Thread 又回到了 Thread Pool,所以可以在新的请求 ThreadLocal 中获取一些数据。

于 2014-10-27T16:28:17.397 回答