面向大型用户群的性能提示

时间:2011-01-21 作者:fuxia

我正在准备一个有许多用户(10万以上)的网站。由于输出取决于当前用户与某些自定义帖子类型和分类的关系,静态缓存不会有多大帮助。

除了为用户使用一个单独的表和从一个无cookieless域提供静态文件之外,我还能做些什么来提高性能?

例如:我应该使用InnoDB还是MyISAM?索引提示?

显然,我还不够清楚。很抱歉

所有用户都已登录。总是其他人只能看到起始页。该网站为在线课程提供付费材料。

我正在寻找与大用户群相关的提示。基本的一般性能优化,如压缩、延迟加载脚本、精灵等都很有用,但这不是我想要的。

3 个回复
SO网友:Backie

你可以用"W3 Total Cache" 它不是静态文件缓存系统。然而,它使用诸如操作码缓存、memcached和对象缓存之类的东西来减少页面加载时间。APC或另一个opcache将是对服务器的一个很好的补充,并且使用轻量级httpd代替臃肿的Apache。

对用户强制GZIP也是一个好主意,因为大多数没有收到GZIP文件的人实际上都能够收到GZIP文件。请求头可以通过防火墙等进行管理。

然而,80%的页面负载通常是前端,所以这是您需要处理的地方。“W3 Total Cache”实现了CSS和JavaScript的串联以及文件的缩小。如果您已经正确地将JavaScript和CSS文件显示在需要它们的页面上,那么这是最好的选择。然而,大多数网站都没有,所以它额外需要的配置只会让人讨厌。此外,文件的缩小通常会导致文件被破坏,所以我只需要将文件串联起来。

使用无cookieless域提供静态文件将节省数毫秒,但要真正节省页面加载,使用CDN将为每个项目节省大约100毫秒。此外,使用多个域来服务文件将增加旧浏览器的页面负载,因为旧浏览器对每个域可以执行多少并发文件请求有限制。

您可能还需要考虑使用http://smush.it 以节省图像的大小而不损失质量。(https://github.com/icambridge/filesmush 通过smushit运行本地文件的脚本。https://github.com/tylerhall/Autosmush 用于通过smushit在S3上运行图像。)

如果你的评论远远超过了你的帖子,那么应该使用InnoDB。否则,MyISAM可能会更快。

SO网友:bueltge

也许您可以使用默认的innodb标准更改为mySQL 5.5。此外,它还改变了使用负载平衡器并在另一个数据库(额外服务器)中分离用户表的做法。

SO网友:anu

同意@Backie所写的内容。

wp supercache还提供了使用APC的对象缓存实验支持,以及CDN支持。我发现对象缓存会导致(严重?)的奇怪行为编写插件。

MyISAM通常会更快,除非您有大量的写操作(主要是注释),因为它只锁定一个页面,而不是整个表。

确保打开MySQL慢速查询日志记录,并检查actual 瓶颈是,然后使用EXPLAIN确定是否需要添加索引等。This page 如果你以前没有使用过解释,这是一个很好的介绍。

这个mysqltuner script 还可以帮助您确定可能需要在哪里优化MySQL配置。

结束

相关推荐

Corrupt Wordpress Database

我认为这是最奇怪的文字印刷问题。一个拥有大量帖子数据库的客户网站已经有了自己的想法。前一分钟一切似乎都很好,接下来的帖子、类别和标签都不见了。此时仪表板告诉我9个类别中有2309个帖子,但当我单击admin中的categories链接时,列表中没有任何帖子。我可以在admin中看到所有帖子,但尽管它们过去被分配到类别并列出标签,但现在它们都“未分类”,没有标签。很明显,wordpress数据库在某种程度上已经损坏,但从哪里开始尝试修复呢!?以下是我迄今为止测试的内容:插件–我关闭了所有当前的插件。主题–我