故障排除/缩放LAMP堆栈中的大量负载问题?

我们正在运行一个LAMP栈(Perl,MySQL),最近经历了大约三倍的数据库负载,这是由于使用量增加和用户行为改变……这使系统超载。

使用相当标准的三层体系结构,大量的networking服务器(似乎不是问题),一些专业服务器(不认为这是问题),现代Sun硬件上的一个相当大的MySQL数据库(72GB )的内存(DB似乎是目前的瓶颈)。

我猜想有两个问题:

1)任何人都知道他们可以指示我们帮助我们解决负载问题的一些资源吗? 购买硬件肯定是在桌面上; 正如configuration更改…

2)任何人都有经验大规模扩大LAMP栈谁将有兴趣付费咨询工作? 我们立即需要一个人,最好愿意前往罗利北卡罗来纳州,帮助现场…首要目标是摆脱目前的危机, 第二个目标是帮助在接下来的两年里再增加10倍的使用量。

(作为问题#2的子问题:你会去哪里寻找这样的顾问?)

提前致谢! 史蒂夫

好消息是,如果是数据库问题,那么许多types的数据库工作实际上可以通过远程连接有效地完成。 如果您能够快速将VPN设置到服务器群集和远程SSH /terminal帐户,那么您的顾问范围将迅速扩大。

我从来没有和Percona一起工作过,但是他们的MySQL可扩展性+性能书是非常好的 ,就像他们在Maatkit上的工作一样。 其他回馈社区的顾问包括Jeremy Cole @ Proven Scaling和Open Query团队 。

购买硬件肯定是在桌面上; 正如configuration更改…

那些应该是我的候选人名单中的#2和#3,#1是数据库devise。 通常情况下,当数据库负载突然膨胀而没有相应的使用增长时,就会出现O(n ^ m)的问题。 连接中的全表扫描,低效的非规范化,n + 1故障,可能会在插入数据时locking争用,类似的东西。 解决scheme可以像添加一些精心挑选的索引一样简单,或者像重新devise数据模型一样复杂。

多年以来我一直没有使用MySQL,但是我记得的是:你可以让它logging所有的请求和执行时间。 你应该看看这个日志,找出导致数据库成为瓶颈的原因。