我在Ubuntu 15.04上安装了Netbeans 8.0.2,其中包含GlassFish 4.1 EE容器。
出于某种原因,在确保我的resolv.conf
和hosts
文件设置正确后,访问动态内容(例如从SQL数据库中提取数据的servlet
)非常糟糕慢。
但是,访问静态JSP页面的时间应该不到1毫秒。
在127.0.0.1上ping服务器或者localhost在0.038ms或更短时间内返回,这是预料之中的,所以我不认为解决Linux和localhost常见的DNS问题应该归咎于此。
对于踢,我从他们的网站上下载了GlassFish 4.1服务器并设置了NetBeans以在那里部署,我得到了相同的结果。此外,我还尝试手动部署我的WAR文件,这也导致动态内容/ servlet的响应时间非常慢。
我得到的是,在完全相同的设置和配置下,我在Windows上没有这个问题。
总结如下:
我确实看过,看看它是不是我的代码。不,它不是。它在Windows和Windows Server上运行得非常好。当服务器在CentOS上并指向外部时它甚至运行正常,即您将浏览到URL而不是通过本地主机。
为了澄清,即使在不访问任何外部资源的servlet上也会出现此问题,例如只添加几行HTML的servlet,或者将请求转发到静态JSP页面。
答案 0 :(得分:0)
那么,
经过一番广泛的挖掘和剖析后,我找到了解决方案:
我有一个过滤器可以对用户进行身份验证,并为每个请求设置一个更改的cookie(阻止CSRF),但是使用Java Utils SecureRandom
将一个安全的随机信息位注入MD5哈希算法以及其他一些好东西要吐出一个体面安全的一次性cookie。
显然,我的生产服务器使用的CentOS版本已经包含haveged
守护进程,它可以保持/ dev / random entropy。
问题是Linux上的SecureRandom
请求/ dev / random并阻塞。当没有足够的熵时,它可以在返回前等待25秒。
解决方案当然是:安装haveged
守护进程。问题解决了。