我有一个拍卖网站,有时负载很重,而且大多数情况下 mysql 会消耗大量内存和 cpu。我的情况如下。
对于在线和观看拍卖的每个用户,每秒钟都会有一个 ajax 查询到 mysql,以检查出价计数与先前的值。如果有人出价,则计数不同,因此此 ajax 会调用另一个 ajax 来检索记录并在表格中显示特定于正在观看/登录的用户的出价。我将其限制为前 10 个以减少加载。
但是问题是,如果有 50 个用户在线,其中一个人出价,则 50 个查询进入 mysql,并且他们都检测到出价计数已更改并发出进一步的查询以获取记录以显示与每个用户对应的出价。
更大的问题是,如果有 500 个用户在线,那么 500 个查询进入 mysql 以检测更改,如果出价,另外 500 个查询(每个在线用户特定的查询)进入 mysql 并可能导致服务器崩溃。
注意:目前有一个 mysql 连接对象用作 php 中的单例,负责执行查询、检索记录等。
我本质上是在寻找一个解决方案,如果 500 个用户在线,则 500 个查询不会转到 mysql,但即使其中一个人为特定拍卖出价,他们都应该得到更新。任何想法/建议都非常欢迎。
我怎样才能最好地为这种情况实施一个解决方案来减少 mysql 的负载?
资源方面我们还不错,在 Hostgator 上做一个 VPS4。唯一的问题是 CPU / 内存使用率在许多用户出价时为 95%。
欣赏一些建议