我們正在Elastic Beanstalk上運行一個servlet,我們連接到ElastiCache並運行得相當好,但現在我們在高峯期獲得高CPU負載(50%)並正在優化它。Jedis - 高性能servlet - 設置
在我們使用Jedis這樣的時刻:
try (Jedis jedis = new Jedis(Global.CLUSTER_ENDPOINT, 6379, 10000);) {
jedis.hset(f.dayOfFile, "content", f.xmlFile);
}
的一個問題,我們已經是活動連接的數量一下子漲到了8400,而不是下降。似乎沒有影響任何東西,但仍然想知道它是如何變得如此之高,如果這影響了性能。
所以我的問題是:
- 我們應該使用像生菜另一個庫(https://github.com/mp911de/lettuce)這似乎更好地維持?
- 或者我們應該使用連接池?我們每天有數以百萬計的請求,所以如果在池中引入其他問題(如連接最大連接數),有點害怕切換到連接池?
- 還有什麼我們應該調整?
而不是害怕它,你可以嘗試#2 [在一些測試environemnt]。對於我來說,有一個不受限制的(非連接的)連接數似乎是一個壞主意。或者,你是否也有一定數量的新線程()? – zapl
@zapl難以模擬300萬用戶,以確保它在高峯期不會失敗。但如果這是建議的方式,我會改變它,看看一些規模測試解決方案,以確保它按預期工作。 –
是的,這很困難。但是如果你不想長時間停留在大量沒有人想再次觸摸的代碼上,那麼就必須事先驗證變更的方法(以及緊急回退的方式)。不幸的是,據我所知,Beanstalk沒有像http://www.programmableweb.com/news/google-app-engine-now-supports-ab-testing/2012/02/29等版本的A/B測試功能,但您應該能夠在負載平衡器級別做類似的事情。還有幾個負載測試服務和框架。 – zapl