2017-03-24 32 views
1

我們正在努力尋找XSL轉換的原因,這些轉換偶爾會在很長一段時間內偶爾執行。在Lucee中找到糟糕的XSLT性能的原因

到目前爲止,我們沒有什麼可以作爲一個真正的原因,因爲它可以在重負載下發生,但也可以在服務器基本閒置時發生。附帶的例子發生在15分鐘內有158個請求。所以,根本沒有提到的負載。

我們懷疑在轉換中使用的一些外部XML文檔,但這似乎也不是問題,因爲它們通常在毫秒內加載,有時可能是秒,但沒有任何內容可以解釋200+秒請求發生了。

當我們稍後嘗試檢查是否存在問題時,相同的轉換運行良好。

我們正在運行Fusion Reactor來監視我們的服務器,但也沒什麼不尋常的。在昨天的例子中,CPU負載並不高,也沒有其他不尋常的東西。

我附上了Fusion Reactor分析器的屏幕截圖,在這裏你可以看到所花費的時間,如果我們正確地解釋結果,它似乎總是佔用99.x%時間的「scanDocument」部分。

有什麼方法可以找出是什麼原因導致延遲?

我們目前正在運行的版本是:

Ubuntu的:14.04.5 LTS 的Java:1.8.0_45 Lucee:4.5.4.017最終

Fusion Reactor profiler

回答

2

那麼,有99.8%SocketInputStream.sockerRead0所以我會責怪一個慢速的網絡連接。

該計劃的其餘部分只是在等待字節通過速度較慢的網絡連接到達,這樣你就不會看到高CPU

+0

嗯,這聽起來像我們最初的懷疑,但我們看不到任何在那段時間緩慢的傳出請求。我們運行squid作爲代理,記錄所有非https請求,並且所涉及的轉換沒有包含任何我們看不到的https文檔。 這也可能是Lucee或Java內部的一些內部通信問題嗎? – korguell

+0

@korguell:爲什麼不運行所有需要的XML和XSLT文件的本地副本的實驗? – kjhughes

+0

@korguell緩慢是在傳入的流我懷疑,也許你可以運行wireshark或一些UL/DL速度儀工具來監視你的網絡連接? – RobAu

相關問題