【问题标题】:Procedure takes long time under concurrent requests在并发请求下过程需要很长时间
【发布时间】:2013-07-01 09:27:07
【问题描述】:

我们的 Web 应用程序处于开发模式,我看到了一种模式复制。即 MySQl 程序的运行时间随着请求的数量线性增加。

我们的数据库非常小(~500mb)。打开页面时,并行调用 3 个过程(仅读取,不写入)。在正常运行中,我观察到运行过程大约需要0.5 sec。但有趣的是,当 3 个用户打开页面时:处理大约需要 3 秒(即调用 9 个过程)。

对于 5 个用户(即 15 个程序)大约需要 11 秒

对于 10 个用户(即 30个程序)约20秒

对于更多用户,它甚至增加到 40 多个。之后,即使我尝试从 mysql workbench 左右连接我的数据库,它也不会连接,直到我重新启动它。过程都是只读的。

我从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&amp;"
    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。尝试通过在 db 访问代码周围强制执行 syncronized 块来序列化对它的访问,看看它是否有所作为。
  • 确实会(已经试过了)。但这又是一个瓶颈。
  • 也许您正在重用与数据库的单一连接?这似乎响应时间随着请求数量的增长而成倍增加。所以吞吐量保持不变。 DB 应该更加并行。
  • 不。这就是为什么我使用 DBCP 连接池来管理我的连接,没有上限。
  • @Jatin synchronized 用于诊断,而不用于修复。你不是想查明问题的根源吗?

标签: java mysql


【解决方案1】:

问题:和配置 MySQL 有关系吗?

可能不会。

还是我的 DBCP 连接池?

可能不会。

这种行为还有什么原因?

这听起来像是如果数据库服务器的性能是瓶颈会出现的那种行为。这样的瓶颈可能是由于服务器受 CPU 限制或磁盘 IO 限制,或者每个查询都需要长时间独占访问同一个表或一组行等。

另一种可能性是问题是由于客户端的并发瓶颈造成的。例如,如果每个请求都执行以下操作:

  synchronized (someGlobalLock) {
     // perform queries, updates
  }

那么您正在有效地序列化这些请求的数据库操作的执行。当同时执行 N 个请求时,这将导致经过的时间线性增加。


但老实说,如果不详细查看 Java 代码、数据库架构和查询以及(可能)数据库配置,很难预测是什么原因。

【讨论】:

  • 根据synchronize 的事情,我已经很好地分析了能够说 db 是问题并且没有外部同步。我提到的时间是执行查询而不是完整请求所需的时间。
  • 虽然是的,所有程序都使用同一张表。
  • @Jatin - 我认为简单的分析不一定会告诉您是否存在并发瓶颈。无论如何,我已经给了你一些想法......这可能是任何答案都能够做到的。
猜你喜欢
  • 2018-01-15
  • 2018-11-10
  • 1970-01-01
  • 2020-10-17
  • 1970-01-01
  • 2020-03-19
  • 1970-01-01
  • 1970-01-01
  • 2016-11-07
相关资源
最近更新 更多