Drupal高性能网站架构分享-Drupal Beijing Meetup

3,279 views

Published on

Drupal 北京聚会slides 之 Drupal高性能网站架构。
At Drupal meetup in Beijing.
Drupal Performance Optimizations
原始文件可以从
http://www.drupal001.com
下载
By Robbin Zhao (赵高欣)

Published in: Technology
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,279
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
18
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

Drupal高性能网站架构分享-Drupal Beijing Meetup

  1. 1. DRUPAL高性能网站最佳实践 Drupal性能优化经验分享 赵高欣 (Robbin Zhao) zhaogaoxin@gmail.com robbinzhao@zinch.comSaturday, 15 October,
  2. 2. 内容纲要 ⼀一. 使用运行最快的语言 二. 使用最高效的PHP 三. 使用最快的Drupal发行版 四. 让数据都在内存中处理 五. 让距离不再遥远 六. 保证数据的合理性 七. Drupal性能相关模块 八. 展望、问题及讨论Saturday, 15 October,
  3. 3. 使用运行最快的语言 从图中我们可以看到,不 同的语言,运行速度差异 是非常大的。 ??? 语言跟Drupal有什么关系 呢? Let’s continue ... Drupal与高性能网站架构 http://www.drupal001.comSaturday, 15 October,
  4. 4. 使用运行最快的语言 Web开发中必须的语言 -》 HTML HTML是WEB开发中最快的语言, 没有之一! Drupal与高性能网站架构 http://www.drupal001.comSaturday, 15 October,
  5. 5. 使用运行最快的语言 Web开发中尽量缓存静态页面,尽量把页面动态的部分独立处理, 用ajax/iframe调用,整个页面是静态页面的,少量动态用ajax刷 新。 国内的QQ、SINA,已及Google等网站都采用这种技术。 使用Boost静态化你的Drupal站点! Boost模块经过稍微调整和修改。 1. 匿名用户使用静态HTML页面 2. 设置某些角色(普通认证用户)也使用静态HTML缓存。 对于一个普通网站,90%以上的都属于普通认证用户和匿名用户, 因此,经过这样修改可以大大提高性能。 Drupal与高性能网站架构 http://www.drupal001.comSaturday, 15 October,
  6. 6. 使用运行最快的语言 用Boost模块配合NFS网站架构图 详情参阅: Drupal性能优化之-将Boost模块用到极致 http://www.drupal001.com/2011/09/drupal-boost-tips/ Drupal与高性能网站架构 http://www.drupal001.comSaturday, 15 October,
  7. 7. 使用最高效的PHP PHP面临的问题 1. PHP本身的速度比较慢(参见前面插图) 2. PHP框架,Drupal/Zend等,加载相当多的PHP文件,降低执行 速度。(每次请求都要加载) !!!OPCODE 推荐使用eAccelerator。 注意:APC的某个版本在NFS环境下有bug,不能正确缓存。 Drupal与高性能网站架构 http://www.drupal001.comSaturday, 15 October,
  8. 8. 使用最快的DRUPAL发行版 Drupal本身性能问题 1. 本身的一些代码性能不高 2. SQL没有优化、数据库不支持主从以及Views使用中的一些问题 等。 官方网站 http://pressflow.org/ Drupal与高性能网站架构 http://www.drupal001.comSaturday, 15 October,
  9. 9. 让数据都在内存中处理 能在内存中处理的决不能放到外存中!! 使用缓存! ⼀一般情况下,我们使用memcache。大型站点,使用分布式memcache,并且 memcache常常和Application不在同⼀一台服务器上面。 对于大型Drupal站点,这里会有⼀一个性能问题:内部网络IO。 由于Drupal的某些缓存比较大,比如theme-registry, content-type-info, locale翻译 信息,对于⼀一个较复杂的站点,这几个缓存加起来至少1M以上,大到3-5M。如 果⼀一个request需要3M的缓存,那么1000request需要3G的流量,这样即便是内网 的IO,也会造成很大的瓶颈。 可以先把这样的数据缓存在本机的内存/硬盘中,减少 网络请求。本机内存允许的话,将目录挂载到内存上。 参考文章: http://www.drupal001.com/2011/10/drupal-custom-cache-tips/ Drupal与高性能网站架构 http://www.drupal001.comSaturday, 15 October,
  10. 10. 让距离不再遥远 请使用CDN加速你的网站。 Drupal CDN模块 http://www.drupal.org/project/cdn Drupal与高性能网站架构 http://www.drupal001.comSaturday, 15 October,
  11. 11. 保证数据的合理性 数据最重要! (大型站点) 1. 不清楚的模块谨慎使用。(content_profile) 2. 多一些custom模块。(脱离node) 3. CCK字段不要共享。 4. ... content-profile模块使用node作为user的profile,把user和node关联 起来,数据库结构及其不合理。查询慢,不能分离user到单独服务 器。 cck字段共享,drupal会把这个字段单独拿出来,做一个独立到 表。比较慢,也不合理。 Drupal与高性能网站架构 http://www.drupal001.comSaturday, 15 October,
  12. 12. DRUPAL性能相关模块 模块 描述 Boost 静态缓存 Varnish 反向代理、缓存。 Javascript Aggregator Javascript加载。 Memcache API and Integration$ Memcache集成。 Block Cache Block缓存。 CacheExclude$ 缓存策略。 High-performance JavaScript callback handler Ajax callback处理。 Apache Solr 全文搜索。 No Anonymous Users 匿名用户session处理。 Drupal与高性能网站架构 http://www.drupal001.comSaturday, 15 October,
  13. 13. 展望、问题、 讨论 关于Drupal性能的思考: 1. 模块/代码动态加载。 比如:autoload,函数的命名必须和模块一致。 2. node/cck用独立的表处理每中内容类型。 横向扩展表,数据共享,node类型共享。 3. PHP on jvm || PHP c/c++ Quercus, HipHop(Facebook) 4. Drupal7 CCK性能问题 每一个独立字段,单独分配一张数据库表,性能 如何? Drupal与高性能网站架构 http://www.drupal001.comSaturday, 15 October,
  14. 14. 全剧终! zhaogaoxin@gmail.com http://www.drupal001.comSaturday, 15 October,

×