【问题标题】:Polling portlet issue in IBM Websphere PortalIBM Websphere Portal 中的轮询 portlet 问题
【发布时间】:2012-11-08 01:26:13
【问题描述】:

我在诊断工作中的生产问题时遇到问题。基本上,我们有一个在 IBM Websphere Portal(版本 5 或 6)上运行的 Intranet Portal 站点。因此,页面几乎是建立在不同 portlet 的组合之上的,即新闻 portlet、通用链接 portlet、图形图像 portlet 等。我们还创建了一个轮询 portlet,供内部用户对特定问题进行投票。但是,当(我被告知)多个用户同时投票(或同时配置 portlet)时,这个轮询 portlet 会导致整个门户中断,这会增加运行线程的数量。我一直在尝试使用负载测试工具(例如 Fiddler)在 QA/Test 环境中复制该问题,但未能重现该问题。当他们找我寻找代码中问题的根本原因时,我得到的信息数量有限。如果无法复制问题,我就无法确保我已经解决了问题。

谁能建议我可以通过哪些其他方式来重现该问题?有没有人遇到过类似的问题?你是如何复制它的?

很抱歉,除了向您描述问题外,我无法提供太多信息。干杯

【问题讨论】:

  • 请参阅下面的答案以获得可能的解释。但是请注意,最好通过发出跟踪等来解决中断问题。我的回答可能无法描述您中断的原因,但鉴于您提供的信息,这绝对是一种可能性。
  • 感谢 Issac,非常感谢您及时回复我的问题。首先,这个问题去年发生了两次,我正在调查这个问题但没有运气。我们唯一可以确定的是,中断确实是由轮询 portlet 引起的。由于 portlet 的性质,预期大量请求可能是合理的。在这种情况下,我们如何实现 portlet 中的代码以在 WAS 服务器中处理这个问题? Portlet 已经在使用 Synchronised() 方法。
  • 在我的回答下方的评论中查看我的回复。

标签: multithreading crash websphere polling portal


【解决方案1】:

我怀疑您被告知的有关 Portal 中断的情况与 Portal Server 的 Web 线程耗尽有关。

WebSphere Portal 只是一个构建在 WebSphere Application Server 之上的应用程序。 WebSphere Application Server 提供 JavaEE 运行时本身。长话短说,WebSphere Application Server 为某些任务维护线程池

其中一个线程池是“Web Container”线程池。如果设置为X,则最多可以同时处理XWeb请求; X+1th 请求必须等待。

如果线程池已用完并且有大量请求等待线程可用,则可能会发生中断。

您应该检查 Web Container 线程池的大小并从那里获取。

【讨论】:

  • @dale:我不知道你说portlet 已经在使用synchronized 方法是什么意思。同步什么,究竟是什么?如果中断的特征确实是 Web Container 线程池受到压力,那么您无法在代码中做任何事情来对抗它。问题不在于(我想)您的代码是否执行synchronized;这是因为 WebSphere 本身的 Web Container 线程用完了,所以它不能一次处理太多的 HTTP 请求。
  • 感谢 Isaac 的澄清。关于重现问题,我不确定在使用压力测试软件时我的做法是否正确。您是否认为压力测试软件足以重现此类问题以证明找到根本原因的证据?您会推荐什么免费的许可软件来代替我已经使用的软件?
  • @dale:是的,压力测试工具会很好。尝试通过发出大量请求来最大化 WebSphere 的 Web 容器线程池,看看会发生什么。关于免费工具...抱歉,我从未使用过任何免费工具,但 Apache JMeter 应该可以解决问题。
  • 非常感谢艾萨克
猜你喜欢
  • 2012-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多