MySQL中sheep的一直在增加

枫之幻月 2018-09-06 04:16:41
/// <summary>
/// 执行SQL语句,返回影响的记录数
/// </summary>
/// <param name="SQLString">sql语句</param>
/// <param name="cmdParms">参数化内容</param>
/// <returns></returns>
public static int SQLExecuteNonQuery(string SQLString, params MySqlParameter[] cmdParms)
{
MySqlConnection connection = new MySqlConnection(OA_myconnstr);
MySqlCommand cmd = new MySqlCommand(SQLString, connection);
try
{
connection.Open();
foreach (MySqlParameter parameter in cmdParms)
{
if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) && (parameter.Value == null))
{
parameter.Value = DBNull.Value;
}
cmd.Parameters.Add(parameter);
}
int rows = cmd.ExecuteNonQuery();
return rows;
}
catch (MySqlException e)
{
throw e;
}
finally
{
connection.Close();
connection.Dispose();
cmd.Dispose();
}
}

我明明Close了连接,但还是调用一次方法就增加一条sheep的连接数
...全文
822 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
正怒月神 版主 2018-10-26
  • 打赏
  • 举报
回复
引用 12 楼 qq_23540209 的回复:
[quote=引用 10 楼 closurer 的回复:] 我想讲个笑话,我以前公司的一个网管,在网站出现性能问题的时候,指着那些 sleep 的连接对开发人员说:“你看!这么多连接!怪不得那么慢!”
如果不影响的话我也不管他啊,可现在因为连接太多程序崩了,不但我的网页,另一个使用该数据库的程序也一起崩了,只能在IIS上重启网站才能解决问题,可这治标不治本[/quote] 有程序出错日志吗。可能是异常导致的
正怒月神 版主 2018-10-26
  • 打赏
  • 举报
回复
引用 14 楼 qq_23540209 的回复:
[quote=引用 13 楼 hanjun0612 的回复:] [quote=引用 12 楼 qq_23540209 的回复:] [quote=引用 10 楼 closurer 的回复:] 我想讲个笑话,我以前公司的一个网管,在网站出现性能问题的时候,指着那些 sleep 的连接对开发人员说:“你看!这么多连接!怪不得那么慢!”
如果不影响的话我也不管他啊,可现在因为连接太多程序崩了,不但我的网页,另一个使用该数据库的程序也一起崩了,只能在IIS上重启网站才能解决问题,可这治标不治本[/quote] 有程序出错日志吗。可能是异常导致的[/quote] 有,MySql.Data.MySqlClient.MySqlException (0x80004005): Too many connections [/quote] 程序有异常日志吗? 底层数据库链接,使用的是什么方案
XBodhi. 2018-10-26
  • 打赏
  • 举报
回复
连接太多了。
枫之幻月 2018-10-26
  • 打赏
  • 举报
回复
引用 13 楼 hanjun0612 的回复:
[quote=引用 12 楼 qq_23540209 的回复:]
[quote=引用 10 楼 closurer 的回复:]
我想讲个笑话,我以前公司的一个网管,在网站出现性能问题的时候,指着那些 sleep 的连接对开发人员说:“你看!这么多连接!怪不得那么慢!”

如果不影响的话我也不管他啊,可现在因为连接太多程序崩了,不但我的网页,另一个使用该数据库的程序也一起崩了,只能在IIS上重启网站才能解决问题,可这治标不治本[/quote]
有程序出错日志吗。可能是异常导致的[/quote]
有,MySql.Data.MySqlClient.MySqlException (0x80004005): Too many connections
枫之幻月 2018-10-25
  • 打赏
  • 举报
回复
引用 10 楼 closurer 的回复:
我想讲个笑话,我以前公司的一个网管,在网站出现性能问题的时候,指着那些 sleep 的连接对开发人员说:“你看!这么多连接!怪不得那么慢!”

如果不影响的话我也不管他啊,可现在因为连接太多程序崩了,不但我的网页,另一个使用该数据库的程序也一起崩了,只能在IIS上重启网站才能解决问题,可这治标不治本
正怒月神 版主 2018-09-07
  • 打赏
  • 举报
回复
引用 7 楼 qq_23540209 的回复:
[quote=引用 6 楼 hanjun0612 的回复:]
[quote=引用 5 楼 qq_23540209 的回复:]
好吧我打错了,是sleep。。。

哦,是这样的,数据库都有连接池。
当你开启连接,操作完毕,最后close后。
这个链接会回到连接池,
这么做的目的是为了,之后的操作可以直接使用连接池内的链接,
减少了链接创建的资源消耗。所以你的链接是没有减少的。[/quote]
可是我调用一次方法就增加了一条连接,最后因为连接数太多,程序崩了[/quote]
那就奇怪了,我看你的代码,也没毛病啊。
直接改成
finally
{
connection.Close();
}
试试看呢
枫之幻月 2018-09-07
  • 打赏
  • 举报
回复
引用 6 楼 hanjun0612 的回复:
[quote=引用 5 楼 qq_23540209 的回复:]
好吧我打错了,是sleep。。。

哦,是这样的,数据库都有连接池。
当你开启连接,操作完毕,最后close后。
这个链接会回到连接池,
这么做的目的是为了,之后的操作可以直接使用连接池内的链接,
减少了链接创建的资源消耗。所以你的链接是没有减少的。[/quote]
可是我调用一次方法就增加了一条连接,最后因为连接数太多,程序崩了
正怒月神 版主 2018-09-07
  • 打赏
  • 举报
回复
引用 5 楼 qq_23540209 的回复:
好吧我打错了,是sleep。。。

哦,是这样的,数据库都有连接池。
当你开启连接,操作完毕,最后close后。
这个链接会回到连接池,
这么做的目的是为了,之后的操作可以直接使用连接池内的链接,
减少了链接创建的资源消耗。所以你的链接是没有减少的。
丰云 2018-09-07
  • 打赏
  • 举报
回复
把声明放到try里面去
闭包客 2018-09-07
  • 打赏
  • 举报
回复
我想讲个笑话,我以前公司的一个网管,在网站出现性能问题的时候,指着那些 sleep 的连接对开发人员说:“你看!这么多连接!怪不得那么慢!”
闭包客 2018-09-07
  • 打赏
  • 举报
回复
那你要判断一下程序崩溃的原因,是不是真的因为连接池满了。如果很多连接是 sleep 状态,并且只有一个程序在连接数据的话,连接池是不可能满的。
枫之幻月 2018-09-06
  • 打赏
  • 举报
回复
好吧我打错了,是sleep。。。
枫之幻月 2018-09-06
  • 打赏
  • 举报
回复
引用 1 楼 hanjun0612 的回复:
请问,啥是sheep

就是正在沉睡,没有使用的连接
枫之幻月 2018-09-06
  • 打赏
  • 举报
回复
我设断点后发现执行了connection.Close();后sheep的数量并没有减少,还是open后数量
王志威丶 2018-09-06
  • 打赏
  • 举报
回复
正怒月神 版主 2018-09-06
  • 打赏
  • 举报
回复
请问,啥是sheep

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧