0

我们有一个应用程序,大约有60,000个客户机访问它。之前我们有一个分布式模型,但我们正在通过创建一个BO层并通过广域网接入呼叫来转向SaaS。我们使用LINQ to Entities从BO层访问数据库。我们的多租户模型是联合的,因此包含多个商店的“企业”位于不同的sql服务器上(每个服务器通常具有大约200个“企业”)。企业规模BO层到SQL Server MAX连接

每个BO服务器都是带有HT(32个逻辑)的双处理器8核。 IIS设置为拥有最多32个工作进程。

BO层工作的非常好,因为每个调用都会提取与该企业相关的连接字符串,然后与正确的数据库通信。但我遇到的问题是,我们有1/4的客户端和大约15个BO服务器,我注意到我们有3000多个打开的连接到每个数据库服务器,并且它在不断增长。

任何想法为什么它会像这样增长?我应该设置什么地方重新使用连接(连接池似乎已开启),以防止它像这样泛滥每个数据库服务器?还有其他建议吗?

回答

0

它可能是纯粹的建筑事物。

总共有多少个数据库服务器?在某些数据库服务器上,工作负载的问题很严重,而不是其他问题?

如果是这样,那么可能考虑如何将不同的企业分区到不同的数据库服务器将会有所帮助。或者在重载数据库服务器中进一步分区数据。另一个技术是垂直分区企业不同的数据库到不同垂直分区表的连接。

+0

Hi Lex,我最担心的问题是开放式连接太多,并且开始严重影响性能。这些服务器非常健壮,但是我们现在正在从所有BO服务器接近5000多个打开的数据库连接。我试图找出架构上是否有更好的方法来解决这个问题。 – Allen

+0

然后,您可以考虑使用一些缓存解决方案,无论是本地缓存还是分布式缓存网格缓存。这可以通过过滤一些经常访问的数据来减少数据库连接 –