理想的多服务器LAMP环境

时间:2008-09-20 15:13:39

标签: apache webserver lamp web-farm

有很多关于在一个盒子上设置LAMP堆栈的信息,或者可能将MySQL移动到它自己的盒子上,但是增长超出这个范围似乎没有很好地记录。

我当前的网络环境存在容量问题,因此我正在寻找关于配置调优最佳做法,确定瓶颈安全性

我目前拥有大约400个站点,对冗余和安全性的需求非常公平,因此我已经超越了单机解决方案 - 但不是完整的ISP或专门的网络托管公司。< / p>

为了安全和未来的扩展,有没有人能指出我在建立一个优秀的apache网络农场方面的一些优秀专业知识的方向?

我的网络环境包括2个冗余MySQL服务器,2个冗余网络内容服务器,2个负载平衡前端apache服务器,通过nfs挂载内容,共享apache配置和会话目录,以及单个“开发人员”服务器,它还通过nfs安装Web内容,并包含所有开发人员帐户。

我很满意这种设置,但它似乎过早地阻塞了负载。

谢谢!

- UPDATE -

事实证明“加载时的阻塞”与mod_log_sql有关,我用它将我的apache日志发送到mysql数据库。通过重新配置Web服务器以将其sql语句写入磁盘文件,然后创建一个单独的进程将其提交到数据库,它允许Web服务器更快地释放其线程,并处理更大的负载。

3 个答案:

答案 0 :(得分:3)

您需要能够识别瓶颈和测试改进。

要识别瓶颈,您需要使用系统的报告工具。一些例子:

  • MySQL的查询日志很慢。
  • Linux提供了load average,iostat,vmstat,netstat等统计信息。
  • Apache具有访问日志和服务器状态页面。
  • 编程语言具有分析器,如Pear Benchmark

使用这些工具识别最慢/最大的罪犯并专注于他们。尝试改进并测量它是否真正提高了性能。

这成为一个永无止境的循环有两个原因:复杂系统中总有一些东西可以更快,随着系统的增长,不同的功能将开始变慢。

根据您系统的描述,我的第一个预感是NFS服务器上的磁盘io和网络io,然后我会查看MySQL查询时间。我还会检查共享会话的性能。

答案 1 :(得分:2)

教科书的做法是用真实的经验数据来识别瓶颈。

database,apache,网络,cpu,内存,io?你需要更多ram,sharding+),还是DiskIO,NFS网络负载,用于进行全表扫描的cpu?

当你发现问题出在哪里时,你可能遇到的问题是它不足以扩展基础设施,因为代码的工作方式,你最终需要创建更多的当前实例设置或使代码不同。

答案 2 :(得分:0)

我还建议作为可扩展性方面的第一步,将您的内容卸载到像Edgecast这样的CDN。使用当前的两个内容服务器作为其他Web服务器。