网站性能优化及Drupal性能优化拾遗

归类于Drupal 参与评论

阅读了一下drupal专业开发指南一本书,英文版的,里面有几点关于Drupal以及网站优化的建议,总结了一下,列在此处以供参考。

  1. 使用varnish作为前段代理。(一直推荐,从不间断!)
    也可以使用Boost+Varnish,两个并不冲突。如果内存足够多,可以把Boost的的缓存目录挂载在内存上,这样速度更快。
  2. 不要使用Drupal默认的404,因为走Drupal,比较慢,消耗系统资源。
    给htaccess或者apache的conf文件添加如下代码:

    <filesmatch "\.(png|gif|jpe?g|s?html?|css|js|cgi|ico|swf|flv|dll)$">
      ErrorDocument 404 default
    </filesmatch>
  3. 定时清理Session表。
    Drupal的session保存在数据库里面,设置不当会导致大量的垃圾数据,因此需要设置session时间短一点。添加如下代码到settings.php里面

    ini_set('session.gc_maxlifetime',   86400); // 24 hours (in seconds)
    ini_set('session.cache_expire',     1440); // 24 hours (in minutes)
  4. 阅读全文 《网站性能优化及Drupal性能优化拾遗》

1,135 Views , , ,

使用APC优化Drupal时要注意的细节

归类于服务器技术 参与评论

此前博文《drupal性能优化经验贴》中提到,一般类似drupal这样的PHP框架,我们为了提高性能必须要使用opcode来提高PHP的执行速度,PHP也有这样的模块。
我们都知道使用APC或者eAccelerator这样的opcode缓存可以提高网站的性能,但要注意的是需要根据网站的规模做细节的调优,只使用默认设置,可能带来的结果是性能还不如不用他们之前的效果。

这里要说的Case是,APC配置中有一项是shm_size,这是用来控制划分多少内存给APC使用,用来缓存文件或者opcode,对于文件缓存,原理大概相当于,预先读取到内存中缓存起来,下次再使用时就不需要占用磁盘I/O了,这个想法当然是很好的,依赖来说效果也是非常明显的。但使用drupal做的大型项目,开启的模块是很多的,那就意味了需要加载的文件很多,他们放到一起占用的内存是很可观的,一般APC默认的配置可能16M, 那么当文件缓存的内存占用超过16M之后,会有什么问题呢,带来的问题是include_once这样的函数花费很长时间决定如何加载文件,这里可能存在一些算法上的问题,需要觉得那些缓存丢弃,把新读取的文件缓存放在内存中什么位置之类的,总之在这种情况下,APC反而会让性能下降,大概下降3,4倍左右。

所以,在实际应用环境中,需要知道启用了多少个模块,需要提供大概多少内存,对于一个服务器提供多个站点,并且各个站点的Drupal是独立目录的场景中,因为APC的缓存机制,缓存所需内存更是成倍增加的。所以要么不用,用的话,一定要留出足够的内存,另外eAccelerator也是同样的道理,也许在内存溢出时,由于调度算法的差异,性能下降程度可能不一样,但总是会有影响的。

因为本文只记录了结论,没有包含分析过程,大家可以参考一下原文的详细分析。

High PHP execution times for Drupal, and tuning APC for include_once() performance

786 Views ,

顶部