我按照Dynamic DataSource Routing这篇文章使用了多租户架构,但是动态地创建新的租户(数据源)(在用户注册时)。
一切运行正常,但我担心的是可伸缩性。该应用程序的阅读量很大,今天我们有10个租户,但我们将向公众开放该应用程序,这个数字将会增加很多。
每个用户数据源都是使用以下代码创建的:
BasicDataSource ds = new org.apache.commons.dbcp.BasicDataSource();
ds.setDriverClassName(Driver.class.getName());
ds.setUsername(dsUser);
ds.setPassword(dsPassword);
ds.setPoolPreparedStatements(true);
ds.setMaxActive(5);
ds.setMaxIdle(2);
ds.setValidationQuery("SELECT 1+1");
ds.setTestOnBorrow(true);这意味着它将为每个用户创建至少2个最多5个连接。
MySQL服务器(4个CPU,2.3 this /8 8GB/80 8GB固态硬盘)能支持多少连接和模式?如何通过更改数据源参数或mysql配置来改善?
我知道这个答案取决于很多额外的信息,只需在评论中询问。
发布于 2013-12-07 03:44:22
在大多数情况下,每秒不会有超过300个连接。也就是说,如果您添加了像memcached这样的好的缓存机制。如果你有超过1000个连接/秒,你应该考虑持久连接和连接池。
https://stackoverflow.com/questions/20432120
复制相似问题