7

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

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

我目前托管了大约 400 个站点,对冗余和安全性有相当的需求,因此我已经超越了单机解决方案——但还没有达到完整的 ISP 或专门的网络托管公司的水平。

任何人都可以指出我在建立一个伟大的 apache 网络农场以确保安全和未来扩展方面的一些好的专业知识的方向吗?

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

我对这个设置很满意,但它似乎过早地窒息了负载。

谢谢!!

- 更新 -

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

4

3 回答 3

3

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

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

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

使用这些工具来识别最慢/最大的违规者并专注于他们。尝试改进和测量,看看它是否真的提高了性能。

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

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

于 2008-09-20T17:47:58.553 回答
2

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

数据库,apache,网络,cpu,内存,io吗?您是否需要更多内存、分片+)、DiskIO、NFS 网络负载、用于进行全表扫描的 CPU?

当您发现问题出在哪里时,您可能会遇到这样的问题:由于代码的工作方式,它不足以扩展基础架构,并且您最终需要创建更多当前设置的实例或制作代码不同。

于 2008-09-20T15:49:58.137 回答
0

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

于 2010-06-02T19:55:19.287 回答