javascript - 网页偶尔显示507存储空间不足

标签 javascript php html web web-hosting

我有一个网站正在运行。该网站在本地主机上运行良好,没有此类错误,但在我将其上线后,每当两三个用户同时使用同一页面时,它就会开始显示 507 存储空间不足页面。
例如,有一个网页 chat.php,它运行一个 ajax 请求,每 700 毫秒更新一次聊天记录。并排两个 ajax 请求不断检查消息和通知。这些 ajax 请求是使用 javascript 的 setInterval 方法完成的。当两个或更多用户同时访问此页面时,页面不会加载并显示错误,有时页面会显示 429 请求过多错误。因此,同时最多 4 个请求可以发生在用户端,如果脚本同时运行,也是如此。这可能是因为进入流程有限而发生的吗?默认情况下,主机为我提供了 10 个有限的进入流程。如果您希望我发布 setInterval 方法代码,请回复并发表评论,即使我认为问题出在此处。

最佳答案

For example there is a webpage chat.php which runs an ajax request to update the chats every 700 milliseconds.

These ajax requests are completed using javascript's setInterval method.

When this page is accessed concurrently by two or more users the page does not load and shows the error and sometimes the page shows 429 too many requests error.

So at the same time maximum 4 requests can occur at the user's end and that too if the scripts run at the same time.

The hosting provides me with 10 limited entry processes by default.

请花一些时间阅读(您自己的)引文。

您声明您每 700 毫秒对 te 服务器进行一次 AJAX,并且您通过使用 setInterval 来实现。每个用户最多 4 个请求,总共 10 个。如果有 2 个或更多访问者,事情就会变得困惑。

我认为这里的问题可能有多种原因:

由于有多个用户,您达到了 10 个请求的限制。

当 2 个用户在 8 点发出 4 个请求时,如果服务器上有任何其他请求,您很快就会达到最大值 10。3 个用户在 12 点发出 4 个请求,这根据您的问题达到了您的限制。

您可能正在对自己的服务器进行 DOS。

使用 setInterval 执行 AJAX 请求是不好的真的很糟糕。问题是,如果您每 700 毫秒请求一次服务器,而服务器需要超过 700 毫秒的响应时间,您就会堆积请求。您最终将仅通过一个用户达到任何限制。 (尽管在某些情况下,浏览器可能会保护您)。

如何修复

我认为 10 个连接(如果它实际上是 10 个连接,我不清楚)是非常低的。但是,您应该重构代码以避免使用 setInterval。在安排新请求之前,您应该使用类似 Promise 的方法来跟踪请求何时结束,从而防止请求堆栈堆积。根据经验,除非有充分的理由,否则永远不要使用 setInterval。使用更智能的调度几乎总是更好。

您可能还想研究如何更有效地处理这些请求,是否可以合并调用以检查消息和通知?

关于javascript - 网页偶尔显示507存储空间不足,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52931534/

相关文章:

javascript - filter(cond) 和 flatMap(x => cond 之间有区别吗? of(x) : EMPTY)?

javascript - 按钮单击更改颜色

javascript - 在网页中拖动本地镜像导致 Chrome 崩溃

HTML Bootstrap 轮播响应图片

javascript - 无法从 Flow Router (Meteor) 上的 url 读取 slug

javascript - 通过 woocommerce HTML 变体的数据集生成 JS 变量数组

javascript - 如何使用 jQuery 从其他网站抓取内容?

php - 压缩图像质量(从 4MB 到 2MB)而不丢失其尺寸

php - 使用动态字段更新 MySQL

html - 去除不必要的空格 - "unnecessary"是关键