无法将文件发布/上传到 PHP 页面

无法将文件发布/上传到 PHP 页面

当我尝试通过 php 发布内容或上传文件到我的服务器时遇到了一个奇怪的问题。

提交表单后,它会休眠一段时间,然后显示页面加载错误。我尝试了不同大小的不同内容和文件,发现它只能发布/上传大小低于 530 字节的内容/文件!(大约)。
我可以上传/发布到其他网站,所以我很确定问题出在服务器上的某个地方。

  • upload_max_filesize是2M
  • post_max_size是8M
  • ApacheLimitRequestbody是 3M

该服务器通过 PPPoE 连接连接到互联网,之前我遇到过 FTP 问题,我通过将服务器的 MTU 减少到 1460 解决了该问题,但现在即使更改 MTU 也无济于事。

当我通过 WireShark 监控网络时,显示以下行(校验和错误和坏的 tcp)

1170    53.165583000    192.168.1.2 78.39.102.77    TCP 1506    [TCP segment of a reassembled PDU]

1293    57.661244000    192.168.1.2 78.39.102.77    TCP 1506    [TCP Retransmission] 60849 > http [ACK] Seq=1 Ack=1 Win=66792 Len=1452

在行的详细信息中,它说错误发生在 IP 数据包上,主要是因为校验和不正确(其为 0x0000),并表明它可能是由 TCP/IP 校验和卸载功能引起的。

这可能与我的问题有关吗?如果是,我该如何解决?我应该禁用校验和吗?更换 NIC?还是其他什么?


更新:我禁用了计算机(客户端)中的 IP 校验和,现在我看到有关 TCP 重传的另一条消息,这被怀疑是导致问题的原因

[This frame is a (suspected) retrasmission]

在下面

[TCP Analysis Flags]

我觉得这是一个拥塞错误,但我不知道如何解决

答案1

请勿禁用 TCP 校验和。

您的 TCP 堆栈应该会自动处理恢复,尽管这会降低网络的吞吐量。如果您可以重现相同的故障,则发送或接收机器的 TCP 堆栈中存在非常严重的缺陷,或者介于两者之间。您是否在两端都运行了 wireshark?

您是否已在发送端配置了 TCP 卸载?您是否尝试过将其关闭?

NAT 是通过路由器还是 HTTP 代理进行的?

我想,Sirjan 理工大学的一些人将能够为您提供有关其系统如何配置的比 serverfault 上更具体的建议。

答案2

我猜测问题出在 tcp 拥塞,因此我按照 tcp 参数调整并增加了 tcp_wmem、tcp_rmem、wmem_max ......然后重新启动服务器

到现在我还没有遇到这个问题

这里我要指出的是,由于 WireShark 在 TCP 数据包通过 NIC 之前捕获它们,如果校验和是在 NIC 中计算的,那么 WireShark 中的校验和错误通常不是一个真正的问题

相关内容