一个应用程序占用的所有web容器,依赖于第二个应用程序



我们的WebSphere应用服务器上有一个应用程序,它调用部署在同一应用服务器上的第二个应用程序的web服务。

有100个可用的web容器(线程)。

当有很多活动用户时,应用程序1分配所有可用的web容器线程。当应用程序1试图调用web服务(应用程序2)时,没有空闲的线程,因此应用程序1永远不会完成,因此整个系统挂起。

我该如何解决这个问题?例如,是否有可能限制每个应用程序的web容器线程数?例如,我只允许应用程序1使用50%的可用线程。

一个解决方案是在应用程序1中添加一些代码来监视同时处理的请求计数。但如果可能的话,我会尽量避免,因为我认为这很容易出错。前面,我们使用了synchronized关键字。但这一次只允许一个请求,这会导致更大的问题。

可以通过定义单独的传输链和线程池来实现。

我之前没有web控制台,所以步骤大致顺序:

  • 为你的soap服务创建单独的线程池
  • 在新端口上创建单独的web传输链,例如9045
  • 将线程池与传输链关联
  • 创建新的虚拟主机,主机别名*:9045
  • soap服务应用映射到该端口

如果您将通过9045端口访问应用程序将使用自己的单独的线程池。

问题:

  • 如果它只是本地访问(从一个应用程序到另一个应用程序),那么你只需通过localhost:9045访问它,你就可以了
  • 如果你的soap服务也需要从外部访问,例如通过默认https端口(443)的插件,你需要为它创建不同的DNS主机名,这样它就可以与你的soap服务应用程序相关联。Soap-service.domain.com(然后在主机别名中使用该域而不是*)。在这种情况下,插件也应该使用9045端口进行传输,但我手头没有环境来验证。

我希望我没有把它弄得太复杂。: -)

相关内容

  • 没有找到相关文章

最新更新