跳转到主要内容
祈福的熊猫 提交于 29 September 2012

原文地址:http://drupal.org/node/2601

Drupal站点的性能主要取决于三个因素:网站的目标、网站流量的资源需求以及相关技术系统的性能和配置。

确认Drupal的性能目标

如果您网站的目标是像谷歌一样有快速响应的用户体验,那么您应该特别注意简单性,并确保服务器有足够的资源使网页能在1.5秒或更短的时间里展现。如果您网站的目标是成为一个美观的网站,您可以选择一个强大的主题,可以使用大量的Javascript完成前台的交互功能,但同时页面的加载速度了会受到影响。无论选择哪种,您应该在头脑中都要有明确的目标,为达到目标的效果而着手调整网站性能。

分析网站的流量和资源消耗

尽量不要使用其他人员提供出来的现成的性能配置。因为每个站点都是独特的,别人的配置不一定适合您的站点。站点的性能需要根据网站流量将对带宽、CPU、内存、磁盘I/O这四种资源造成影响来进行配置。

描述您网站的性能负载:带宽、匿名用户页面访问量、并发页面访问量、并发表单提交数量,这些数据对于建站网站都是很重要的。

了解和配置堆栈性能

配置服务器性能已经超出Drupal手册的内容范围,这需要您参考服务器硬件和软件上的每个组件来决定。在多数情况下,您可能无法控制到服务器的硬件和软件组件。为此我们提供一个配置选项列表。很多站长都认为这个列表效果不错。要注意的是:在更改配置之前,请备份您现在的配置;更改时,请多加小心。

  1. 了解LAMP的性能。《LAMP性能学习》(LAMP performance study)指出:Apache性能受带宽限制、PHP性能受CPU限制,MySQL性能受内存和磁盘读写限制。一定要将您的软件编译到最高性能。Linux 2.6.3x内核之后,进程管理和文件系统有很多性能上的改善(参阅 Linux2.6更新日志),因此使用较新的Linux版本或更新的内核是非常可取的。您还可以参阅高流量访问下的服务器优化
  2. 分析您网站的性能瓶颈:CPU、内存、带宽、I/O。只要确认了导致网站性能问题的原因,就可以进行有针对性的配置和升级了。使用top命令和ps命令可以分析哪个进程占用了过多的内存或CPU。使用netstat命令或mrtg / awstats等在线功能,可以用来确认网络问题。
    top
    ps -aux
    netstat -anp | sort -u
    如果您的服务器上还运行着其他应用程序,如邮件、SSH、杀毒软件、垃圾邮件过滤、Web服务以及其他自定义程序,这些程序也会消耗系统资源,最好能将其转移到一个新的服务器上。
  3. 恶意用户,如网络爬虫(crawler)、新闻聚合器(aggregator)以及垃圾邮件发送者(spammer)等,会消耗更多的资源。搜索引擎在抓取您网站内容的同时,会导致网站性能降低,即便它以匿名用户的身份去抓取消耗资源较少的缓存页面。您可以在robot.txt中添加这样的代码,来降低搜索引擎的抓取速度:

    User-Agent: *
    Crawl-Delay: 10
    Disallow: /archive
    这里的10,是在几秒钟内页请求之间的延迟。如需要禁止搜索引擎收录您的网站的部分内容,请参阅使用robots.txt控制影响页面被收录。 一些RSS客户端设置检查聚合器更新过于频繁。查询日志中从一个特定的IP地址发来过多的请求。垃圾推送者(spammer)有很多种方式消耗您网站的资源,要确保您的网站有一个垃圾拦截策略。自4.7版本以来,Drupal有一个机制,以确保表单源于自身Drupal站点,而不是从其他远程服务器上提交。这可以有效地防止垃圾推送者从远程创建大量的垃圾留言与引用。
  4. Apache性能。​​Apache的性能通常受带宽限制,所以您应该知道您服务器的带宽是多少。如果您不清楚这个问题,您可以询问您的服务提供商,也可以使用类似于lperf这样的工具查询。如果指令写在.htaccess文件中,Apache的mod_rewrite会模块消耗更多的资源。如果您能修改的Apache配置,那么这些指令应该被移动到httpd.conf中。您还可以配置Apache的MaxSpareServers, ServerLimit, MaxClients.。 CGI运行相对缓慢,mod_php更快且更受欢迎,FastCGI不仅快速,而且安全。更多请参配置Apache,发挥最高性能
  5. PHP性能调整:CPU的消耗与优化:使用PHP优化软件(组件)如:Alternate PHP CacheZend Optimizer、eAccelarator a development of mmcache PHP。更多内容参阅优化PHP
  6. MySQL性能调整
  7. 带宽:图像或媒体可能是带宽消耗的最大来源,这将限制Apache的性能。为了保证图像的快速传递,主题应该准确地调用图像,以直接降低寻找图像文件的PHP开销。更多详情将在未来提供。
  8. Drupal的资源消耗:分析内存使用情况,测量数据库查询时间和重复模块,或网页devel.module的查询。 网站上启用了模块的数量可能会影响性能,但应采用上文所述的技术衡量。如果模块有耗时的查询,应该调整表的结构或使用MySQL的优化工具,如"ANALYSE"和"EXPLAIN"。如果你的主题有很多的PHP调用,则还需要分析主题资源的消耗。
  9. 配置Drupal的性能:类似聚合内容和周期性作业(Cron Jobs)是很消耗资源的。如果周期性作业(Cron Jobs)过于频繁,会网站性能有持续性的影响。对于匿名用户而言,Drupal的缓存非常有效。该设置位于“管理” - “站点配置” - “性能”(admin/settings/performance)中。
  10. 服务器架构考虑可扩展性和性能:单独的Web服务器和数据库服务器,MySQL的复制拓扑结构,集群服务器。