GlassFish 4.1慢速Localhost Servlet响应(NetBeans)

时间:2015-07-03 14:59:41

标签: java jsp servlets netbeans glassfish

我在Ubuntu 15.04上安装了Netbeans 8.0.2,其中包含GlassFish 4.1 EE容器。

出于某种原因,在确保我的resolv.confhosts文件设置正确后,访问动态内容(例如从SQL数据库中提取数据的servlet)非常糟糕慢。

但是,访问静态JSP页面的时间应该不到1毫秒。

在127.0.0.1上ping服务器或者localhost在0.038ms或更短时间内返回,这是预料之中的,所以我不认为解决Linux和localhost常见的DNS问题应该归咎于此。

对于踢,我从他们的网站上下载了GlassFish 4.1服务器并设置了NetBeans以在那里部署,我得到了相同的结果。此外,我还尝试手动部署我的WAR文件,这也导致动态内容/ servlet的响应时间非常慢。

我得到的是,在完全相同的设置和配置下,我在Windows上没有这个问题。

总结如下:

  • 静态内容在不到1毫秒内解析并响应。
  • 通过servlet的动态内容非常慢,最长可达5分钟。

我确实看过,看看它是不是我的代码。不,它不是。它在Windows和Windows Server上运行得非常好。当服务器在CentOS上并指向外部时它甚至运行正常,即您将浏览到URL而不是通过本地主机。

为了澄清,即使在不访问任何外部资源的servlet上也会出现此问题,例如只添加几行HTML的servlet,或者将请求转发到静态JSP页面。

1 个答案:

答案 0 :(得分:0)

那么,

经过一番广泛的挖掘和剖析后,我找到了解决方案:

我有一个过滤器可以对用户进行身份验证,并为每个请求设置一个更改的cookie(阻止CSRF),但是使用Java Utils SecureRandom将一个安全的随机信息位注入MD5哈希算法以及其他一些好东西要吐出一个体面安全的一次性cookie。

显然,我的生产服务器使用的CentOS版本已经包含haveged守护进程,它可以保持/ dev / random entropy。

问题是Linux上的SecureRandom请求/ dev / random并阻塞。当没有足够的熵时,它可以在返回前等待25秒。

解决方案当然是:安装haveged守护进程。问题解决了。