MySql数据库优化与多线程



我需要在Java Springboot中实现多线程。在对10000个请求进行负载测试时,我面临着与JDBC相关的问题:

  1. JDBC连接异常–这是通过使用具有以下配置值的hikariCP来解决的:

    #maximum number of milliseconds that a client will wait for a connection
    spring.datasource.hikari.connection-timeout = 5000
    #minimum number of idle connections maintained by HikariCP 
    #in a connection pool
    spring.datasource.hikari.minimum-idle= 10 
    spring.datasource.hikari.maximum-pool-size= 203
    spring.datasource.hikari.idle-timeout=5000 
    spring.datasource.hikari.max-lifetime= 1000 
    spring.datasource.hikari.auto-commit =false
    
  2. PessimiticLockException–我面临着线程数增加(超过100(和Hikari最大池设置为205的问题。

我怀疑有10000个请求。如何分析最佳性能?需要进行哪些调整?(缓冲池,超时(

我正在使用值为的threadpooltask执行器

thread.corepool.size = 50
thread.maxpool.size = 100

此外,为了提高性能,我们为同一实例运行了多个pod。我看到一个博客说,更多的数据库连接会降低性能:https://github.com/brettwooldridge/HikariCP/wiki/About-Pool-Sizing

我使用的是AWS RDS 8xlarge实例。

运行10-20个副本后,它们都会陷入困境,速度会变慢。每个副本都获得了公平的资源份额,这导致每个副本的速度都变慢了。

我主要反对基准测试,除非向服务器抛出的查询是真实的,并且以真实的速率运行。不要从10K线程开始;相反,从很少开始,然后逐渐提高,直到性能跌落悬崖这个会告诉你你能应付多少。

然后,如果有必要,您必须避免超过并发线程的数量。

也就是说,203可能会导致许多缓慢的线程。并且,";吞吐量";甚至可能遭受痛苦。也就是说,一次完成203可能比在一段时间内展开的203花费更长的时间。

最新更新