簡體   English   中英

GlassFish 4.1慢速本地主機Servlet響應(NetBeans)

[英]GlassFish 4.1 Slow Localhost Servlet Response (NetBeans)

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

由於某種原因,在確保正確設置了我的resolv.confhosts文件之后,訪問動態內容(例如從SQL數據庫中提取數據的servlet訪問速度非常慢。

但是,訪問靜態JSP頁面將在不到1ms的時間內返回。

在127.0.0.1或localhost上對服務器執行ping操作將在0.038ms或更短時間內返回,這是可以預期的,因此,我不認為Linux和localhost常見的DNS解析問題應歸咎於此。

值得一提的是,我從他們的網站上下載了GlassFish 4.1服務器,並設置了NetBeans進行部署,得到了相同的結果。 另外,我還嘗試手動部署WAR文件,這也導致動態內容/ Servlet的響應時間非常慢。

我得到的是,使用完全相同的設置和配置,我在Windows上沒有此問題。

因此,總而言之:

  • 靜態內容的解析和響應時間不到1ms。
  • 通過servlet的動態內容非常慢,最多5分鍾。

我確實看了看是否是我的代碼。 不,不是。 它可以在Windows和Windows Server上完美運行。 當服務器位於CentOS上並指向外部時,它甚至可以正常運行,即您將瀏覽到URL,而不是通過本地主機。


為了澄清,即使在不訪問任何外部資源的servlet上也會發生此問題,例如僅添加幾行HTML或將請求轉發到靜態JSP頁面的servlet。

好,

經過大量的挖掘和分析,我找到了解決方案:

我有一個可以對用戶進行身份驗證的過濾器,並設置了一個針對每個請求而更改的cookie(防止CSRF),但使用了Java Utils SecureRandom將安全的隨機信息注入MD5哈希算法中,以及其他一些東西,以吐出相當安全的一次性Cookie。

顯然,我的生產服務器使用的CentOS版本已經包含了haveged守護進程,該守護進程使/ dev / random熵保持最高狀態。

問題是Linux上的SecureRandom請求/ dev / random並被阻止。 如果沒有足夠的熵,它最多可能需要等待25秒才能返回。

解決方案當然是:安裝haveged守護程序。 問題解決了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM