《php & performance》 by llia alshanetsky
该文档是五阿哥两个月前分享给我的。当时看了1/3就撂下了。现在准备把它看完。
百度文库: http://wenku.baidu.com/view/b4c9e20116fc700abb68fcf2.html
slideshare:http://www.slideshare.net/pangee/php-performance-22852213
自己的简单翻译如下:
p2
每个php脚本文件的引入,都会造成zend编译与执行环节。
编译耗时远大于执行的时间。
p3 opcode
每个脚本仅在修改后编译一次。
opcode会从内存中读取,要比每次从硬盘读取文件编译,快很多。
opcode可以执行得更快。
p5 Compiler
尽量使用编译器的高级特性。譬如-O3。
将-march -mcpu配置为你的机器相应配置。
删除调试数据。 -fomit-frame-pointer
p6 webserver : File IO
让文件所属目录的路径尽可能的短。
如果没有使用.htaccess,请把AllowOverride设置为none。
使用Apache配置Options FollowSymLinks简化文件访问方式。
Log文件真的有必要记录嘛?该条Log有必要打嘛?尽可能精简他们。
如果LOG很有必要,那么在记录时,请在一个文件中记录。在日志分析阶段,再切分日志。
p7 系统调用
系统方法由内核行,使用这些方法可以最小开销。
不要开启 ExtendedStatus (server汇报更多状态的开关)
对于禁用、开放权限时候,使用IP,而不要用domain。
不要开启 HostnameLookups (DNS反查,根据IP查HOSTNAME,开销大)
常关 ServerSignature (服务端标记)
注: apache中文详解
p8 KeepAlive
按理说长链接可以让请求变的更快,但如果不合理使用长链接,服务器会崩溃。
Apache的长连接超时尽可能的设置短一些,建议值为10s
如果该服务器是为动态脚本语言服务,可以将长链接彻底关闭。
p9 Matching your IO size
尽可能的把任务交由内核完成。
优化PHP到系统通信(?)。
减少系统调用。
p10 输出控制
效率;
灵活;
请使用ob_start();
请开启 output_buffering;
提高浏览器的渲染速度。
p11 apache的输出控制
一个好办法是,不加锁的将整个页面交由内核(?);
请将 SendBufferSize 设置为页面相似的大小;
p12 系统的输出控制 (详解)
/proc/sys/net/ipv4/tcp_wmem
4096 16384 maxcontentsizemin default max
/proc/sys/net/ipv4/tcp_mem
(maxcontentsize * maxclients) / pagesize
✴低内存系统请甚用
待续...