我通过wget
在Linux上设置了一些cron作业,这些作业每24小时运行一次。所有的工作基本上都是调用API,提取数据,我在数据库上很强大。现在的问题是一些API调用非常非常慢并且需要花费大量时间来获得最终得到以下错误的响应。
- 2017-07-24 06:00:02-- http://wwwin-cam-stage.cisco.com/cron/mh.php解决 wwwin-cam-stage.cisco.com(wwwin-cam-stage.cisco.com)... 171.70.100.25 连接到wwwin-cam-stage.cisco.com (wwwin-cam-stage.cisco.com)| 171.70.100.25 |:80 ...已连接。 HTTP 请求已发送,等待响应...读取错误(连接重置为 标题中的对等)。重试。
- 2017-07-24 06:05:03--(尝试:2)http://wwwin-cam-stage.cisco.com/cron/mh.php连接到 wwwin-cam-stage.cisco.com (wwwin-cam-stage.cisco.com)| 171.70.100.25 |:80 ...已连接。 HTTP 请求已发送,等待响应...读取错误(连接重置为 标题中的对等)。重试。
- 2017-07-24 06:10:05--(尝试:3)http://wwwin-cam-stage.cisco.com/cron/mh.php连接到 wwwin-cam-stage.cisco.com (wwwin-cam-stage.cisco.com)| 171.70.100.25 |:80 ...已连接。 HTTP 请求发送,等待响应... 200 OK长度:0 [text / html]保存 to:'mh.php.6'
0K 0.00 =0s
2017-07-24 06:14:58(0.00 B / s) - 'mh.php.6'已保存[0/0]
虽然在第三次尝试时它给出了200 OK的响应,但它在第一次和第二次尝试中超时时会弄乱实际数据。
如何将网址超时设置更改为无限时间或最高限制,以便一次性完成作业,而不会出现错误
(由同行重置连接)....
答案 0 :(得分:1)
wget --timeout 10 http://url
这可以在wget
的情况下使用。
或
如果您询问有关Linux机器的保持活动,这可能会有所帮助。
在RedHat Linux上,通过编辑/etc/sysctl.conf文件修改以下内核参数,然后重新启动网络守护程序(/etc/rc.d/init.d/network restart
)。
"由同行重置连接"是TCP / IP相当于砰的一声 电话回来了。它更礼貌而不仅仅是不回复, 留下一个悬挂。但它并不是真正意想不到的FIN-ACK 有礼貌的TCP / IP逆转。
代码:
# Decrease the time default value for tcp_keepalive_time
tcp_keepalive_time = 1800
-T seconds
‘--timeout=seconds’
将网络超时设置为秒秒。这相当于同时指定‘--dns-timeout’
,‘--connect-timeout’
和‘--read-timeout’
。
当与网络交互时,Wget可以检查超时并在操作时间过长时中止操作。这可以防止像挂起读取和无限连接之类的异常。默认情况下启用的唯一超时是900秒读取超时。将超时设置为0会完全禁用它。除非您知道自己在做什么,否则最好不要更改默认超时设置。
所有与超时相关的选项都接受十进制值以及亚秒值。例如,'0.1'秒是超时的合法(但不明智)选择。亚秒超时对于检查服务器响应时间或测试网络延迟非常有用。
‘--dns-timeout=seconds’
将DNS查找超时设置为秒秒。在指定时间内未完成的DNS查找将失败。默认情况下,DNS查找没有超时,除了系统库实现的超时。
‘--connect-timeout=seconds’
将连接超时设置为秒秒。建立时间较长的TCP连接将被中止。默认情况下,除了系统库实现的超时之外,没有连接超时。
‘--read-timeout=seconds’
将读取(和写入)超时设置为秒秒。此超时的“时间”是指空闲时间:如果在下载中的任何时刻没有收到超过指定秒数的数据,则读取失败并重新开始下载。此选项不会直接影响整个下载的持续时间。
当然,远程服务器可能会选择比此选项更快地终止连接。默认读取超时为900秒。
来源Wget手册。
有关详细信息,请参阅此wget Manual page。