簡體   English   中英

如何在IIS中監視.NET MySQL數據連接器的連接池

[英]How to monitor connection pooling for .NET MySQL Data Connector in IIS

我已經用谷歌搜索了一下,但是沒有找到確切的答案。 我們在日志中看到以下錯誤:

超時時間已到。 從池中獲取連接之前已經過超時時間。 這可能是因為所有池化連接都在使用中,並且達到了最大池大小。 堆棧跟蹤:位於MySql.Data.MySqlClient.MySqlConnection.Open()處的MySql.Data.MySqlClient.MySqlPool.GetConnection()

我可以監視MySQL服務器上的客戶端連接(它們看起來很好),但是在ASP應用程序中發生了錯誤。 我的代碼中沒有什么顯而易見的,因此我想監視連接池並查看發生了什么。 我想將MySQL性能計數器添加到Windows的性能監視器中。 但是我看到的僅有的MySQL計數器是HardProcedureQueries和SoftProcedureQueries。 SQL Server和Oracle具有與連接池和其他相關項有關的負載。 在不同的論壇上有一些未回答的文章問同樣的事情。

那么,人們如何在Windows上的IIS中監視ASP .NET MySQl連接池計數器?

我們正在Windows Server 2008的IIS 7.5上使用.NET 4

我已經做了兩件事來解決這個問題。

我使用的完整代碼是:

string path = u.MapPath("~/bin/MySql.Data.dll");
Assembly ms = Assembly.LoadFrom(path);
Type type = ms.GetType("MySql.Data.MySqlClient.MySqlPoolManager");
MethodInfo mi = type.GetMethod("GetPool", BindingFlags.Static | BindingFlags.Public);

var pool = mi.Invoke(null, new object[] { new MySqlConnectionStringBuilder(ConnectionString) });
Type mip = ms.GetType("MySql.Data.MySqlClient.MySqlPool");
MemberInfo[] mei1 = mip.GetMember("inUsePool", BindingFlags.NonPublic);
totalAvailable = (int)pool.GetType().InvokeMember("available", BindingFlags.GetField | System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance, null, pool, new object[] { });
var o = pool.GetType().InvokeMember("inUsePool", BindingFlags.GetField | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance, null, pool, new object[] { });
var o1 = pool.GetType().InvokeMember("idlePool", BindingFlags.GetField | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance, null, pool, new object[] { });
inUseCount = (int)o.GetType().InvokeMember("Count", BindingFlags.GetProperty | BindingFlags.Instance | BindingFlags.Public, null, o, null);
idleCount = (int)o1.GetType().InvokeMember("Count", BindingFlags.GetProperty | BindingFlags.Instance | BindingFlags.Public, null, o1, null);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM