gpt4 book ai didi

mysql - 如果池大小小于并发连接数,Hibernate 池如何工作?

转载 作者:行者123 更新时间:2023-11-30 01:34:47 24 4
gpt4 key购买 nike

我使用 Hibernate 和 c3p0 作为池提供程序。我仅将其最大大小设置为 50。现在,我使用 1000 个并发线程连续访问数据库并使用 mysql max_connections 为 2000 对应用程序执行负载测试。我从应用程序中得到了正确的响应,但有时我会遇到套接字异常错误。

那么,第一件事是,如果我的池大小仅为 50,那么 hibernate 如何管理 1000 个连接?这是否意味着从池中取出 50 个连接并创建其余连接?另外,为什么我必须得到套接字异常,例如连接重置异常?

最佳答案

如果您已正确设置并且 c3p0 的 maxPoolSize 为 50,那么如果有 1000 个客户端进入池,则 50 个客户端将首先获得连接,其余的将短暂 wait() 直到第一个队列返回连接。池的工作是与应尽可能短暂地保存连接的应用程序协作,以确保有效共享有限数量的连接。

如果您偶尔看到连接重置/套接字异常,您可能应该配置一些连接测试:

http://www.mchange.com/projects/c3p0/index.html#configuring_connection_testing

最新的预发布版本有一些关于连接测试的更直接的建议;您可以下载该文件或从此处开始阅读 html 源代码:

https://github.com/swaldman/c3p0/blob/master/src/doc/index.html#L1071

关于mysql - 如果池大小小于并发连接数,Hibernate 池如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17051070/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com