2016-02-28 55 views
0
Mac OS X: Yosemite 10.10.5 

長5倍直到最近我一直在使用:Glassfish的/似鯖水狼牙魚:爲什麼會大量Web應用程序部署到GlassFish-4.1.1(或似鯖水狼牙魚服務器4.1.1.163)採取比Glassfish的4.1

NetBeans8.1beta 
Glassfish4.1 
Mojarra 2.2.7 

使用我最近調查:

NetBeans8.1 
Glassfish4.1.1 
Mojarra 2.2.12. 

具有非常大的JSF Web應用程序(與ObjectDB爲JPA持久性提供者)我遇到大規模再部署時間,從而Glassfish4.1.1(超過10分鐘)比到Glassfish 4.1(約2分鐘)。這大約慢了5倍。

[編輯:2016年9月13日試圖與似鯖水狼牙魚163全(似鯖水狼牙魚服務器4.1.1.163),它用了20分鐘,比Glassfish4.1.1更慢,用幾乎相同的設置]

我不可能在這裏複製或提供大型網絡應用程序的例子。

Q1:有沒有人經歷與GlassFish 4.1和Glassfish-4.1.1 之間的相似,區別[編輯:或似鯖水狼牙魚服務器4.1.1.163],並在那裏我我可能尋找差異點?

(我已經嘗試使用NetBeans Profiler來研究它,但它不轉向了這麼容易還沒有找到原因。)


[編輯:2016-09 -15時間測試]

我已經使用屏幕錄像記錄進行了仔細的並排比較,並與日誌中的時間進行比較。

在Payara41(4.1.1.163)和Glassfish4.1.1中,如下圖所示,約10分鐘時「卡住」,而且我還沒有找到任何日誌設置,在這裏出現問題的單行輸出,以及在DEBUG模式下運行服務器似乎也沒有提供任何其他信息。

[2016-09-14T23:02:53.450+1000] [Payara 4.1] [INFO] [NCLS-LOGGING-00009] [javax.enterprise.logging] [tid: _ThreadID=19 _ThreadName=RunLevelControllerThread-1473858173343] [timeMillis: 1473858173450] [levelValue: 800] [[ 
    Running Payara Version: Payara Server 4.1.1.163 #badassfish (build 215)]] 

...貫穿所有步驟,然後通過這些幾十個EJB JNDI名稱聲明OK:

[2016-09-14T23:03:48.823+1000] [Payara 4.1] [INFO] [AS-EJB-00054] [javax.enterprise.ejb.container] [tid: _ThreadID=74 _ThreadName=admin-thread-pool(2)] [timeMillis: 1473858228823] [levelValue: 800] [[ 
    Portable JNDI names for EJB BeanName: [java:global/app-name/BeanName!com.example.BeanName, java:global/app-name/BeanName]]] 

給出了這樣的WELD版本信息:

[2016-09-14T23:03:48.875+1000] [Payara 4.1] [INFO] [] [org.jboss.weld.Version] [tid: _ThreadID=74 _ThreadName=admin-thread-pool(2)] [timeMillis: 1473858228875] [levelValue: 800] [[ 
    WELD-000900: 2.3.5 (Final)]] 

...然後大約需要8秒的時間才能發送此消息。

[2016-09-14T23:03:56.666+1000] [Payara 4.1] [INFO] [] [org.jboss.weld.Event] [tid: _ThreadID=74 _ThreadName=admin-thread-pool(2)] [timeMillis: 1473858236666] [levelValue: 800] [[ 
WELD-000411: Observer method [BackedAnnotatedMethod] private org.glassfish.jersey.ext.cdi1x.internal.CdiComponentProvider.processAnnotatedType(@Observes ProcessAnnotatedType) receives events for all annotated types. Consider restricting events using @WithAnnotations or a generic type with bounds.]] 

...然後取多分鐘(一般約10分鐘)恢復這些原本無害的警告之前..

[2016-09-14T23:11:33.387+1000] [Payara 4.1] [INFO] [] [org.jboss.weld.Bootstrap] [tid: _ThreadID=74 _ThreadName=admin-thread-pool(2)] [timeMillis: 1473858693387] [levelValue: 800] [[ 
WELD-001125: Illegal bean type java.util.Comparator<javax.persistence.metamodel.EntityType<?>> ignored on [EnhancedAnnotatedTypeImpl] public static class com.example.ElementManager$EntityTypeSorter]] 

[2016-09-14T23:11:59.736+1000] [Payara 4.1] [WARNING] [] [org.glassfish.jersey.internal.Errors] [tid: _ThreadID=74 _ThreadName=admin-thread-pool(2)] [timeMillis: 1473858719736] [levelValue: 900] [[ 
The following warnings have been detected: WARNING: Parameter 1 of type T from public void com.example.NumberProperty.setDefaultValue(T) is not resolvable to a concrete type. 

]

類似的警告消息在Glassfish4.1日誌發生,但沒有很長的停頓/持久性。

Q2:我還能做些什麼來發現它爲什麼在那裏暫停/拖延了很久?

+0

嘗試設置服務器的日誌記錄以先調試並檢查/比較時間 – Kukeltje

+0

我在您的問題中沒有看到任何與'logging/timing'信息相關的JSF。 – Kukeltje

+0

@Kukeltje在最近的時間診斷(現在包含在問題中)顯示它被「卡住」或「拖延」的時候,JSF確實可能不相關,我將刪除JSF標籤。 –

回答

1

感謝詳細的幫助from the Payara team我有一個答案。

我的舊Glassfish4.1安裝(-Xmx2048m)和新的Glassfish4.1.1和Payara41安裝(-Xmx512m)的最大堆設置不同。在啓動時構建我的Web應用程序項目的數據庫模型時,它達到了512m堆限制並導致了過多的垃圾收集(由JVisualVM顯示),這大大減慢了部署速度。

我已經有了這些作爲運行時間VMargs爲NetBeans的Web應用程序項目:

​​

但在安裝NetBeans8.1(與Glassfish4.1.1),然後Payara41,我忘了把也匹配這在新服務器上騰出空間。隨着最大堆數的增加和固定最小值,Glassfish4.1.1和Payara41上的部署時間現在約爲2分鐘。

相關問題