首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >优化ajax以降低mysql服务器负载

优化ajax以降低mysql服务器负载
EN

Stack Overflow用户
提问于 2012-09-11 06:31:15
回答 2查看 690关注 0票数 3

我有一个拍卖网站,有时负载很重&主要是mysql被认为消耗了大量的内存和cpu。我的情况如下。

对于每个在线用户,每秒都会有一个ajax查询发送到mysql &观察拍卖,对照之前的值检查投标计数。如果有人出价,则计数不同,因此此ajax调用另一个ajax,该ajax检索记录并在表中显示特定于观看/登录的用户的出价。我将其限制为前10个,以减少负载。

然而,问题是,如果有50个在线用户,其中一个用户发出了报价,50个查询进入mysql,所有这些查询都检测到报价计数发生了变化,并发出进一步的查询来获取记录,以显示与每个用户对应的报价。

THe更大的问题是,如果有500个用户在线,那么有500个查询进入mysql来检测变化&如果下了价,另有500个查询(一个特定于每个在线用户的查询)进入mysql,可能会使服务器崩溃。

注意:目前只有一个mysql连接对象在php中用作单例,它负责执行查询、检索记录等。

我本质上是在寻找一种解决方案,如果500个用户在线,那么500个查询不会转到mysql,但即使其中一个人对特定的拍卖进行了出价,所有的查询都应该得到更新。任何想法/建议都非常欢迎。

对于这种情况,我如何才能最好地实现一个解决方案来减少mysql上的负载?

在资源方面,我们相当不错,在Hostgator上做一个VPS4。唯一的问题是cpu /内存使用率,当许多用户竞标时,cpu/内存使用率为95%。

感谢一些建议

EN

回答 2

Stack Overflow用户

发布于 2012-09-11 06:43:04

听起来你可能想看看memcached或者其他一些缓存服务。您可以让一个进程查询MySQL并将其更新到memcached中,而ajax则直接在memcached中进行查询以检索行。

Memcached不保持关系的一致性,并且每次查询它比查询MySQL消耗的资源要少得多。

PHP有一个非常好的接口来处理memcached:Memcache

The website of the memcached project.

还有一些其他的缓存服务。您可能还想查看MySQL中的查询缓存,但这仍然需要几个到MySQL的连接,这两种方式都非常消耗资源。

票数 0
EN

Stack Overflow用户

发布于 2012-09-11 07:24:10

在短期内,您也可以只运行详细的查询。当没有需要更新的内容时,它将不返回任何内容(替换第一个查询!)。

这可能会为缓存或对查询速度进行更深入的分析赢得一些时间。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12360342

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档