数据库链接过多问题,请求各位前辈!!!

oreoconansisu 2015-03-07 07:07:03
各位CSDN大虾早~

最近一年负责开发公司一个基于REST风格的WEB项目
之前由于客户数量少的缘故,调用频率一直不高,导致这个问题一直没发现
前段时间调用频率上升,数据库链接数也随着增加,隔三差五会出现数据库链接中断等问题
现在程序情况是客户每调用一次,都会创建一个ConnBus
想请教该如何处理较好?先谢谢了
...全文
162 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
oreoconansisu 2015-03-08
  • 打赏
  • 举报
回复
引用 5 楼 sp1234 的回复:
每一次访问数据库都创建新的逻辑连接,跟减少访问数据库次数,这是两个不矛盾的东西。不要搞不清楚之间的关系。 每一次访问数据库都要创建逻辑连接,是编程所必须的。是必较低级的编程知识。 减少数据库访问次数,提高你的 web的响应速度和并发吞吐能力,是设计问题。比简单的编程问题要高级多了。
先谢谢的大神的回复! 目前项目业务占用连接时间我测试过,有几个业务时间在1秒左右,我会往这方面进行调整 另外,你提到的缓存,我有所考虑,可具体到项目实施上又有些迷茫,不知该如何运用缓存 我们系统是OMS系统,客户可以调用我们提供的webapi创建/查询/批量处理订单数据 创建/批量处理都是一次性的,不能缓存 查询我认为每次应该都从数据库读取最新的数据,也无法缓存 还请点拨一下
oreoconansisu 2015-03-08
  • 打赏
  • 举报
回复
引用 3 楼 SmileSkyNet 的回复:
用户读写数据库肯定是要创建连接的,你要做的就是在用户读写时才去连接数据库,读写完成马上释放连接!
恩,这个目前是读写完后就立马释放链接了
  • 打赏
  • 举报
回复
每一次访问数据库都创建新的逻辑连接,跟减少访问数据库次数,这是两个不矛盾的东西。不要搞不清楚之间的关系。 每一次访问数据库都要创建逻辑连接,是编程所必须的。是必较低级的编程知识。 减少数据库访问次数,提高你的 web的响应速度和并发吞吐能力,是设计问题。比简单的编程问题要高级多了。
  • 打赏
  • 举报
回复
对于使用.net中的连接来说,每一次访问数据都创建一个逻辑连接,是必须的。不但需要创建,而且要及时(比如说200毫秒)释放掉。因为这些逻辑连接是重复使用连接池里的物理连接所必须的。 反而是,那种认为“应该共享逻辑连接,不应该及时释放逻辑连接”的想法才是错误的。
SmileSkyNet 2015-03-07
  • 打赏
  • 举报
回复
用户读写数据库肯定是要创建连接的,你要做的就是在用户读写时才去连接数据库,读写完成马上释放连接!
  • 打赏
  • 举报
回复
虽然许多“技术的”手段看似都挺“技术化的”,但是我还是通常会首先去检查访问数据的事务的时间长短。我认为一个事务如果超过2秒钟就很可能是一个设计bug了。(你可以自己问问自己,你们的事务是否经常有更长的执行时间?!)我认为先全面清理一遍最基本的设计误区,然后再考虑那些纯技术手段,这样比较容易见效。 一些程序员喜欢推卸责任。当他折腾什么缓存之类的“相当技术化的”东西之后,他就不愿意去承认自己设计的数据库事务太冗长的问题了。
  • 打赏
  • 举报
回复
可以用日志记录一下每一种业务占用连接的时间长短。然后确定一个标准,比如说,低于200毫秒是好的,而高于2秒钟肯定是不能接受的。 另外就是将任务分解出一些异步线程,甚至多个进程。例如一些类型的操作可以先放到数据库中,然后每当过一段时间才批量处理一次。这个处理是在其它进程中做的,甚至是分布到其它机器去做(当你又希望减小当前机器负载,同时又希望尽早提前开始异步任务时,就需要水平扩展任务服务器)。 如果你没有很好地使用缓存,那么使用缓存可能是效果最显著的。它可以立刻让你的性能提高几十倍,让你的同时连接数减少10倍。

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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