我目前正在编写多线程聊天服务,并且遇到了MySql的一些错误,我似乎找不到解决方案。
我目前正在使用“MySqlHelper”类利用MySql的连接池:
public User GetUser(string Email)
{
try
{
string Escape = MySqlHelper.EscapeString(Email);
string Query = String.Format("SELECT * FROM `users` WHERE `email` = '{0}' LIMIT 1", Escape);
using (MySqlDataReader reader = MySqlHelper.ExecuteReader(databaseLoader.connectionString.ToString(), Query))
{
if (!reader.HasRows)
{
return null;
}
while (reader.Read())
{
string messages = reader["messages"].ToString();
var OfflineMessages = new List<UserMessagePair>();
if (reader["messages"].ToString() != "")
{
foreach (var msg in ListSerializer.Deserialize(messages))
{
var pair = ListSerializer.Deserialize(msg);
OfflineMessages.Add(new UserMessagePair(int.Parse(pair[0]), pair[1]));
}
}
return new User()
{
ID = int.Parse(reader["id"].ToString()),
Email = reader["email"].ToString(),
Password = reader["password"].ToString(),
Nickname = reader["nickname"].ToString(),
Status = reader["status"].ToString(),
About = reader["about"].ToString(),
Role = (Misc.Type.RoleType) Enum.Parse(typeof (Misc.Type.RoleType),
reader["role"].ToString(),
true),
Premium = bool.Parse(reader["premium"].ToString()),
Rooms = ListSerializer.Deserialize(reader["subscriptions"].ToString()),
Device = (Misc.Type.DeviceType) Enum.Parse(typeof (Misc.Type.DeviceType),
reader["devicetype"].ToString(),
true),
lastIPAddress = reader["ipaddress"].ToString(),
uniqueID = reader["uniqueid"].ToString(),
Contacts = ListSerializer.Deserialize(reader["contacts"].ToString()),
CustomTag = reader["tag"].ToString(),
OnlineStatus = int.Parse(reader["onlinestatus"].ToString()),
Messages = int.Parse(reader["messagecount"].ToString()),
LastTime = reader["lasttime"].ToString(),
UserNotes = reader["notes"].ToString(),
OfflineMessages = OfflineMessages,
Exists = true
};
}
return null;
}
}
catch
{
return null;
}
}
实际上没有抛出正式错误 - 会发生什么事情是在一段时间内(30-40个用户连接之后)库会停止连接?我认为这是因为超出了最大池大小(我将其设置为100,000),是否有一种有效的方法来管理池化连接并确保不会发生这种情况,因为Oracle在其网站上声称({{3它会自动为你管理连接,但这似乎没有正确发生......
说实话,我不确定发生了什么事,因为没有例外被抛出,它只是,只是,不起作用。
有没有人像这样大规模地使用过连接器/网并遇到问题?因为我遇到了无数问题,似乎找不到解决这个问题的方法。
另一个问题是,除了使用连接器/网络之外还有其他选择吗?
非常感谢! (对不起,如果我含糊不清,我真的不知道这里发生了什么......)