4

我创建了一个页面,通过分块上传将文件发送到我的服务器(ovh 上的 ssd 类 vps)。我正在使用 Resumable.js(https://github.com/23/resumable.js)通过他们在 github 项目(https://github.com/23/resumable.js )中作为示例的 php 页面来实现这一点/blob/master/samples/Backend%20on%20PHP.md)来接收数据。它可以工作,但速度非常慢,根据 Chrome 开发工具,请求需要 5-7 秒才能“发送”,然后需要 6-8 秒才能接收第一个字节。

我试图分析 php 执行脚本需要多长时间,令我惊讶的是 microtime() 在执行脚本时显示没有经过时间(又名相同的 microtime 值)。

在我的 vps 上,我有一个基于 nginx 的设置,使用 fastcgi 运行 php7。我做了一些尝试和其他 php 页面,我在分块上传时看到的这种延迟是不可见的(请求时间为 0.1 毫秒,TTFB 为 35 毫秒)。

有人经历过类似的事情并知道如何处理吗?可能是由于某些 ddos​​ 保护?我还在 vps 上使用 apache 尝试了该脚本,但没有发现任何差异。相同的脚本在本地工作就像一个魅力。这让我产生了很多疑问:如果 nginx 和 apache 显示相同的问题,我可以假设这是一个脚本问题,但为什么本地速度更快?(相同的开发工具说 3ms 发送请求和 2ms 作为 TTFB)

4

1 回答 1

0

根据我的经验,解决此类问题的一个好方法是为测试和生产设置相同的设置。为此,我使用 Docker。我已经发布了一个为WordPress准备好的完整环境的帖子。用您的脚本替换 WordPress 脚本可能会为您提供可以在本地重现问题的设置。

当能够重现问题时,请查看您的 FPM 参数。或者 FPM 连接的方式。从我们拥有的数据来看,我最好的选择是它与传输或其他 FPM 设置有关。

于 2016-10-04T17:45:05.860 回答