zouwei2008 2012-07-26 21:32
浏览 275
已采纳

锁表后,线程池与连接池的问题

一直以来对连接池与线程池的运作不清楚。
我参与的一个项目中存在一种情况,有一个业务在应用中存在并发的修改一张表的某个统计数据,那么如果程序或者其他事务原因,造成该数据出现行锁。

我的问题是:在容器(websphere)设置的连接超时时间前,是否 所有操作该业务的请求都将等待并占用一个数据库连接池的资源和一个线程,随着请求的不段增加,从而造成服务器宕机,数据库连接池的资源耗尽!
因为现成出现了服务器宕机,并且日志显示超时了:SRVE0133E: java.net.SocketTimeoutException: Async operation timed out

  • 写回答

3条回答 默认 最新

  • nextdev 2012-07-27 16:12
    关注

    连接池和线程池是有本质区别的,当然也有相识的地方,打个比方吧:
    连接池就好比一栋大楼所有电梯这样的一个集合;一台电梯好比连接池中一个连接。如果有人乘一台电梯上去,就不能为你服务,你只有选择其他空闲的电梯,或者你等待这个电梯服务完。连接池重要的是根据不同的应用要求配置参数可能完全不一样,比如,连接的超时时间,空闲回收时间,多久测试一次连接可用性(由于各种原因有时候连接空闲,但是无效,就好比电梯没有被其他人使用,你可以使用,但是没电),连接池中连接最大数,最小数等
    线程池和连接池的配置大部分一样,因为原理很相似;但是又本质的区别:
    连接池:
    里面是数据库连接
    线程池:
    里面是线程
    面向解决问题方向不一样:一个是减少数据库系统开销,提高数据库的实效,更多的为应用程序服务;另一个是,提高系统的处理能力和服务量。一个面向数据库连接资源,一个面向cpu资源
    他们的的目的大致相同:提高系统的可靠性、充分利用资源

    你的问题,两方面入手,一方面:数据库连接数稍微多一点,连接超时时长短一点;另一方面:线程数少一点,短事务,线程间适时让线程让出cpu(事务的前后,不要事务开启中间)。
    如果想彻底解决,系统架构就要改变,不要操作公共资源

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥50 树莓派安卓APK系统签名
  • ¥15 maple软件,用solve求反函数出现rootof,怎么办?
  • ¥65 汇编语言除法溢出问题
  • ¥15 Visual Studio问题
  • ¥20 求一个html代码,有偿
  • ¥100 关于使用MATLAB中copularnd函数的问题
  • ¥20 在虚拟机的pycharm上
  • ¥15 jupyterthemes 设置完毕后没有效果
  • ¥15 matlab图像高斯低通滤波
  • ¥15 针对曲面部件的制孔路径规划,大家有什么思路吗