当前位置: 首页 > news >正文

门户网站开发案例上海seo优化公司

门户网站开发案例,上海seo优化公司,订单网站模块,手机免费推广软件最近一直在捣鼓HBase的项目,之前写了一些代码从数据库加载数据到HBase,所有的代码都跑得好好地,然而今天尝试着换了一个数据库,就跑不通了。通过数据工具,可以发现连接没有问题,而且有部分逻辑很顺利通过了…

最近一直在捣鼓HBase的项目,之前写了一些代码从数据库加载数据到HBase,所有的代码都跑得好好地,然而今天尝试着换了一个数据库,就跑不通了。通过数据工具,可以发现连接没有问题,而且有部分逻辑很顺利通过了,然而有一些就是卡主了,通过jstack打印出来的信息可以找到这样的堆栈:

"runner{object-loader#292}-objecthandler" #323 prio=5 os_prio=0 tid=0x00002aaadc5ec800 nid=0x7f62 in Object.wait() [0x0000000056ce4000]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        at java.lang.Object.wait(Object.java:502)
        at org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:1104)
        - locked <0x00000007736013e8> (a org.apache.commons.pool.impl.GenericObjectPool$Latch)
        at org.apache.commons.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:106)
        at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)
        at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:111)
        at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:77)
所以开始我怀疑是连接的问题,从网上也找到了一个类型的现象,有人怀疑是DBPC的一个bug导致死锁:http://stackoverflow.com/questions/5714511/deadlock-issue-in-dbcp-deployed-on-tomcat,所以我升级了DBCP版本1.4,然而和这人一样的结果,升级DBCP版本并没有解决问题。简单的看DBCP的代码,都开始怀疑是不是因为没有Spring JdbcTemplate没有正确的把Connection返回回去引起泄漏了,然而也有点感觉不太可能,因为这段代码在其他数据库都跑得好好地,但是我们的数据库版本都是一致的,然而其他配置上也被假设一致了(被忽略的一个重要的点)。

后来开始调配置,减少连接数,减少线程数,经过各种组合,发现当把DB读的batch降到1的时候就可以work了,非常诡异的一个问题。从数据工具中查到,如果用batch,得到的SQL是:
SELECT <column>, <column> FROM <table> where iid in (@p0, @p1)
如果是batch是1的话:
SELECT <column>, <column> FROM <table> where iid in (@p0)
这段SQL语句是这么产生的:
DataSource dataSource = ....
this.jdbc = new NamedParameterJdbcTemplate(dataSource);
...
MapSqlParameterSource parameters = new MapSqlParameterSource();
parameters.addValue("params", paramsMap.keySet());
jdbc.query("SELECT <columns> FROM <table> where <column> in (:params)";, parameters, new ResultSetExtractor<Void>() {
....
})

如果是一个batch的话,在jstack堆栈中可以看到它一直在等数据库的返回结果:
"runner{object-loader#16}-objecthandler" #47 prio=5 os_prio=0 tid=0x0000000006ddd800 nid=0x2694 runnable [0x0000000045434000]
   java.lang.Thread.State: RUNNABLE
        at java.net.SocketInputStream.socketRead0(Native Method)
        at java.net.SocketInputStream.socketRead(SocketInputStream.java:116)
        at java.net.SocketInputStream.read(SocketInputStream.java:170)
        at java.net.SocketInputStream.read(SocketInputStream.java:141)
        at com.sybase.jdbc3.timedio.RawDbio.reallyRead(Unknown Source)
        at com.sybase.jdbc3.timedio.Dbio.doRead(Unknown Source)
        at com.sybase.jdbc3.timedio.InStreamMgr.a(Unknown Source)
        at com.sybase.jdbc3.timedio.InStreamMgr.doRead(Unknown Source)
        at com.sybase.jdbc3.tds.TdsProtocolContext.getChunk(Unknown Source)
这也解释了第一个堆栈一直停在borrowObject(getConnection)的阶段,因为之前所有的Connection都在数据库堵住没有返回,所以这个线程再拿Connection的时候超过了我设置的最大Connection数,所以就等着拿不到Connection。

在后来查了一下不同数据库的JDBC Driver信息(sp_version):
jConnect (TM) for JDBC(TM)/7.07 ESD #4 (Build 26793)/P/EBF20302/JDK 1.6.0/jdbcmain/OPT/Thu Jul  5 22:08:44 PDT 2012
jConnect (TM) for JDBC(TM)/1000/Wed Mar 11 05:01:24 2015 PDT

也就是说这种用法是因为旧的JDBC Driver对NamedParameterJdbcTemplate不完善引起的,这个坑花了我一整天的时间。。。。

http://www.wooajung.com/news/35236.html

相关文章:

  • 不提供花架子网站 我国内最新新闻消息今天的
  • 网站续费协议常州网站推广排名
  • mac163网站建设seo公司优化
  • asp.net网站开发工程师(c长沙网站制作主要公司
  • 维护网址免费seo推广软件
  • 个人网站需要买服务器吗市场调研公司
  • 国外的包装设计网站杭州网络
  • 太原网站建设外包校园推广方案
  • 池州网站建设费用站长工具外链查询
  • 医疗器械网站备案前置审批事例seo 网站优化推广排名教程
  • 做网站的功能是什么营销策划方案模板
  • 网站怎样在360做优化百度推广登录页面
  • 制作一个网站需要什么互联网品牌营销公司
  • 商城型网站建设多少钱百度推广有用吗
  • 做公司网站的价格百度一下你就知道移动首页
  • 网站建设主题有哪些注意事项简易的旅游网页制作
  • 同一服务器做两个顶级域名网站网站推广排名服务
  • 东营网站建设app开发关键词优化推广排名多少钱
  • 慈溪网站建设哪家好深圳竞价托管公司
  • 做网站就seo外包公司兴田德润
  • 网站设计步骤详解推销
  • 深圳网站建设 贝尔利友情链接论坛
  • 开发网站流程seo专业培训机构
  • 郑州做网站的大公司韶关新闻最新今日头条
  • 室内设计做效果图可以接单的网站中文搜索引擎排名
  • 绍兴网站建设技术外包什么叫营销
  • 衡水移动端网站建设win7优化工具
  • 中华建设网算什么级别网站百度关键词优化系统
  • 最专业的房地产网站建设新乡网络推广外包
  • 《网站基础建设-首保》女教师网课入06654侵录屏