2016-03-08 73 views
0

我寫了一個Akka應用程序,讓10個角色執行我的自定義代碼(即,逐行讀取數據,應用一些函數,並將數據寫入輸出文件)。Akka性能問題

當我在tomcat的執行代碼,當演員的數量高於4

如果我執行相同的代碼爲「AS運行Java應用程序」,然後表現還是不錯的性能下降。

當我在tomcat中運行Akka代碼時,是否有任何配置丟失?請幫我解決這個性能問題。我感謝您的幫助。

回答

1

要了解什麼限制了應用程序的性能,可以嘗試使用一些分析器,例如visual vm。你可以看一下線程面板,看看由演員和利用線程的tomcat出生什麼的線程,什麼是熱碼線/方法/線。這應該給你的應用程序的線程使用的一些想法和薄弱的地方。你也應該知道你的代碼的「邊界」類型 - 很可能它是cpu或io綁定的。

根據之前獲得的知識,你應該能夠使代碼的一些優化。

可能的方向是:

  • IO相關的優化(線程用法,bufferring)。我建議你看看與像CSV文件中的數據流數據的工作akka-streams方式。那裏有一個特別的章節documentation
  • 算法優化您的功能。
  • 調整akka演員的資源使用情況。您可能想知道與akka演員合作的時間是調度員設置。基本上,調度員管理線程池並將參與者綁定到它。你可以閱讀documentation