zoukankan      html  css  js  c++  java
  • ADO.NET中连接池状态的跟踪

     

    因为测试的时候用的都是小数据量数据,程序运行正常,但是到了客户那里,碰到才100多条的数据,居然提示我连接超时,让我百思不得其解。一时间不知道怎么跟踪好。
    寻寻觅觅,终于找到了一个跟踪数据连接池状态的方法:
    http://www.yesky.com/SoftChannel/72342380484755456/20020930/1633376_2.shtml
    顺便在这里抄录一下:
    监视链接池化

      要监视应用程序对链接池化的应用情况,可以使用随SQL Server发行的Profiler工具,或随微软Windows 2000发行的性能监视器。

      要利用SQL Server Profiler 监视链接池化,操作如下:
    1. 单击开始,指向程序,指向Microsoft SQL Server,然后单击Profiler运行Profiler。

    2. 文件菜单中,指向新建,然后单击跟踪

    3. 提供链接内容,然后单击确定

    4. 跟踪属性对话框中,单击事件标签。

    5. 已选事件类别列表中,确保审核登录审核登出事件显示在安全审核下面。

    6. 单击运行开始跟踪。在链接建立时,将会看到审核登录事件;在链接关闭时看到审核登出事件。
      要通过性能监视器监视链接池化,操作如下:
    1. 单击开始,指向程序,指向管理工具,然后单击性能运行性能监视器。

    2. 在图表背景中右击,然后单击增加计数器。

    3. 在性能对象下拉列表框中,单击SQL Server:通用统计。

    4. 在出现的列表中,单击用户链接。

    5. 单击增加,然后单击关闭。
      注意 .NET框架的RTM版本将另外包含一组ADO .NET性能计数器(这些计数器能与性能监视器结合起来使用),这些计数器用于为SQL Server .NET数据供应器监视并积累链接池化状态。

    一跟踪,吓了一大跳,程序在显示DataGrid的时候,连接数从1猛增到100。然后保持这个连接数,然后连接超时的错误出现了。查询了一下这段代码。原来是因为在DataGrid的ItemDataBound事件中动态去读数据用来显示,读数据的时候打开的Connection没有及时关闭!!!
    得出两点教训:
    1.Connection一定要及时关闭。可以用using语法。
    2.DataGrid的ItemDataBound最好不要去动态执行Select语句,这样会影响显示的性能。最好用left outer join的方法。
  • 相关阅读:
    随笔2
    随笔
    关于updateElement接口
    随笔1
    本地访问正常,服务器访问乱码 记录
    Redis (error) NOAUTH Authentication required.解决方法
    tomcat启动很慢 停留在 At least one JAR was scanned for TLDs yet contained no TLDs.
    微信公众号消息回复
    微信公众号 报token验证失败
    idea中web.xml报错 Servlet should have a mapping
  • 原文地址:https://www.cnblogs.com/fuyingke/p/450775.html
Copyright © 2011-2022 走看看