-2
我使用ThreadPoolExecuter
作爲我的事務處理應用程序的隊列。以下是代碼剪斷並在PROD服務器所使用的值:ThreadPoolExecutor作爲隊列嗎?
new ThreadPoolExecutor(
corePool, maxPool,keepAlive,TimeUnit.SECONDS,new LinkedBlockingQueue<Runnable>());
- 核心池和Maxpool在性能負載服務器配置爲「50」。
- 每筆交易的交易處理時間爲300 MS。
- 當我們向該服務器發送30 tps時,CPU使用率達到了100%,服務器沒有響應。
是否有任何替代解決方案來處理70到80 TPS使用該服務器?有人能指導我處理這個問題的最佳方法嗎?
300毫秒(即0.3秒)是長時間。每個核心可以在一秒鐘內完成3次以上的交易。核心數量將決定你的吞吐量;例如4核心將支持12 tps; 8核心將支持24 tps。對於80 tps你需要27個內核。 INSTEAD,你可能想看看減少你的處理時間。你在做什麼,需要300ms?!? – robertf
您正在使用*隊列*作爲隊列。您正在使用Executor作爲執行者。 – EJP
您需要運行一個分析器來查看實際需要的時間,然後優化慢速比特。目前你正在尋找優化可能與問題無關的事情。 –