如果我有一个网站托pipe在Linux服务器上。 假设该网站使用PHP和MySQL数据库。 如果我需要一天的时间来添加另一台服务器来支持网站的性能,那我该怎么做? 我需要购买非免费版本的MySQL吗? 我怎样才能使两个服务器之间的MySQL数据库存储数据? 我怎样才能连接两台服务器?
假设我们正在谈论一个最终应该扩展到无穷大的生产系统,这些规则是:
确保你了解正在发生的事情。 我认为这是一个Linux机器上的LAMP系统。 有些工具可以帮助您衡量性能:atop,collectd,iostat,vmstat,iptraf,netacct。 如果您正在使用Apache前端,请打开请求往返的日志logging(请参阅LogFormat%D)。 在MySQL中打开慢查询的日志logging,并设置阈值低(例如5秒),以便您可以在用户注意到之前捕捉有问题的查询。 使用mysqlreport来查看是否应该更改您的mysqlconfiguration。 在您的PHP代码中插入日志语句,如果相关部分的完成时间超过可接受的时间,则会触发。 使用例如logwatch监视这些行的日志,并在发生时通知您。
一旦你理解了你的系统的哪些部分产生负载,就开始看你的devise,使其更加模块化。 然后,您可以创build工具来独立测量每个模块的性能,以确保其符合您的性能要求。
在测量并发现问题之前,不要担心系统的性能。
如果你应该测量和发现你的瓶颈数据库,你的第一步应该是将数据库移动到一个单独的服务器从您的PHP安装。 这会给你很多额外的空间。 除非你正在处理一个非常大的数据库,或者非常昂贵的查询或者大量的用户,大多数情况下单个服务器就足够了。 只要确保你有足够的内存来存储整个数据库。 单服务器SQL安装更容易处理,并且通常会为您提供更好的性能。
现在调查并安装某种监控系统。 了解您的系统如何响应各种负载,并随着负载的增加开始performance不佳。 这样,您就可以在需要时做出明智的决定。
缩放MySQL的一个简单方法是设置主从复制并直接写入主服务器并读取到从服务器。 企业版不需要,因为这在社区版本中是受支持的。
这里是MySQL的howto: http : //dev.mysql.com/doc/refman/5.0/en/replication-howto.html
有几种方法可以做到这一点。 您可以查看Master-Master复制的DNS数据库和循环。 应该是免费的,没有许可证。