java - 连接池中的最佳连接数

标签 java mysql performance weblogic connection-pooling

目前我们正在使用 4 cpu windows box 和 8gb RAM 和 MySQL 5.x 安装在同一个盒子上。我们正在为我们的应用程序使用 Weblogic 应用程序服务器。我们的应用程序的目标是 200 个并发用户(显然不是针对相同的模块/屏幕)。那么我们应该在连接池中配置的最佳连接数是多少(最小和最大数量)(我们使用的是 weblogic AS 的连接池机制)?

最佳答案

您真的是指 200 个并发用户还是仅仅 200 个登录用户?在大多数情况下,浏览器用户每秒不能执行超过 1 个页面请求。因此,200 个用户每秒转化为 200 个事务。对于大多数应用程序来说,这是一个相当高的数字。

无论如何,我们以每秒 200 个事务为例。假设每个前端(浏览器)tx 需要 0.5 秒才能完成,在 0.5 秒中,有 0.25 秒用于数据库。因此,您将需要 0.5 * 200,即 WebLogic thead 池中的 100 个连接,以及 DB 连接池中的 0.25 * 200 = 50 个连接。

为了安全起见,我会将最大线程池大小设置为至少比您预期的负载峰值大 25%。最小值可以是最大值的一小部分,但代价是某些用户可能需要更长的时间,因为必须创建新连接。在这种情况下,50 - 100 个连接对于一个数据库来说并不算多,所以这可能是一个很好的起始数字。

请注意,要弄清楚您的平均事务响应时间以及平均数据库查询时间,您必须进行性能测试,因为您的加载时间可能不是您看到的时间一个用户。

关于java - 连接池中的最佳连接数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1208077/

相关文章:

php - 如何将文本文件中的特定数据导入mysql?

java - 一个项目中是否可以只有 1 个 IAnnotationTransformer 实现

java - TestNG 从一个类中获取所有禁用的测试

java - 在哪里放置 PrintStream 对象来打印变量 java

mysql - Cakephp 找到连接两列

php - 通过 API 对未排序和过滤的数据库数据进行分页的最佳方法是什么?

c++ - Windows下线程创建和终止需要多长时间?

performance - 在 R 中的每个区间中找到函数最大值的最快方法

java - 是否建议在该内容的 ID(或键)中存储有关该内容的一些信息(元数据)?

java - 即使用户破坏了android中的应用程序,如何使该应用程序运行?