
请帮忙! 几个月来我们一直在苦苦挣扎。 本周,我们将RDS实例上调至性能最高的实例,尽pipe事件已经减less,但我们仍然将DB数量突然降至100%。 它从哪里来。 有时候是凌晨2点,有时是中午。
我排除了一个DOS – 我们的页面访问日志有正常的stream量
我排除了memcached突然死亡(点击和错过继续正常)。
显示PROCESSLIST,而我们有问题报告队列中的500个查询。 如果我杀了他们或重新启动服务器,他们只是不断回来,然后终于知道,我们的服务器恢复正常。 有时长达3个小时。
当服务器最终恢复正常时,我们执行不良的查询需要0.02秒的时间才能执行,但是当我们处于100%CPU物理阶段时,那些查询从来没有执行完毕。
请帮忙!!!!! 有人知道关于MYSQL查询优化的一切吗? 服务器是否会突然间使用不同的索引,这是否会使其变成螺旋状?
http://www.mysqlperformanceblog.com/2010/09/10/cache-miss-storm/
事实certificate,我们的问题是一个caching风暴小姐,AKA小姐踩踏。
我们通过实施50%的caching过期来解决这个问题。 基本上,对于内存caching中的每个项目,我们都会创build一个类似的密钥加上附加的“重新生成”string的第二个caching项目。 该项到达典型caching过期时间的50%,表示下一个请求我们正在接近caching过期,下一个请求将需要尝试重新生成caching。
这可以防止用户试图同时重新生成caching的风暴,并确保我们的caching具有始终保持新鲜的最佳机会!
一个棘手的追查!