我有一个必须处理高并发性的Web应用程序,例如100个用户查询相同的5个表(其中一个,返回超过500行)以及其他一些用户同时插入这些表.
当用户太多时,并发性太高,我的应用程序挂起,我必须重启tomcat.我在日志中找不到多少.当我执行"show process list;"时 在MySQL中,每个连接都有进程,其中大多数都处于状态"查询"...在应用程序挂起之前,一个进程一个进入"睡眠"状态,直到所有进程都具有此状态并且应用程序挂起.
诊断正在发生的事情是非常困难的...我正在尝试更好地同步代码,但没有任何成功......好吧,我在这里询问有关我是否使用了一个好的骨骼配置的意见在这种环境中:
<property name="bonecp.idleMaxAgeInMinutes">10</property>
<property name="bonecp.maxConnectionAgeInSeconds">3000</property>
<property name="bonecp.idleConnectionTestPeriodInMinutes">5</property>
<property name="bonecp.connectionTestStatement">/* ping */ SELECT 1</property>
<property name="bonecp.partitionCount">2</property>
<property name="bonecp.acquireIncrement">2</property>
<property name="bonecp.maxConnectionsPerPartition">12</property>
<property name="bonecp.minConnectionsPerPartition">5</property>
<property name="bonecp.statementsCacheSize">50</property>
<property name="bonecp.releaseHelperThreads">3</property>
Run Code Online (Sandbox Code Playgroud)
根据我的MySQL配置,我使用默认设置,除了这两个:
autocommit = 0
innodb_thread_concurrency = 8
Run Code Online (Sandbox Code Playgroud)
(服务器有3个CPU和1个磁盘)
你们劝我改变什么吗?谢谢!
作为BoneCP的作者,我建议你看一下这个池:https: //github.com/brettwooldridge/HikariCP
因为BoneCP现在既老又被HikariCP取代,它提供了卓越的性能.
| 归档时间: |
|
| 查看次数: |
1761 次 |
| 最近记录: |