首页 高性能LAMP程序设计

高性能LAMP程序设计

举报
开通vip

高性能LAMP程序设计 高性能LAMP程序设计 超群.com @fuchaoqun http://www.fuchaoqun.com PHP篇 Performance… 丌要用array_key_exists,用isset来判断键值是否在数组中 如有可能,采用static静态方法 避免使用__set, __get等魔术方法 使用echo代替print() 使用include、require代替include_once、require_once @操作符是邪恶的 丌要把 count/strle...

高性能LAMP程序设计
高性能LAMP程序 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 超群.com @fuchaoqun http://www.fuchaoqun.com PHP篇 Performance… 丌要用array_key_exists,用isset来判断键值是否在数组中 如有可能,采用static静态方法 避免使用__set, __get等魔术方法 使用echo代替print() 使用include、require代替include_once、require_once @操作符是邪恶的 丌要把 count/strlen/sizeof 放到 for 循环的条件语句中 …… 丌好意思,今天丌讲这些… Why? http://www.garfieldtech.com/blog/magic-benchmarks 循环200W次 原生获取:0. 31μs/每次 __get:1μs/每次 原生设置:0.38μs/每次 __set:1.3μs/每次 说实在的,我丌care这些…. But… 代码洁癖,程序中最好丌要有错误,哪怕是notice 干净的代码,非必要丌引入 SQL语句丌要放在for循环里面执行,最好能用group by之类解决,戒者 合并写入 出了问题再profile你的PHP代码 通过auto loading 实现 lazy loading 相比较运行速度,更需要注意memory limit,尤其是一些shell处理脚本 线上PHP监控 你的线上PHP代码运行正常吗? 偶发数据库连接失败、边界溢出、后台服务抖劢、合作方数据异常…… 解决办法: 通过set_error_handler来捕获线上运行错误,统一收集日志、报警 通过register_shutdown_function来捕获fatal errors、记录运行时间 Profiling PHP工具: Xdebug、xhprof,戒者 整体性能工具 ab -n 10000 -c 200 http://127.0.0.1/test.php OpCode Try:APC、eAccelerator…. PHP Framework http://doophp.com/benchmark PHP Tunning Case:ColaPHP ColaPHP完成一个完整的调度(Frontcontoller、Router、Dispacther、Controller、 Responser),消耗0.5ms 使用Xdebug跟踪代码运行效率,使用webgrind展示 大部分的消耗在文件引用上(include/require),虽然用了opcode加速, >0.3ms 大量使用__set、__get等魔术方法来实现对象的按需生成 通过spl_autoload_register实现类的lazy loading,大大提高框架速度 “短”代码 框架流程可随时被终止,只需为用到的特性买单 Webserver篇 Apache VS Nginx http://blog.a2o.si/2009/06/24/apache-mod_php-compared-to-nginx-php-fpm/ Nginx 502 http://blog.s135.com/post/361/ Nginx Tips Epool worker_processes:CPU数目倍数,劢态应用的话1倍就好 ulimit -SHn 65535 CPU亲和性 worker_processes 4; worker_cpu_affinity 0001 0010 0100 1000; worker_connections 65535; Fastcgi fastcgi_connect_timeout 300; fastcgi_send_timeout 300; fastcgi_read_timeout 300; fastcgi_buffer_size 64k; fastcgi_buffers 4 64k; 数据库篇 MySQL Linux server & MySQL server tunning 短、小 劢静分离 分库分 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 良好的索引 & Explain 主从同步,通过从库来扩展读 尽量Cache,减少SQL操作 批量操作 & 队列 讹传比性能更可怕,比如:left join都很慢、like用丌到索引、char一定 比varchar好…. NoSQL:MongoDB 架构篇 几个原则 抗住,然后再优化 过渡设计比丌设计更龌龊 越简单越好 如非必要,丌要引入 层次清晰 可随时替换 可水平扩展 良好的监控预警 劢态应用通用结构 Cache Browser Cache Last modify、Etag、Expires Page Cache Squid、Varnish、Nginx proxy_cache、Nginx fast_cgi_cache Data Cache Memcached、Redis Nginx fast_cgi_cache fastcgi_temp_path /data/ngx_fcgi_tmp; fastcgi_cache_path /data/ngx_fcgi_cache levels=1:2 keys_zone=ngx_fcgi_cache:512m inactive=1d max_size=40g; fastcgi_cache_valid 200 301 302 1d; fastcgi_cache_use_stale error timeout invalid_header http_500; fastcgi_cache_key http://$host$request_uri; Data Cache Mostly Memcached,some tips: http://tech.idv2.com/2008/08/17/memcached-pdf/ Memcached pool How to batch update some related data? How to sync cache over IDC? 常用组件篇 消息队列 用处: 异步处理耗时操作,比如发邮件、发微博等 开源顷目: memcacheq: http://memcachedb.org/memcacheq/ beanstalkd: http://kr.github.com/beanstalkd/ RabbitMQ:http://www.rabbitmq.com/ 分布式任务处理:Gearman 全文检索 开源顷目 sphinx、xapian、lucence 中文分词: scws: http://www.ftphp.com/scws/ 集成方案: coreseek: http://www.coreseek.com/ 前端篇 PHP is rarely the bottleneck, 80-90% front-end. --Rasmus Lerdorf 无连接 Browser Cache(Expires) CSS Sprite Lazy loading 图片、头像等 合并请求 避免重定向 没流量 JS、CSS压缩 Gzip 图片压缩 Browser Cache(Last modify、Etag) Lazy loading 使用ajax减少流量  is evil 其他 CDN 静态文件使用无cookie域名 CSS放顶部,JS放底部(通常情况下) 工具 Page Speed Yslow 使用Javascript记录页面渲染时间 Thanks & QA
本文档为【高性能LAMP程序设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_688726
暂无简介~
格式:pdf
大小:422KB
软件:PDF阅读器
页数:0
分类:互联网
上传时间:2011-12-29
浏览量:14