[英]What does a high self-time in “java.lang.Thread.run” in a HotSpot view signify?
[英]FacesServlet.service() method eating too much time while serving requests (high self-time)
我只是在使用基於Netbeans的Profiler的JSF項目中嘗試一些分析實驗。 但是我發現了一個非常令人驚訝的結果。 我發現JSF的FacesServlet.service()
方法在提供請求時大部分時間都在使用。 我確實將數據庫中的內容提供給我的JSF頁面,但我仍然發現主要的時間延遲是由於service()
方法的自我時間很長。
以下是分析結果的快照: -
為什么會發生這種情況,在這種方法中發生的如此昂貴的事情導致如此高的自我時間?
我在Tomcat 7.0.42上以生產模式運行Myfaces 2.1.12。
正如@mkienenb在下面的回答中正確指出的那樣,在上面的分析測試中我排除了org.apache.myfaces
方法,所以我做了一個新的分析測試,我在新的結果快照下面發布。
但是你仍然可以看到由於Myfaces / JSF方法的自身時間導致大量的時間開銷。
我不是分析專家,但我很確定“自我時間”包括所有未在其他地方明確分析的方法。 出於某種原因,您似乎沒有單獨分析“org.apache.myfaces”方法,而只是javax.faces方法。
因此,這將使所有JSF執行時間顯示在javax.faces.webapp.FacesServlet.services()下。
您需要調整包裹排除選項。 我不使用NetBeans,所以我不能具體告訴你這是怎么做的。
嗯,FacesServlet.service()的參數是什么? 那是servlet請求和servlet響應嗎? 似乎是來自您的瀏覽器的典型請求以及來自您的應用/服務器的響應。
很明顯,您的依賴項的代碼和/或使用是FacesServlet.service()完成所花費時間的原因。 哇,似乎你使用prettyfaces依賴是導致FacesServlet.service()完成所需的大部分時間。
2013年9月7日星期六凌晨2點24分,Anton Gavazuk寫道:
處理傳入請求,並通過執行請求處理生命周期來創建相應的響應。
如果此方法的請求和響應參數分別不是HttpServletRequest和HttpServletResponse的實例,則調用此方法的結果是未定義的。
此方法必須通過在響應參數上調用sendError方法(強制轉換為HttpServletResponse)來響應以下字符串開頭的請求,並將代碼HttpServletResponse.SC_NOT_FOUND作為參數傳遞。
所以這個方法實際上包含了所有底層處理:jsf動作,業務服務,與db的交互 - 因此它的時間總是最大的
在回應OP並展示Anton(來自myfaces列表)上面所述的內容時,
(1)在開始此請求之前,我的瀏覽器顯示“會話超時”頁面,因此我單擊“確定”,向服務器發出一個簡單請求以響應登錄頁面。 下面的屏幕截圖將向您顯示,這樣一個簡單的請求,響應時間如此之快,以至於找不到FacesServlet.service()。
(2)在我的瀏覽器中呈現登錄頁面后,我單擊了“登錄”按鈕,我的應用程序執行了多項操作(檢查數據庫是否有用戶ID,驗證存儲在數據庫中的密碼,然后導航到並呈現進行數據庫檢索的頁面,這可能需要幾秒鍾,具體取決於當前日期完成的用戶操作數量(它是用戶審計跟蹤數據/頁面),當然,在完成所有這些后,頁面將在瀏覽器中呈現。對於FacesServlet.service()幾次,直到找不到更多的事件。在下面的屏幕截圖中,您將看到FacesServlet.service()'time'是由完成其他/底層/調用的操作/進程所花費的時間引起的。
(3)在Audit Trail頁面上,我點擊了一個選項,它將調用一個AJAX請求/響應,它將進行數據庫檢索,這可能需要比上面#2中的數據庫檢索更長的時間,然后AJAX響應將是在瀏覽器中呈現。 下面的屏幕截圖將再次顯示FacesServlet.service()'time'是由完成其他/底層/調用的操作/進程所花費的時間引起的。
(4)接下來/最后,我決定單擊菜單欄選項,該選項執行數據庫檢索以根據當前日期在數據庫中顯示數據,並導航到和/或在瀏覽器中呈現不同的頁面。 下面的屏幕截圖將再次顯示FacesServlet.service()'time'是由完成其他/底層/調用的操作/進程所花費的時間引起的。
我在Tomcat 7.0.42上以生產模式運行Myfaces 2.1.12。
我也是......通過TomEE + 1.6.0'快照'(2013年9月 - 06版本/版本)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.