【问题标题】:How to change URL timeout settings on linux webserver如何更改 linux 网络服务器上的 URL 超时设置
【发布时间】:2017-07-24 17:08:33
【问题描述】:

我通过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-- (try: 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-- (try: 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] 保存 到:'mh.php.6'

 0K                                                        0.00 =0s

2017-07-24 06:14:58 (0.00 B/s) - “mh.php.6”已保存 [0/0]

虽然在第三次尝试时它给出了响应 200 OK,但由于在第一次和第二次尝试中超时,它会弄乱实际数据。

如何将 URL 超时设置更改为无限时间或最高限制,以便一次完成工作而不会出现类似

的错误

(对等方重置连接)....

【问题讨论】:

    标签: php linux cron wget


    【解决方案1】:
    wget --timeout 10 http://url 
    

    这可以用于wget 的情况。

    编辑

    或者

    如果您问的是 linux 机器的 Keep-Alive,这可能会有所帮助。

    在 RedHat Linux 上,通过编辑 /etc/sysctl.conf 文件修改以下内核参数,并重新启动网络守护进程 (/etc/rc.d/init.d/network restart)。

    "Connection reset by peer" 相当于 TCP/IP 的 slamming 电话重新挂上。比不回复更有礼貌 留下一个挂着。但这并不是真正期望的 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 了解更多信息。

    【讨论】:

    • 感谢您的回答。但是,它说默认超时是 900 秒,如果您看到我的错误消息,它会在 900 秒之前超时并重试。
    • 我尝试了建议 1 添加 wget --timeout 900 http://url 但它仍然给出 > 标题中的读取错误(对等方重置连接)。重试。我无法在 /etc/sysctl.conf 中进行更改,因为我没有 sudo/root 或编辑 /etc/sysctl.conf 特权@PSN
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-30
    • 1970-01-01
    • 2017-07-07
    • 1970-01-01
    • 2011-06-30
    • 2017-01-30
    相关资源
    最近更新 更多