2

我有一个在 Glassfish 上运行 SSL 并使用 Liferay 的门户。上次我们发送了一封电子邮件,让大约 200 人同时访问已发布的信息,我们的 Glassfish“停滞不前”。

从服务器我们可以看到系统资源没问题。- Glassfish 最多可使用 8 GB,但使用的是 5 GB - 服务器有 4 个 CPU,总体使用率约为 30% - Glassfish 配置了多达 400 个 HTTP 线程。

一旦我们检测到我们的服务器没有回答用户,我们就启动了一个分析器以了解发生了什么。

线程概述显示了太多被阻塞的线程: HTTPS 线程阻塞其他 HTTPPS 线程
在此处输入图像描述

从堆栈中看不到除了 sun、grizzly、catalina 类之外的代码: 在此处输入图像描述

我想解决这样的问题,但现在我可以判断我是否应该处理我们的代码,我们应该替换一些组件,比如禁用 SSL。

任何想法将不胜感激。

谢谢。

4

1 回答 1

1

线程转储可能比分析器更容易且侵入性更小 - 这可能会向您显示线程在实际运行的系统中被阻塞的位置。

您必须弄清楚阻塞发生在哪里:是在 Liferay 的代码中还是在您自己的代码中?你在页面上有什么,主题是如何完成的?另外,请注意,您正在运行一个非常旧版本的 Liferay - 如果您正在运行 CE,这已经停止维护好几年了(仍然支持企业版,但由于您没有提到这一点,赔率您正在运行社区版 (CE))

此外,如果您导致您所描述的情况(同时发送大量人员),您可能希望使用人工负载对系统进行负载测试,以查看其行为方式。此外,您可能希望对登录页面进行缓冲(这并不是说 200 个用户很多,但对于任何此类活动,您可能想知道您的系统可以处理它)

除非您证明相反,否则我会假设页面上有一些自定义组件(portlet 或主题)会导致瓶颈和您发现的阻塞。

于 2013-02-24T21:57:13.577 回答