【问题标题】:LAMP - Multisite Platform Performance ImprovementsLAMP - 多站点平台性能改进
【发布时间】:2012-07-10 15:07:11
【问题描述】:

我正在开发一个平台,该平台为一家目前拥有 80 多个网站的公司提供多个网站服务。这些网站运行良好(目前),页面出现时间不到 2-3 秒。然而,这些网站每天都在增长,访问者越来越多,特别是 1 个网站每天接待数千名访问者。

我目前使用 LAMP 设置多站点结构,并使用 .htaccess 文件控制每个站点对物理文件的请求,然后根据主机和请求 uri 进行重写以计算出要显示的页面。

我以前没有遇到过这种情况,多站点设置全部由具有单独模板和单独文件库的单个代码库控制。我希望其他人可以建议我在为时已晚之前可以做些什么来提高性能。

据我所知,在 .htaccess 文件中指定 80 多个网站对性能并没有什么好处,但我可能是错的。我假设如果我可以直接在 Apache vhost 文件中做一些对性能更好的事情?

注意: * 我只使用 .htaccess 文件在去重写脚本之前检测物理文件是否存在,以防止 PHP 处理所有文件请求。

【问题讨论】:

  • “聘请系统管理员”来发表评论吗?
  • 通常您希望每个站点都有一个 Apache ,除非您使用的 Web 应用程序另有要求(例如 WordPress Multisite)。您正在使用哪些特定的网络应用,以及在哪些配置下使用?
  • 该应用程序适用于需要灵活地将自己的文件上传到自己网站目录中的非营利组织。他们的网站建立在一个文件库之上,该文件库提供具有搜索功能的目录、博客和各种其他项目。我创建了一个单一的文件库,以尽量减少将来需要在多个站点上解决的问题,并作为一个学习实验来加深我自己的知识。另外,我只想要一个数据库,因为父站点需要显示平台上所有站点的内容。
  • 配置:我从头开始编写所有内容,因为我对 MySQL 查询的执行时间非常严格。最初我打算使用 WordPress Multisite,但它并没有削减它,并且子站点不是以博客为重点的。我喜欢完全控制 :) 我添加的唯一附加组件是 Smarty 模板,因此组织可以使用标签而不能执行服务器端脚本。

标签: php apache .htaccess lamp


【解决方案1】:

多年来,我一直在开发一种产品,该产品使用超大的 .htaccess 文件作为穷人的前端控制器(不是我的设计)。那里有大约 700 条规则,性能并不是真正的问题。在这成为问题之前,您更有可能遇到 Internet 连接、CPU 或内存限制的带宽限制。

这一切都在一台服务器上运行吗?当单个硬件出现故障时,让 70 个网站瘫痪听起来很残酷。我会考虑的第一件事是设置第二台机器并将两者连接到某种共享文件系统(如 NAS),或者考虑使用 Amazon S3 之类的服务进行文件存储。将这些盒子放在负载均衡器后面,这样当一个失败时,您就不会有 70 个愤怒的客户。然后,当您的利用率达到 50% 时,添加第三台机器,这样故障就不会导致另一台机器翻倒。

如果管理过多,请考虑将您的解决方案移植到 PagodaBox 之类的东西上。它价格便宜,易于扩展,您不必担心处理上述冗余。

话虽如此,如果虚拟主机是一种选择,那么以这种方式组织它们可能更有意义。我只是怀疑它对性能有多大帮助。

【讨论】:

    【解决方案2】:

    第一步是离开你的 .htaccess 并把东西放在 apache 配置中。 Apache 配置被解析一次并被记住,而 .htaccess 在每次页面加载时被读取。要么移动你的重写规则,要么制作一些虚拟主机——你走哪条路并不重要。就个人而言,如果您只是打开域,我更喜欢虚拟主机,为实际需要操纵 URL 的情况保存重写规则。

    由于您有许多具有共享代码核心的站点,因此操作码缓存(APC、Xcache 等)将为性能创造奇迹。它使 PHP 不必在每次页面加载时读取和编译每个文件。这可以为您的性能带来惊人的效果,特别是如果您有大量“标准”包含,而这些并不是每个页面都需要的。

    一旦您超越了这一点,就该开始考虑缓存查询了。如果您有一个阅读量很大的网站,Memcached 可以创造奇迹,并且如果您最终访问多个服务器,它会很好地扩展(正如另一张海报提到的那样,无论如何这样做可能不是一个坏主意,只是为了保护硬件故障)。

    【讨论】:

      猜你喜欢
      • 2019-04-09
      • 2018-03-19
      • 1970-01-01
      • 2013-03-10
      • 2011-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多