WebSphere Portlet效能優化

jieforest發表於2009-05-26

WebSphere Portlet效能優化

本文討論了從快取、資料集大小、建立器(builder)呼叫、會話大小、profiling等技術探討了提高Portlet應用的速度、效率和架構的方法。

一、什麼是WPF?
先說一個概念。WPF全稱為WebShpere Portlet Factory,即WebSphere Portlet工廠。

二、快取
可以使用快取控制建立器(Cache Control Builder)在WPF快取指定動作的輸出。如果有多個使用者執行同樣的操作產生同樣的結果,那麼建立器就派上大用場了。如果每個使用者返回的結果不同,伺服器就得為每個使用者執行相應的動作。
如果結果隨著時間推移而改變,且適用於所有使用者,那麼還是應該考慮使用快取控制建立器。在這種情況下,你需要設定建立器的重新整理時間間隔(秒),使得建立器滿足更新需求。在需要精確結果的情況下,即不能接受微小錯誤資料的情況,不應該使用快取控制建立器。 
其它的幾個WPF建立器也內建了快取功能。例如,服務提供建立器(Service Operation Builder)就有所謂的結果快取(Result Caching),與快取控制建立器相似,它快取操作的結果。的快取結果的操作(這實際上也同樣的事情作為快取控制建設者指向服務業務呼叫) 。同樣,查詢表建立器(Lookup Table Builder)有一個重新整理間隔(秒)輸入,可配置什麼時間開始更新查詢表的內容。
可使用log4j.logger.bowstreet.system.server.logging.serverStats屬性來分析應用程式的快取使用情況。預設情況下,屬性輸出寫入到日誌目錄的serverStats.txt檔案。

三、資料集大小
檢索大量的資料集可能比較緩慢,而且它跟記憶體大小密切相關,特別是資料沒有快取且併發請求很多。當然,如果資料檢索的效能存在問題,可以在資料檢索方法使用快取控制建立器,還有一些其他的方法也能改進資料檢索的效能。例如,可以通過減少返回資料集的尺寸來提高資料檢索的效能。換言之,應該設計適合的介面,以限制返回的資料,而不是讓使用者來篩選不想要的資料。 
如果這樣做了仍然存在系統效能問題,就應該考慮使用資料分頁了。使用資料分頁,每次只取回一小塊資料,可大大加快應用程式。

四、建立器呼叫
一般情況而言,模型中的建立器越多,系統資源則越緊張。一些大型模型(可能包含50以上的建立器)肯定能降低應用程式的速度,並使得它們難以維護。為防止發生這種情況,可以考慮儘可能分隔建立器到不同的模型下,並使用後端程式來代替建立器的功能。比如說,最好是執行後端的Java方法來持久化更改的新記錄,而不是直接從前端執行WPF的方法來實現。

五、會話的大小
使用者會話的大小可造成效能不佳,需要做一些事情,以防止會話尺寸失控。
首先是減少使用對每個使用者儲存大量不同值的變數。如果變數實際上是指常數,可標記變數為“共享且只讀”,以防止每個使用者擁有自己的變數副本。 
另外,考慮標記變數的請求範圍,而不是會議的範圍,以防止變數儲存到會話中。如果變數的資料不需要跨越多個請求,那麼這非常有用。但是,如果對於所有使用者,變數資料均相同,那麼你應該使用“共享只讀”選項。最顯著的例子是使用XML變數。請注意,如果XML難以被建立器硬編碼,那麼不應該對用於多個請求的XML變數使用請求範圍,因為這可能導致XML資料建立多個副本。如果XML沒有被建立器硬編碼,且每個請求均動態地檢索資料和拋棄資料,那麼使用請求範圍就很有效了。
在設計WPF應用程式,減少會話的大小時,還應該考慮profiling。如果設定的使用者變數基於profiles,那麼可以在給定的profile下給所有使用者共享變數。

六、會話跟蹤
如果你關心會話的大小,可以使用會話跟蹤來檢視實際的會話有多大。通過開啟檔案bowstreet.orioertues檔案,並修改bowstreet.diagnostic.trace.enabled屬性為True。然後把註釋符去掉,並設定bowstreet.diagnostic.trace.sessionSize.interval屬性為1。這使得會話資訊可以記錄到sessionsize.csv檔案中,記錄時間間隔為1秒,且每個請求都會記錄日誌資訊。
會話跟蹤需要注意幾件事:
(1)長期執行會話跟蹤對系統效能有影響。
尤其是sessionSize.interval設定為1秒時,會話日誌資訊非常多,影響效能。
要關閉會話跟蹤,可以設定bowstreet.diagnostic.trace.enabled屬性為false,並重啟應用伺服器。
(2)在執行會話跟蹤時為確保準確度量,最好採用單使用者訪問受跟蹤的應用。
在執行會話跟蹤後,可以檢查sessionsize.csv檔案的內容。

七、Profiling
Profiling機制建立了單獨的Web應用,該Web應用基於你設定的profiles的值。可以把profiles理解成一種定製、一種針對目標的配置,或者說類似於資料庫表的檢視。因為大家都知道,資料庫表檢視是虛表,它基於物理儲存的資料庫表,並根據目標的需要生成了一種表檢視。
總之,應該避免為每個不同的使用者設定建立單獨的Web應用,因為它對資源的消耗很大。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/301743/viewspace-604165/,如需轉載,請註明出處,否則將追究法律責任。

相關文章