理想的多服务器LAMP环境

7
在单一主机上设置LAMP堆栈或将MySQL移动到自己的主机上,关于如何扩展这个过程似乎没有很好的文档记录。我的当前网络环境存在容量问题,因此我正在寻找有关配置调整、确定瓶颈、安全等方面的最佳实践。我目前托管着大约400个站点,需要一定的冗余和安全性,因此我已经超出了单一主机的解决方案——但还没有达到完整ISP或专用Web托管公司的水平。有人能指导我如何建立一个出色的Apache Web Farm以便于未来的扩展和安全性吗?我的Web环境由2个冗余MySQL服务器、2个冗余Web内容服务器、2个负载均衡前端Apache服务器组成,这些服务器通过NFS挂载内容,并在它们之间共享Apache配置和会话目录,还有一个单独的“开发者”服务器,它也通过NFS挂载Web内容,并包含所有开发人员帐户。我对这个设置感到非常满意,但它似乎在负载方面表现不佳。更新:事实证明,“负载窒息”与我使用的mod_log_sql有关,我使用它将我的Apache日志发送到MySQL数据库中。通过重新配置Web服务器将其SQL语句写入磁盘文件,然后创建一个单独的进程将其提交到数据库,可以使Web服务器更快地释放其线程,并处理更大的负载。

我会将标题改为“理想的中级LAMP环境”。 - givanse
3个回答

3
你需要能够识别瓶颈并测试改进。
要识别瓶颈,您需要使用系统的报告工具。以下是一些示例:
- MySQL有一个慢查询日志。 - Linux提供了诸如负载平均值、iostat、vmstat、netstat等统计信息。 - Apache有访问日志和服务器状态页面。 - 编程语言有像Pear Benchmark这样的分析器。
使用这些工具来识别最慢/最大的问题,并集中处理它们。尝试改进并测量以查看实际是否提高了性能。
由于复杂系统中总会有可以更快的东西,并且随着系统的增长,不同的功能将开始变慢,因此这变成了一个永无止境的循环。
根据您系统的描述,我首先会怀疑NFS服务器上的磁盘IO和网络IO,然后再查看MySQL查询时间。我还会检查共享会话的性能。

2
做这件事的学校方法是使用真实的经验数据来确定瓶颈。可能是数据库、Apache、网络、CPU、内存、IO等问题?你需要更多的RAM,分片(+),是磁盘IO、NFS网络负载、用于执行全表扫描的CPU引起的问题吗?当你找到问题所在时,你可能会遇到一个问题:仅仅扩展基础设施还不够,因为代码的工作方式,你最终需要创建更多的当前设置实例或改变代码。

http://www.scribd.com/doc/272292/How-Digg-com-uses-the-LAMP-stack-to-scale-upward - svrist

0

在可扩展性方面,我还建议您作为第一步将内容转移到像Edgecast这样的CDN上以减轻负载。同时,可以使用您当前的两个内容服务器作为额外的Web服务器。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接