我們的網絡應用程序處於開發模式下,並且我看到了一個模式複製。即MySQl過程運行時間隨着請求數量線性增加。程序在併發請求下需要很長時間
我們的db非常小(〜500mb)。在打開頁面時,並行調用3個過程(只讀,不寫)。在正常運行中,我發現運行過程大約需要0.5 sec
。但有趣的是,當3個用戶打開頁面時:大約需要3秒的時間來處理(即調用9個過程)。
對於5個用戶(即,15程序)11秒左右
對於10個用戶(即 30程序)約20秒
爲更多的用戶,它甚至增加至40+ 。之後,即使我嘗試連接我的數據庫從MySQL工作臺左右,它不會連接,直到我重新啓動它。程序都是隻讀的。我的電話是Spring JDBC
。我的3210:
//DBCP connection pool settings.
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close" p:initialSize="20" p:maxActive="-1" p:minIdle="5"
p:maxIdle="35" p:driverClassName="com.mysql.jdbc.Driver"
p:url="jdbc:mysql://10.0.1.100/warehouse?useUnicode=true&"
p:username="user" p:password="123" p:testOnBorrow="true"
p:validationQuery="SELECT 1" />
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource">
<ref bean="dataSource" />
</property>
</bean>
問題:它與配置MySQL有關嗎?或者我的DBCP連接池?還有什麼可以成爲行爲的原因?
這可能歸結爲MySQL。嘗試對它進行序列化訪問,通過在數據庫訪問代碼周圍實施一個「syncronized」塊,並查看它是否有所作爲。 –
它確實會(已經嘗試過)。但那又是一個瓶頸。 – Jatin
也許你正在重複使用單個連接到數據庫?這似乎是響應時間與請求數量的增長完全相同。所以吞吐量保持不變。 DB應該更平行。 – darijan