私たちの Web アプリケーションは開発モードにあり、パターンの複製を見てきました。つまり、MySQl プロシージャの実行時間は、リクエスト数に比例して増加します。
私たちのデータベースはかなり小さいです (~500mb)。ページを開くと、3 つの手順が並行して呼び出されます (読み取りのみ、書き込みなし)。0.5 sec
通常の実行では、プロシージャを実行するのに約時間がかかることがわかりました。しかし興味深いことに、3 人のユーザーがページを開くと、処理に約 3 秒かかります (つまり、9 つのプロシージャが呼び出されます)。
5 ユーザー (つまり 15 手順) の場合、約 11 秒
10 人のユーザー (つまり 30 の手順) の場合、約 20 秒
さらにユーザー数が増えると、40 人以上にまで増加します。その後、mysql ワークベンチなどからデータベースに接続しようとしても、再起動するまで接続しません。手順はすべて読み取り専用です。
から呼び出していSpring JDBC
ます。私のconfig.xml
:
//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接続プール?行動の理由は他に何が考えられますか?