我目前有一個使用Tomcat部署的應用程序,它通過JDBC與Postgres數據庫交互。查詢是非常昂貴的,所以我看到的是由Tomcat或Apache導致的超時(Apache在我的配置中位於Tomcat的前面)。我試圖限制到數據庫的連接到20-30個同時連接,這樣數據庫不會被壓垮。我已經使用\ ..配置完成了這項工作,將maxActive設置爲30,將maxIdle設置爲20.我也碰到了maxWait。Tomcat - 在Http連接器中配置maxThreads和acceptCount
在這種情況下,我限制了數據庫的使用,但是我希望連接/請求在Tomcat中處於POOLED狀態。 Apache可以接受250個同時請求。所以我需要確保Tomcat也能接受這麼多,但是要適當地處理它們。
Tomcat有在HTTP連接器配置文件兩種設置:
- maxThreads - 「由HTTP連接器,其中由此確定的同時最大數來創建的請求處理線程最大數可以處理的請求。「
- acceptCount - 「當所有可能的請求處理線程正在使用時,傳入連接請求的最大隊列長度,隊列滿時收到的任何請求都將被拒絕。
所以我猜,如果我設置maxThreads到JDBC連接的最大數目(30),那麼我可以設置acceptCount以250-30 = 220。
我不太明白在JDBC連接上等待從池中打開的線程與排隊的線程之間的區別......我的想法是,排隊的線程消耗較少的週期,而等待JDBC池的正在運行的線程將花費週期檢查游泳池的免費線程......?
我試圖衡量其他人使用不同比率的線程的經驗:連接。你有你的調整生產值,你是否保持最大tomcat線程與jdbc連接的比率爲250:30,如果是這樣,你的工作是如何進行的? – ledlogic