Web服务器非常慢,而CPU为0-5%,RAM为500/1024



我编写了一个网络聊天,它通过ajax命令刷新来显示新条目。此命令启动了一个 php 文件,然后创建了显示最新 25 个条目的聊天日志。Ajax每秒为每个用户刷新一次。

然后,当大约有 10 个用户在线时,整个网站变得令人难以置信的缓慢并且崩溃了。我认为,缓慢来自 php 脚本刷新的频率太高(每秒>10 次)。

我看了一下我的虚拟服务器,启动了 htop 以查看进程。CPU 几乎没有使用。它在0%之间,峰值高达5%。RAM只使用了一半,大约500 MB的1GB(这是标准的,甚至在聊天上线之前)。

我通过创建一个仅创建聊天日志的 1 个 html 缓存站点的 cron 作业并将该站点提供给用户来解决此问题。

但是,我仍然想知道为什么服务器会这么慢,即使 CPU 和 RAM 根本不忙?

如果你没有用尽 cpu,那么它就会阻塞其他资源。 一些可能的候选人:

  • 每个请求都有数据库查询吗? 如果是这样,他们需要多长时间?

  • 有多少线程可用于处理请求? 每个请求需要多长时间? 如果只有一个线程为请求提供服务,那么一旦请求花费的时间超过 10 毫秒,每秒 100 个请求的传入负载(听起来就像您正在这样做)就会开始备份,充其量。

作为一般策略,我会添加计时器并尝试将问题一分为二。 在请求的开头和结尾花时间,如果这很小,那么您就知道延迟在其他地方。

此外,对于此类工作负载,应考虑推送更新而不是轮询。 这样,您可以推送单个消息来更新侦听客户端,他们不必频繁轮询即可立即获取新消息。

相关内容

  • 没有找到相关文章

最新更新