AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / computer / 问题 / 1463563
Accepted
Louen Leoncoeur
Louen Leoncoeur
Asked: 2019-07-25 06:53:33 +0800 CST2019-07-25 06:53:33 +0800 CST 2019-07-25 06:53:33 +0800 CST

偶尔会发生不同的卷曲错误

  • 772

我有一个运行 Centos7 的网络服务器,它向其他资源发出 curl 请求。以每秒 5-10 个请求的速率,一切正常,除了我每 2-10 分钟收到不同的 curl 错误。我认为,随着请求数量的增加,它开始随着时间的推移而发生,这让我认为它与网络有关,但我在这方面完全是个新手。如何找出导致这些错误的原因以及我该怎么做?

Network: CURL error 56: TCP connection reset by peer
Network: CURL error 7: Failed to connect to ip: Network is unreachable
Network: CURL error 18: transfer closed with 1473 bytes remaining to read
centos curl
  • 1 1 个回答
  • 457 Views

1 个回答

  • Voted
  1. Best Answer
    Cliff Armstrong
    2019-07-25T08:56:29+08:002019-07-25T08:56:29+08:00

    更有可能的是,导致这些错误的原因通常可以归类为“SNAFU”……情况正常,一切正常。

    互联网是由相互连接的计算机和网络设备组成的庞大网络。那些你无法控制的其他机器并不总是做它们应该做的事情。他们遭受电力故障。他们有硬件故障。他们受到宇宙辐射的打击。事情发生了。

    支撑互联网的网络技术在设计时就考虑到了这一点。互联网之所以能正常工作,是因为存在巨大的冗余度。如果通过一条路由连接到目的地的尝试失败了……该链中最后一个有效的“跃点”将记住失败并尝试不同的“下一跃点”以进行未来的通信。它实际上比这复杂得多......但你明白了要点。

    大多数 Web 应用程序会重试失败的连接,专门利用这种冗余。然而,并非全部。应用程序越简单,失败的可能性就越大。对于应用小型单一作业工具的 *nix 原则的终端应用程序尤其如此。重试是另一个工具的工作。curl就是这样一个应用程序。根据联机帮助页:curl

    - 重试

    如果 curl 尝试执行传输时返回暂时性错误,它将在放弃之前重试此次数。将数字设置为 0 会使 curl 不重试(这是默认值)。 瞬态错误意味着:超时、FTP 4xx 响应代码或 HTTP 408 或 5xx 响应代码。

    我不确定您用于curl检索资源的具体用例是什么,但是如果您使用 curl 以自动方式提供资源,您肯定需要--retry使用值为 3-5 的标志配置它。因为像您显示的错误是完全正常的……并且需要考虑在内。

    2. 为什么生产服务器的可靠性比本地计算机差?

    在一个完美的世界中,生产服务器将始终比任何家庭或办公室互联网连接更可靠地连接到基于互联网的资源。既然这里不是这种情况,那么您对原因感兴趣是正确的。但是,这并不一定意味着您应该担心,因为这也不一定是由您的服务器引起的问题。

    了解您的本地计算机和您的服务器几乎肯定不会共享到相关资源的相同路径。例如。如果我traceroute从我的本地家庭服务器执行一个说...superuser.com我得到这个:

    user@home ~ $ sudo traceroute -I superuser.com
    traceroute to superuser.com (151.101.1.69), 30 hops max, 60 byte packets
     1  rtr.scrapyard.local (10.5.0.1)
     2  96.120.58.37 (96.120.58.37)
     3  po94-sr22.dothan.al.pancity.comcast.net (68.85.202.165)
     4  162.151.221.209 (162.151.221.209)
     5  be-3666-cr02.56marietta.ga.ibone.comcast.net (68.86.90.209)
     6  * * *
     7  50.242.151.138 (50.242.151.138)
     8  151.101.1.69 (151.101.1.69)
    

    但是,如果我从我的其中一台生产服务器执行相同的命令,我会得到:

    user@production ~ $ sudo traceroute -I superuser.com
    traceroute to superuser.com (151.101.1.69), 30 hops max, 60 byte packets
     1  * * *
     2  ae-20-202.gw-distp-a.slr.lxa.us.oneandone.net (74.208.138.130)
     3  ae-10-0.bb-a.ga.mkc.us.oneandone.net (74.208.1.237)
     4  kanc-b1-link.telia.net (80.239.196.109)
     5  dls-b22-link.telia.net (62.115.125.159)
     6  fastly-ic-340339-dls-b22.c.telia.net (62.115.166.191)
     7  151.101.1.69 (151.101.1.69)
    

    这两条路由唯一的共同点是目的地。他们通过的每一台其他机器都是不同的。因此,比方说,如果dls-b22-link.telia.net行为不当,它会影响我的服务器与 superuser.com 通信的尝试……但不会影响我家用计算机的尝试。

    不幸的是,如果出现问题,dls-b22-link.telia.net我也无能为力。dls-b22-link.telia.net考虑到问题的间歇性,确定问题的根源并不是特别容易。

    所以...

    2b. 这真的是个问题吗?

    您应该做的第一件事是确认这是否导致了仅重试失败的连接无法解决的实际问题。这意味着您的生产服务器在某种程度上无法正常工作。我假设你在设置它时心中有一个目标。该目标是否仍在以您无需采取行动的方式实现?这是关键问题。

    回到我之前所说的,像这样的间歇性问题只是互联网的一部分。在一个完美的世界中,它们不会发生,但我们并不生活在一个完美的世界中……这就是为什么冗余是互联网所基于的所有技术的基本原则。这就是为什么在这些类型的连接失败后重试是标准操作程序。以及为什么您不必过分担心此类故障,除非它们会主动损害您的服务器。

    2c. 它在你的控制之下吗?

    您需要缩小问题的潜在根源。为此,只需执行您已经完成的相同测试(计算给定时间范围内的失败次数),但这次让服务器从完全不同的地方请求资源。我建议在您的家用计算机上设置一个简单的网络服务器,其中包含一些与您一直在使用的文件类似的文件,并curl在您的服务器上使用这些文件。

    如果服务器在执行此操作时没有遇到任何故障,那么问题不太可能出在您的服务器或服务器的托管提供商上。并且您现有的测试已经消除了您的本地网络和 isp 以及资源本身作为问题潜在来源的托管位置。这使您的托管服务提供商和资源托管服务提供商之间的节点完全属于“您无法控制的事情”。

    如果服务器在上述测试期间确实遇到问题,那么因为您已经排除了本地网络/isp 的问题,您几乎可以肯定问题出在您的服务器或服务器的托管提供商上。这意味着它在您的控制之下进行修复。这也意味着您有更多的故障排除工作要做。

    2d。接下来是什么?

    如果问题不在于您的服务器、服务器的托管提供商或您正在查询的资源……那么原因本身就不在您的控制之下。在这种情况下,您最好的选择是重新定位服务器(联系您的托管服务提供商并查看他们可以为您提供哪些选项)。希望通过这样做,您将不再需要使用上面有故障节点的路由。不过,这确实是一种折磨,而且不能保证一定会奏效。它甚至可能导致新的问题。因此,为什么在采取这样的步骤之前,这绝对需要成为一个严重的问题。

    另一方面,如果您已将问题缩小到您的服务器或服务器的托管服务提供商,那么您可能可以解决它。如果您有托管协议,请致电您的托管服务提供商并让他们修复它。如果您没有托管协议,那么您需要消除作为潜在罪魁祸首的服务器配置。不幸的是,那是我下火车的地方。我们正在达到我的专业知识的极限。

    通常,对于由您的服务器引起的间歇性问题,它可能与网络缓冲有关或者是某种自动化的结果。一些有根据的猜测:

    • 您是否采取了任何措施来加强您的服务器以抵御恶意探测和攻击?
    • 您是否弄乱了您/etc/sysctl.conf或中的文件/etc/sysctl.d/?
    • 您是否设置了任何类型的状态包检查或入侵检测软件(基于 iptables/netfilter 的防火墙、snort 等)?

    无论如何,如果您正在对服务器本身进行故障排除,我的建议是利用您收集的信息并在ServerFault上提出一个新问题。那里的人比 SuperUser 上的人对服务器问题有更多的经验,并且更有可能知道下一步该尝试什么。

    3.关于错误的明显一致性

    现在,至于为什么您一遍又一遍地收到相同的特定错误?很难说。假设它真的像发条一样每 5 分钟发生一次……仍然可以是任何事情。这些设备中有时钟和定时器,用途广泛。这可能是其中一个设置为每五分钟执行一次的操作导致了这种微小的故障。

    有可能是你的服务器有问题。或者这是您的托管服务提供商的问题。或者这是您的托管服务提供商的 ISP 的问题。或者这是您的家庭/办公室 ISP 的问题。或者介于两者之间的任何地方。如果它不是您的服务器,并且它可能不是基于您告诉我的内容,那么最重要的是您不能对此做太多...除非确保您已设置为重试失败的连接。例如,所有现代网络浏览器都会在放弃从网络服务器检索资源之前重试几次。

    编辑

    1. 添加第二和第三部分以响应要求进一步澄清的评论
    2. 重写了第二部分以说明更正。
    • 1

相关问题

  • psql 未定义符号:PQsetErrorContextVisibility

  • Eclipse 氧气 3a java.lang.NoClassDefFoundError

  • 在 CentOS 7 中设置 PGOPTS 变量的位置

  • 如何从Win10使用RDP登录Centos 7

  • 如何在CentOS 7 中将Ctrl+C 永久更改为Ctrl+K?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    Windows 照片查看器因为内存不足而无法运行?

    • 5 个回答
  • Marko Smith

    支持结束后如何激活 WindowsXP?

    • 6 个回答
  • Marko Smith

    远程桌面间歇性冻结

    • 7 个回答
  • Marko Smith

    Windows 10 服务称为 AarSvc_70f961。它是什么,我该如何禁用它?

    • 2 个回答
  • Marko Smith

    子网掩码 /32 是什么意思?

    • 6 个回答
  • Marko Smith

    鼠标指针在 Windows 中按下的箭头键上移动?

    • 1 个回答
  • Marko Smith

    VirtualBox 无法以 VERR_NEM_VM_CREATE_FAILED 启动

    • 8 个回答
  • Marko Smith

    应用程序不会出现在 MacBook 的摄像头和麦克风隐私设置中

    • 5 个回答
  • Marko Smith

    ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败:无法获取本地颁发者证书 (_ssl.c:1056)

    • 4 个回答
  • Marko Smith

    我如何知道 Windows 安装在哪个驱动器上?

    • 6 个回答
  • Martin Hope
    Albin 支持结束后如何激活 WindowsXP? 2019-11-18 03:50:17 +0800 CST
  • Martin Hope
    fixer1234 “HTTPS Everywhere”仍然相关吗? 2019-10-27 18:06:25 +0800 CST
  • Martin Hope
    Kagaratsch Windows 10 删除大量小文件的速度非常慢。有什么办法可以加快速度吗? 2019-09-23 06:05:43 +0800 CST
  • Martin Hope
    andre_ss6 远程桌面间歇性冻结 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney 为什么在 URL 后面加一个点会删除登录信息? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension 鼠标指针在 Windows 中按下的箭头键上移动? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    Inter Sys Ctrl+C 和 Ctrl+V 是如何工作的? 2019-05-15 02:51:21 +0800 CST
  • Martin Hope
    jonsca 我所有的 Firefox 附加组件突然被禁用了,我该如何重新启用它们? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK 是否可以使用文本创建二维码? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 更改 git init 默认分支名称 2019-04-01 06:16:56 +0800 CST

热门标签

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve