Наше веб-приложение находится в режиме разработки, и я видел репликацию шаблона. т. е. сроки выполнения MySQl линейно увеличиваются с количеством запросов.Процедура занимает много времени при одновременных запросах
Наш db довольно маленький (~ 500mb). При открытии страницы три процедуры вызываются параллельно (только чтение, без записи). При обычном прогоне я заметил, что для выполнения процедуры требуется около 0.5 sec
. Но интересно наблюдать, что, когда 3 пользователя открывают страницу: для обработки занимает около 3 секунд (т. Е. Вызывается 9 процедур).
Для 5 пользователей (т.е. 15 процедур) около 11 секунд
За 10 пользователей (т.е. 30 процедур) около 20 секунд
И для большего числа пользователей, даже возрастает до 40+ , После чего, даже если я попытаюсь подключить свою базу данных из workbench 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? Что еще может быть причиной такого поведения?
Возможно, это зависит от MySQL. Попробуйте выполнить сериализацию доступа к нему, запустив блок «syncronized» вокруг кода доступа db и посмотрите, не изменилось ли это. –
Это действительно (попробовал уже). Но тогда это снова является узким местом. – Jatin
Возможно, вы повторно используете одно соединение с БД? Похоже, что время ответа умножается точно так же, как растет число запросов. Таким образом, пропускная способность остается прежней. Предполагается, что DB будет более параллельной. – darijan