【发布时间】:2013-10-29 16:54:17
【问题描述】:
我的服务器的平均负载飙升至 150(服务器实际上非常强大,8cpus 太多 RAM 等),其原因是 MySQL 占用了我所有的 CPU 700%!
我知道 Apache/MySQL 进行了调整以获得更好的性能,我已经做了一些,它工作了一点,但与我需要的结果相去甚远。
我所有的问题都来自这种情况:当基于网站文件的缓存失效时,PHP 脚本运行以重新制作这些缓存区域,生成 MySQL 查询(相当繁重的查询,也对它们进行了一些优化,但它们仍然对 MySQL 造成负担)。这很正常,问题是当 100 个人在缓存无效的那个精确时间访问网站时,他们会生成 100 次相同的查询 - 这使得 MySQL 一直与我的服务器一起下沉。
是否有任何 MySQL 解决方案来防止相同查询的重复?还是有任何其他技术可以解决这种特殊情况?
【问题讨论】:
-
也许可以确保您的页面缓存在稍有不同的时间失效,因此您不必一次全部重建它们
-
绝对是,但即使一个页面缓存失效,当时有 100 个人访问同一页面也会杀死它!
-
听起来缓存不应该由访问您网站的用户触发,而是由计划的事件/联合作业触发。网上有很多方法,随便搜一下就可以了:)
标签: php mysql scalability