繁体   English   中英

使用LINQ to SQL用尽数据库连接

[英]Running out of DB connections using LINQ to SQL

在开发一个相对简单的Web服务时,该服务采用了帖子提供的数据并将其记录在数据库表中,因此出现了以下错误:

捕获到异常:远程服务器返回错误:(500)Internal Server Er or。 堆栈跟踪:位于System.Net.HttpWebRequest.GetResponse()

在某些服务器上,但在其他服务器上没有。 获得此功能的是物理机,其他是虚拟机,显然物理服务器的功能要强大得多。

据我们所知,问题在于在每次查询后数据库连接都没有释放回池中。 我正在使用以下使用模式:

                using (VoteDaoDataContext dao = new VoteDaoDataContext())
                {

                    dao.insert_response_and_update_count(answerVal, swid, agent, geo, DateTime.Now, ip);
                    dao.SubmitChanges();
                    msg += "Thank you for your vote.";
                    dao.Dispose();
                }

我添加了dao.Dispose()调用以确保在方法完成时释放连接,但是我不知道是否有必要。

我是否正确使用此模式? 我还需要做其他事情来确保连接正确返回到池中吗?

谢谢!

您的诊断信息不够好。 HTTP / 500的详细信息不足以真正说明您的理论是否正确。 如果要解决此问题,您将需要在日志记录中捕获完整的堆栈跟踪。 我想您已经在这里得出结论了。 不,在using {}块结束之前,不需要Dispose()。 那就是using {} 所做的

我以为dispose()调用是多余的,但我想确定一下。

我们看到SQL日志中的连接池已饱和(我不能直接看,我只是一名开发人员,并且这些东西都在产品环境中运行),我的操作人员说他正在看到连接超时。 ..并且一旦超时,服务器将再次运行,直到下次饱和连接池为止。

目前,我们正在调整连接池设置的过程中...我想确定自己没有做错任何事情,因为这是我第一次使用Linq。

谢谢!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM