客户端Unexpected end of file from server 和 服务端nginx 408 的一种解决方法

这篇具有很好参考价值的文章主要介绍了客户端Unexpected end of file from server 和 服务端nginx 408 的一种解决方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

参考

https://www.jiweichengzhu.com/article/81044c11caf54753aeed94ef8fad1070
https://blog.csdn.net/chenz_yang/article/details/77238532

问题

终端设备(Debian系统、戴尔服务器)通过HTTPS向云端上报数据时,有的数据如设备心跳能上报,有的数据如服务器配置信息上报时报错:
Unexpected end of file from server
客户端Unexpected end of file from server 和 服务端nginx 408 的一种解决方法,后端开发,nginx

“Unexpected end of file” implies that the remote server accepted and closed the connection without sending a response. It’s possible that the remote system is too busy to handle the request, or that there’s a network bug that randomly drops connections.
With the information available it’s impossible to say what’s going wrong. If you have access to the servers in question you can use packet sniffing tools to find what exactly is sent and received, and look at logs to of the server process to see if there are any error messages.
意思就是说“意外的文件结束”意味着远程服务器接受并关闭连接,而不发送响应。远程系统可能太忙,无法处理请求,或者有网络错误随机丢弃连接。
有了可用的信息,不可能说出了什么问题。如果您有权访问有问题的服务器,您可以使用数据包嗅探工具来查找发送和接收的内容,并查看服务器进程的日志,以查看是否有任何错误消息。

应该是云端服务器主动关闭了TCP连接。

再查看云端的日志,发现报了 nginx 408 错误。

并且只是个别终端设备在上报数据时会出现上述问题,即终端报Unexpected end of file from server,云端报nginx 408

分析

查资料,nginx 408与一下参数有关:

client_header_timeout
定义读取客户端请求请求头的超时,默认60s,如果客户端未在此时间内传输整个请求头,则请求将终止,并显示 408(请求超时)错误。‎

client_body_timeout
‎定义读取客户端请求正文的超时,默认60s,超时仅设置在两个连续读取操作之间的一段时间内,而不是为整个请求正文的传输设置,如果客户端未在此时间内传输任何内容,则请求将终止,并显示 408(请求超时)错误。‎

结合 “上述问题仅限于个别终端设备的个别接口”以及“nginx 408”的原因,初步认为:

部分终端设备在上报某些数据时可能出现了丢包

而使用ping检查终端与云端之间的网络,网络延迟并不大,而且仅仅是在上报某些数据时出现上述问题,怀疑可能是:
MTU设置不当导致终端到云端之间数据链路上的某个节点出现了丢包

解决

终端设备网口的MTU是1500,修改为1200,问题就解决了。

附录

什么是MTU?

MTU: 最大传输单元,意思是网络上传输最大的数据包,mtu的单位是字节。

大部分的网络设备的mtu默认值是1500。如果本机的mtu值大于网关的mtu值,大的数据包就会被拆开来传送,这样会产生数据包的碎片,增加丢包率,降低网络速度。把mtu设置比网关小或者相同,可以减少丢包。设置合适的mtu值,可以减少部分网站打不开,上网速度慢等问题。一般情况,可以把路由器、交换机和服务器的mtu值统一设置。

查看服务器的mtu值

cat /sys/class/net/网口名称/mtu

或者

# ifconfig
ens18: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1200

临时修改mtu值:(重启服务器后失效)

ifconfig  <网口名称> mtu 1200

永久生效

在NetworkManager的连接配置文件里配置mtu,在[ethernet]选项添加一行 mtu=1280:
客户端Unexpected end of file from server 和 服务端nginx 408 的一种解决方法,后端开发,nginx文章来源地址https://www.toymoban.com/news/detail-616725.html

到了这里,关于客户端Unexpected end of file from server 和 服务端nginx 408 的一种解决方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C# 解决TCP Server 关不掉客户端连接的问题

    拷贝了一段 TCP Server的应用代码,第一次运行正常,但是关闭软件或者实现disconnect+close后都无法关闭端口连接。 关闭之后,另外一个客户端还在正常与PC连接。 TCP Server 重新运行,无法接收到客户端的连接。 1、 C#  .net界面程序 2、 .net 4.8.1 3、 System.Net.Sockets 4、 TcpListener 接

    2024年02月15日
    浏览(44)
  • 当在本地,向服务器发送信息时,服务器接受信息返回给客户端,此时采用多行读取时,客户端接收不到Server的信息

        此时的服务器还在等待输入,客户端也在等待服务器的应答,产生死锁,僵持不下。 经过一番尝试后发现, 当使用单行读取的时候,使用 bufferedWriter.newLine(); 此时就不用关闭socket的输出流 , 即socket.shutdownOutput();可以省略,当然写上去也没错。 当使用多行读取的时候,

    2024年02月07日
    浏览(46)
  • frpc篇---frpc客户端连接会提示 login to server failed: EOF

    1.frpc客户端连接会提示 login to server failed: EOF 2.解决办法

    2024年02月13日
    浏览(37)
  • Tcp server是如何一个端口处理多个客户端连接的(一对一还是一对多)

    我们经常看到说,TCP 是一对一的两点服务,UDP 支持一对一、一对多、多对多的交互通信。但是使用Tcp工具通讯时,一个Tcp服务端可以连接多个Tcp客户端。所以这里的一对一和一对多是不是冲突了? 并不是 。一对一指的是Tcp连接,什么是Tcp连接,这里直接粘贴小林大神的解释

    2023年04月08日
    浏览(47)
  • Linux网络编程:Socket套接字编程(Server服务器 Client客户端)

    文章目录: 一:定义和流程分析 1.定义 2.流程分析  3.网络字节序 二:相关函数  IP地址转换函数inet_pton inet_ntop(本地字节序 网络字节序) socket函数(创建一个套接字) bind函数(给socket绑定一个服务器地址结构(IP+port)) listen函数(设置最大连接数或者说能同时进行三次握手的最

    2024年02月12日
    浏览(79)
  • 结合Server-sent events与 EventSource使用,实现服务端主动向客户端发送数据

    当前解决服务端推送的方案有这几个: 客户端长轮询(不推荐使用) websocket双向连接 iframe永久帧(不推荐使用) EventSource 长轮训虽然可以避免短轮训造成的服务端过载,但在服务端返回数据后仍需要客户端主动发起下一个长轮训请求,等待服务端响应,这样仍需要底层的连

    2024年02月04日
    浏览(75)
  • 解决报错SyntaxError:Unexpected end of JSON input

    跳转页面传递参数 报错提示 SyntaxError:Unexpected end of JSON input 原因:若对象的参数或数组的元素中遇到地址中包括? - _ . ! ~ * \\\' ( )等特殊符号时,对象/数组先要通过JSON.stringify转化为字符串再通过 encodeURIComponent 编码,接收时,先通过 decodeURIComponent 解码再通过JSON.parse转换为

    2024年02月11日
    浏览(51)
  • Spring Cloud 注册 Nacos2.x 版本RPC客户端连接抛 Server check fail, please check server ** 异常解决方案

    在 nacos-client:2.x 中,如果启动了naocs2.x的服务不修改任何端口的情况下是可以正常连接的。 在docker下运行了 nacos 并且指定跟主机绑定 “8848:8848” 端口 cloud 中配置 在nacos服务启动正常下,Spring Cloud 连接会抛出一个异常为: 那是因为Nacos2.x版本相比1.X新增了gRPC的通信方式,因

    2024年02月06日
    浏览(59)
  • OPC UA服务端(Prosys OPC UA Simulation Server)和客户端(OPC UA Explorer)工具使用

    1.Prosys OPC UA Simulation Server下载地址 https://downloads.prosysopc.com/opc-ua-simulation-server-downloads.php 2.简单使用 2.1 特殊项设置 【1】端口设置 【2】OPC UA Simulation Server运行状态 2.2 新加需要模拟上数的点 2.3 模拟动态变化值,修改ValueType 效果图如下: 2.4 模拟固定值(手动修改值) 1.Matriko

    2024年02月14日
    浏览(44)
  • ubuntu 22.04.1 安装mysql-server方法,以及开启局域网客户端访问权限与修改密码等方法

    在Ubuntu 22.04.1上安装 MySQL Server,并开启局域网客户端访问权限、修改密码等,你可以按照以下步骤进行操作: 步骤 1: 安装 MySQL Server 打开终端(Terminal)。 更新系统软件包列表: 安装 MySQL Server: 安装过程中,系统将提示你设置 MySQL 的 root 用户密码,请记住这个密码。

    2024年01月16日
    浏览(63)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包