我有需求的知識基礎分區在每個用戶的基礎上。所有的會話都需要在內存中。在第一階段,我已經測試了2000會話,考慮到每個會話中的5條規則,它佔用了將近750MB的堆內存。有人可以告訴我如何確定每個會話的大小和減少內存消耗,因爲我需要將應用程序擴展到10000個用戶內存採取由drools Knowkedge會話
0
A
回答
1
您只需要運行具有不同併發會話數的應用程序,繪製會話圖與堆大小和外推。沒有特別的醬,我可以想到特別與Drools有關。
這個關鍵是每個會話中的事實數量和規則中的連接數量。你應該閱讀說明書上的「跨產品」這一節中,這也解釋瞭如何減少加入:
http://docs.jboss.org/drools/release/5.5.0.Final/drools-expert-docs/html_single/#d0e941
此外,兩個問題,你應該考慮:
- 是否有其中的方法你可以重構使用無狀態會話?
- 有沒有一種方法可以讓一個會話滿足所有用戶的需求?
除非您在每個用戶會話開始時插入大量事實,或者您的應用程序正在使用Fusion進行某種流式事件處理,那麼您應該可以切換到無狀態會話,而不會有任何嚴重性能影響。
0
它不顯示內存使用情況,但這可以幫助您瞭解當前運行時的所有規則和事實。
知道規則:
ksession2.getKnowledgeBase().getKnowledgePackages().each {
it.rules.each { log.debug "- rules are:"+it.name }
}
的事實:
for (Object fact : ksession2.getObjects()) {
sb2z.append (" Fact: " + fact.class.name);
}
我用上面的腳本的方式來獲得運行時對象的信息,並使用一些JVM可視知道它們的大小。
相關問題
- 1. JSP會話內存?
- 2. Drools 5.1內存問題
- 3. 無法發佈Drools知識會話
- 4. 應堅持Drools的知識會話
- 5. C#不能採取新的內存
- 6. 會話管理和內存
- 7. Drools基於定時器的規則會話總是駐留在內存中並導致內存泄漏
- 8. Drools從會話中獲取同一類型的對象
- 9. 取下Drools的會話對象,並在春季
- 10. 由R會話分配的清除內存(gc()不幫助!)
- 11. 在會話[「B」]存儲陣列由陣列中的會話[「A」]
- 12. 如何採取由空間
- 13. PHP:會話內的會話?
- 14. 由用戶會話
- 15. 如何讓libcurl從會話的內存中讀取cookie?
- 16. 會話上的內存錯誤get_decoded()
- 17. R Shiny App用戶會話內存
- 18. 莫哈拉高會話內存使用
- 19. IIS內存泄漏 - 會話大小
- 20. Azure內存中會話狀態?
- 21. 內存會話複製中的Tomcat
- 22. AJAX4JSF/AjaxStateHolder |會話內存泄漏
- 23. 日誌會話佔用太多內存
- 24. 會話和內存中的對象
- 25. urllib.parse.quote不會採取utf8
- 26. 無法從會話存儲中獲取會話
- 27. VisualVM無法採樣內存
- 28. 我的列表將不會採取電話中的css
- 29. 是否會由於內存泄漏而導致內存不足?
- 30. 導軌不採摘會話數據