理想的多服务器LAMP环境

时间:2020-03-06 14:29:12  来源:igfitidea点击:

关于在单个盒子上设置LAMP堆栈,或者将MySQL移到它自己的盒子上,有很多信息,但是超出此范围似乎还没有很好的记录。

我当前的Web环境存在容量问题,因此我正在寻找有关配置调整,确定瓶颈,安全性等的最佳实践。

我目前托管约400个站点,对冗余和安全性有相当大的需求,因此我已经超越了单一解决方案的范围,但还不具备完整的ISP或者专门的Web托管公司的水平。

谁能指出我在建立一个伟大的apache网络农场以确保安全和将来扩展方面的一些专业知识的方向?

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

我对这种设置感到非常满意,但似乎过早地扼杀了负载。

谢谢!!

  • 更新 -

原来,"阻塞负载"与mod_log_sql有关,我用它将我的apache日志发送到mysql数据库。通过重新配置Web服务器以将其sql语句写入磁盘文件,然后创建一个单独的过程以将这些sql语句提交到数据库,可以使Web服务器更快地释放线程并处理更大的负载。

解决方案

教科书上的做法是用实际经验数据确定瓶颈。

是数据库,apache,网络,cpu,内存,io吗?我们是否需要更多RAM,分片(+),DiskIO,NFS网络负载和cpu来进行全表扫描?

当我们发现问题所在时,由于代码的工作方式,可能会遇到其不足以扩展基础结构的问题,最终我们需要只创建当前设置的更多实例,或者进行代码不同。

我们需要能够确定瓶颈并测试改进。

要确定瓶颈,我们需要使用系统的报告工具。一些例子:

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

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

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

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

作为可伸缩性的第一步,我还建议我们将内容卸载到Edgecast等CDN上。使用当前的两个内容服务器作为其他Web服务器。