代码之家  ›  专栏  ›  技术社区  ›  Rakesh Malik

使用LINQ到SQL的数据库连接不足

  •  1
  • Rakesh Malik  · 技术社区  · 16 年前

    在开发一个相对简单的web服务(获取post提供的数据并将其记录在数据库表中)时,我们会得到以下错误:

    捕获到异常:远程服务器返回错误:(500)内部服务器Er 或者。 堆栈跟踪:位于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()调用以确保在方法完成时释放连接,但我不知道是否有必要。

    我用这个图案对吗?我还需要做些什么来确保连接正确地返回到池中吗?

    谢谢!

    2 回复  |  直到 16 年前
        1
  •  3
  •   Dave Markle    16 年前

    你的诊断信息不够好。HTTP/500不够详细,无法真正说明您的理论是否正确。如果要解决这个问题,需要在日志中捕获完整的堆栈跟踪。我想你已经下结论了。不,在using{}块结束之前不需要Dispose()。这就是使用{} .

        2
  •  0
  •   Rakesh Malik    16 年前

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

    我们看到连接池在SQL日志中饱和(我不能直接查看,我只是一个开发人员,这些东西在prod环境中运行),我的操作人员说他看到连接超时。。。一旦它们超时,服务器就会重新开始运行,直到下一次它使连接池饱和为止。

    我们正在进行调整连接池设置的过程。。。我想确定我没有做错什么,因为这是我第一次使用Linq。

    谢谢!