1

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

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

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

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

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

4

2 回答 2

1

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

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

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

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

于 2012-09-07T17:16:16.517 回答
0

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

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

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

于 2012-09-07T18:41:00.360 回答