LAMP - 多站点平台性能改进

时间:2012-07-11 03:38:08

标签: php apache .htaccess lamp

我正在为一家目前拥有80多个网站的公司提供多个网站的平台。网站运行正常(目前),页面显示不到2-3秒。然而,这些网站每天都有越来越多的观众,每天有1个网站,特别是每天接待数千名访客。

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

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

据我所知,.htaccess文件中指定的80多个网站对性能不是很好,但我可能错了。我假设我可以直接在Apache vhost文件中做些什么来提高性能?

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

2 个答案:

答案 0 :(得分:1)

我使用的产品使用了一个疯狂的.htaccess文件作为穷人的前控制器多年(不是我的设计)。那里有大约700条规则和表现并不是真正的问题。在出现问题之前,您更有可能对Internet连接,CPU或内存限制的带宽产生约束。

这一切都在一台服务器上运行吗?当一个硬件发生故障时,有70个网站出现故障,这听起来很残酷。我要考虑的第一件事是建立第二台机器并将其连接到某种类型的共享字段系统(如NAS),或者考虑使用像Amazon S3这样的服务来存储文件。将盒子放在负载平衡器后面,这样当一个失败时你就没有70个愤怒的顾客。然后,当你达到50%的利用率时,添加第三台机器,这样一个失败不会让另一个盒子翻倒。

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

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

答案 1 :(得分:0)

第一步是远离你的.htaccess&把东西放在apache配置中。 Apache配置解析一次&记住,而每次页面加载都会读取.htaccess。要么重写你的重写规则,要么做一些vhosts - 你走哪条路并不是真的太重要了。就个人而言,如果你只是打开域名,我更喜欢vhosts,为实际需要操作URL的情况保存重写规则。

由于您有许多具有共享代码核心的站点,因此操作码缓存(APC,Xcache等)将为性能带来奇迹。它阻止PHP阅读&编译每个页面加载的每个文件。这可以为您的表现做出惊人的事情,特别是如果您有大量的“标准”包含,而不是每页都需要。

一旦你超越了它,就该开始考虑缓存查询了。如果你有一个阅读量很大的网站,Memcached可以创造奇迹,如果你最终要去多个服务器,它会很好地扩展(如另一张海报所提到的,反正可能不是一个坏主意,只是为了保护你自己来自硬件故障)。