zoukankan      html  css  js  c++  java
  • 关于ODP.NET连接数监控及相应的windbg分析提示

    1、关于ODP.NET的Windows计数器问题

           使用微软的缺省驱动时,可以通过windows性能监视器很方便的监控数据库连接数,选择.NET Data Provider for Oracle/Sqlserver中的NumberOfPooledConnections即可。但是微软早就放弃了对Oracle驱动的更新,该驱动不仅在性能上比较差(读取40000 rows * 30 cols的数据,仅数据转换大约耗时25秒,而ODP.NET仅需5秒),更悲催的是System.Data.OracleClient还有不少bug….本人就在一个项目上遇到数据行翻倍的事情,更新使用ODP.NET后原来的计数器自然就不能使用了,安装Oracle客户端时选择ODP.NET组件后,Windows计数器中会出现Oracle Data Provider for .NET的选项,但选择对应的子项和实例后却看不到任何信息,原来缺省是没有启用的。可以通过修改注册表启用计数器:HKEY_LOCAL_MACHINESOFTWAREORACLEODP.NETAssembly_Version,找到PerformanceCounters,将该值改为4095即可,然后重启IIS或回收应用程序池。

    参考资料: http://blog.csdn.net/debug_fan/article/details/8973467

    另外,根据dump分析看,监视器中显示的NumberOfPooledConnections仅包含正在使用的连接,如果要看所有打开的连接应该在加上NumberOfFreeConnections计数器。

    image

    image

    2、关于ODP.NET在dump分析的查找

    使用windbg分析dump时,遇到ODP.NET在实现ADO.NET接口的内部实现特立独行的问题,按照微软缺省的方式找了半天,在此记录备忘。

    Command ---> m_connection [OracleConnection] ---> 1) m_conString [String] ; 2) m_opoConCtx [OpoConCtx] ---> pool [ConnectionPool] ---> m_connections [Collections.Stack]  ---> _s [Collections.Stack]  ---> _array (System.Object[])

    也可以通过 命令直接查找连接或连接池: 

    !dumpheap -type Oracle.DataAccess.Client.ConnectionPool

    !dumpheap -type Oracle.DataAccess.Client.OracleConnection

    另外,还有全托管驱动的问题Oracle.ManagedDataAccess.Client,该实现的命令及路径跟ODP.NET又有很大不同。

    Oracle.ManagedDataAccess.Client.OracleConnection

    具体实现是下面两个

    OracleInternal.ServiceObjects.OracleConnectionImpl

    OracleInternal.ConnectionPool.OraclePoolManager

    连接字符串也很特别,是在两处分开存储的: OracleConnection的ConnectionString  --->m_constring m_compString m_passwordlessConString 和OracleConnectionImpl 的 m_password

    image

    image

    image

  • 相关阅读:
    【秒懂音视频开发】03_重识音频
    【秒懂音视频开发】02_重识声音
    【秒懂音视频开发】01_移动通信技术的发展
    [mysql]错误解决之"Failed to start MySQL Server"
    Ubuntu 将Python从默认的2.7升级到3.* 版本
    宝塔面板后台设置免费SSL证书Let's Encrypt(三)
    Let's Encrypt 证书申请及配置(二)
    快速签发 Let's Encrypt 证书指南(一)
    DJANGO中多种重定向方法使用
    反解法|逆向思维
  • 原文地址:https://www.cnblogs.com/zhaoguan_wang/p/6433585.html
Copyright © 2011-2022 走看看