用HttpClient做数据采集时的阻塞问题 -问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

用HttpClient做数据采集时的阻塞问题

2016-02-27 19:00:07 2270 1

最近写了个程序采一个网站的信息,第一次。程序涉及到的工具是Java、MySQL、Apache的HttpClient。
HttpClient设置了连接超时、响应超时,都是一分钟。每采集一两个小时偶尔有一些请求在1分钟之内抛出java.net.SocketTimeoutException: Read timed out。这说明设置的超时是有效的。
听说抛出Read time out是因为采集太频繁,对方服务器有保护,所以我写了代码每次抛错就休眠2分钟再继续采集。
1.第一个问题是,程序在白天开始跑,好好的,但从晚上12点左右到第二天早上7、8点(有时是6点),完全没有打印一点日志信息,直到7、8点过后才抛出java.net.SocketTimeoutException:
Read timed out,而且一个每隔15分钟执行缓存清理的线程在这段时间内也没执行过。一头雾水。
2.第二个问题是由第一个问题连带引出来的,在我做过的3次测试里,7、8点过后程序“恢复采集”,但出现已下问题:
有一次曾经出现数据库连接已关闭的情况,但是数据库连接池已经配置好定期检查空闲连接,应该确保返回的连接是有效的啊。用的是BoneCP。
有两次数据库连接还能正常使用,但是对被采集的服务器发起的请求开始比较频繁地出现Read timed out。
反正都是不能恢复正常采集,要重启,我也是醉了。
麻烦各位亲帮我解答一下,问题可能出现在哪里,怎么让我的采集程序可以一口气跑完.

取消 提交回答
全部回答(1)
  • 蛮大人123
    2019-07-17 18:49:16

    你这个情况无非2种可能
    1.对方不让你看了
    2.你的项目有问题
    是否确定肯定是晚上12点之后就不行了?会不会是你每天重启的时间都差不多,导致看上去好像是12点之后不行的,重启的时间改到下午做看看会怎样。
    建议你最好能换一个网站采集,确定没有那种不让你看的限制,先排除掉自己程序的问题之后再去猜测对方是怎么配置的。

    0 0
相关问答

20

回答

【大咖问答】对话PostgreSQL 中国社区发起人之一,阿里云数据库高级专家 德哥

阿里ACE 彭飞 2019-07-10 09:36:10 1280345浏览量 回答数 20

170

回答

惊喜翻倍:免费ECS+免费环境配置~!(ECS免费体验6个月活动3月31日结束)

豆妹 2014-10-29 17:52:21 234060浏览量 回答数 170

145

回答

【新手入门】云服务器linux使用手册

fanyue88888 2012-11-26 17:14:18 160082浏览量 回答数 145

8

回答

OceanBase 使用动画(持续更新)

mq4096 2019-02-20 17:16:36 341483浏览量 回答数 8

119

回答

OSS存储服务-客户端工具

newegg11 2012-05-17 15:37:18 302814浏览量 回答数 119

24

回答

阿里云开放端口权限

xcxx 2016-07-20 15:03:33 660865浏览量 回答数 24

39

回答

安全组详解,新手必看教程

我的中国 2017-11-30 15:23:46 263738浏览量 回答数 39

21

回答

请教一下数据量有100万条左右要什么配置?

易网网络 2013-03-27 15:18:02 193753浏览量 回答数 21

251

回答

阿里云LNAMP(Linux + Nginx + Apache + MySQL + PHP)环境一键安装脚本

云代维 2014-02-14 15:26:06 310482浏览量 回答数 251

2

回答

区域选择帮助

fanyue88888 2012-12-07 15:54:30 205798浏览量 回答数 2
+关注
蛮大人123
我说我不帅他们就打我,还说我虚伪
0
文章
7733
问答
问答排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载