程序停滞不跑的情况

最近一直都在做爬虫系统,因为后台改需求,所以修改了dao操作。

 然后在测试的时候,我测试爬一个网页,没有问题,能一次性爬完(不满60个)。然后测试同时爬几个网页,总是爬到一半程序就停在哪里不动了,刚刚以为是流没关闭的问题,然后测试还是不行,后来根据那一条新闻的信息debug,然后发现程序在执行jdbc操作时,停止运行。

经过别人提醒,可能是数据库连接池的问题,然后修改数据库连接池最大连接数,发现程序可以继续走下去。可以确定可能是因为没有释放数据库连接。

jdbc.update(new PreparedStatementCreator() {
   @Override
   public PreparedStatement createPreparedStatement(Connection connection) throws SQLException {
      PreparedStatement ps = jdbc.getDataSource().getConnection().prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
      int i = 0;
      ps.setTimestamp(++i, new Timestamp(article.getSpidertime().getTime()));
      ps.setString(++i,article.getTitle());
      ps.setTimestamp(++i, new Timestamp(article.getCreateTime().getTime()));
      ps.setTimestamp(++i, new Timestamp(article.getUpdateTime().getTime()));
      ps.setString(++i,article.getBody());
      ps.setInt(++i, article.getClick());
      ps.setString(++i,article.getDescription());
      ps.setString(++i, article.getKeywords());
      ps.setString(++i, article.getMarktime());
      ps.setLong(++i, article.getTypeid());
      ps.setString(++i,article.getSourceweb());
      ps.setString(++i,article.getSource());
      ps.setString(++i,article.getWriter());
      ps.setString(++i,article.getLitpic());
   /* ps.setInt(++i,article.getClick());*/
      ps.setInt(++i,article.getArcrank());
      ps.setInt(++i,article.getBadpost());
      ps.setInt(++i,article.getChannel());
      ps.setInt(++i,article.getIsmake());
      ps.setInt(++i,article.getLastpost());
      ps.setInt(++i,article.getMid());
      ps.setInt(++i,article.getMoeny());
      ps.setInt(++i,article.getNotpost());
      ps.setInt(++i,article.getScores());
      ps.setInt(++i,article.getGoodpost());
      return ps;
   }
},keyHolder);
标红处应该修改为
PreparedStatement ps = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);

具体原因不明。             
然后再去看了下数据库连接超时时间 居然被别人配置成了半个小时,真是郁闷,谁会愿意等半个小时啊。
总结一下程序停滞不跑的情况:
1.死循环
2.死递归
3.流没有关闭
4.连接等待(数据库连接池)
暂时知道的就这么多

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值