本技巧不仅仅可以为
PHP提供加速的技巧,对于Perl和
Python也有同样的效果。
- g' H7 E! _& ^. v9 L6 n3 _
4 e6 E) D3 G! ~% `6 _2 k
为了得到完整的调试结果,建议你采用ApacheBench或者httperf之
类的
软件。如果你对非LAMP架构的
服务器测试有兴趣的话,建议你采用
微软的
免费软件:WebApplicationStressTool(需要NT或者2000)。
/ ?& [ U9 ` D" L. ^4 b! z6 M
: ~" L5 v' A/ @8 \
检测Apache,采用
topd1显示所有进程的
CPU和
内存情况。另外,还采用
apachectlstatus命令。
. A3 m" v7 ?6 S$ E2 o- t. u1 Y
' {1 I& F6 o) Q. d+ Y a
1、升级
硬件的一般规则:对于PHP脚本而言,主要的瓶颈是CPU,对于静态页面而言,瓶颈是内存和
网络。一台400Mhz的普通奔腾
机器所
下载的静态页面就能让T3专线(45Mbps)饱和。
1 {" z: C$ l. p& d5 A9 w( \4 i
- g0 z! u" T" {+ b. @. ?7 x
2、Apache处理PHP脚本的
速度要比静态页面慢2-10倍,因此尽量采用多的静态页面,少的脚本。
& r& y! Z& }2 k3 p. K5 Q; G9 w
$ X$ z. L. p+ n5 w& I3、PHP脚本如果不做缓冲,每次调用都需要编译,因此,安装一个PHP缓冲产品能提升25-100%的性能。
' x5 R* n( \$ W. _& W/ b9 a1 r
, F! [. M, p' S) `
4、把基于文件的会话切换到基于
共享内存的会话。编译PHP时采用--with-mm选项,在php.ini中设置setsession.save_handler=mm。这个简单的修改能让会话
管理时间缩短一半。
7 D8 Q6 Y [6 H8 f2 k$ w9 L2 e/ v8 H! W6 b% t, M) C2 d/ A$ i
5、另外一项缓冲
技术是把不常修改的PHP页面采用HTML缓冲输出,这些缓冲工具可以参考这里。
# Z6 ]# M% h H& ~
* M3 k# i& E: ]# _* o6、如果你采用了
Linux系统,建议升级内核到2.4,因为静态页面由内核服务。
% Y% N9 D' w* h" J
' ]5 n0 Q0 y+ A4 v3 @/ ?7、采用最新版本的Apache,并把PHP编译其中,或者采用DSO模式,不要采用CGI方式。
. s2 P6 e3 D; _% Z5 W& Z5 M5 f- N1 H: G7 d2 Z
8、采用输出缓冲(请参考ob_start),如果你的代码有很多的print和echo语句,能提速5-15%。
$ u4 K: D3 w, i& y1 T
* {) U0 o; b8 ?8 Y4 L& ?6 v9、不要在Web服务器上运行X-
Windows,关掉没有必要运行的进程。
3 R( J! ?( ?4 D# [; h5 B
5 d/ ]4 B0 J6 K
10、如果能够用文本就不要用图像,尽量减小图片的尺寸。
" m7 X' S+ x: U" H R2 m$ i+ N1 A
( g6 b" Q& Z' L0 m; F$ Y11、分散负载,把
数据库服务器放到另外的机器上去。采用另外低端的机器服务图片和HTML页面,如果所有的静态页面在另外一台服务器上处理,可以设置httpd.conf中的KeepAlives为off,来减少断开连接的时间。
; G8 y( |8 o, b1 ~3 A& b
' Z4 y) ^7 q4 L- W1 F12、采用hdparm来优化
磁盘,一般能提升IDE磁盘读写性能200%,但是对SCSI
硬盘也有效果。
( {$ @7 p- H7 b) j( r; m V
0 a1 l2 o: W4 s: x, {# L5 Y13、修改httpd.conf:
, p2 p) M- Q$ Q
0 A& ]" }& Q$ S4 V& k#关闭DNSlookups,PHP脚本只拿IP地址
* e, ~ u9 ~% |8 i# a( k+ p3 {
/ m) a2 H, A _& [# RHostnameLookupsoff
( a5 C) S9 Q/ s
; I' |1 d: | _" K g Y9 Z3 ]- T2 Y4 H' u5 r/ [' q; Q4 g3 r' y. e
#关闭htaccess检测
- B0 G3 G1 @8 V4 j0 s
/ j. W! m2 ?: V/ M& k, b2 [
%26lt;Directory/%26gt;
4 e7 J3 k( H( H$ U# P' D2 K( L& E1 E8 i4 I5 G0 g( B
AllowOverridenone
( v N8 m$ }) x. F6 U- ]% A
$ D( b J, e! Q: @%26lt;/Directory%26gt;
& b+ ^& P5 v% Z
5 z$ R: R6 X$ Q* ?2 b8 ?
* M; k) g& }7 Y& d6 u9 x, z
$ c& A' l5 P% O" @0 I0 z4 \. D; ~) a打开FollowSymLinks,关闭SymLinksIfOwnerMatch以防lstat()系统调用:
% }6 a; L6 M+ r- h3 N+ F! x* o
2 ` `7 r. z, q9 }" E) V8 HOptionsFollowSymLinks
/ }1 C: P7 R# {: }3 j1 {* e, d+ n: I
#OptionsSymLinksIfOwnerMatch
- d& @8 r* |# @% Q
* B- I7 j7 S, M6 w9 B& W下面还有很多关于httpd.conf参数的调整。
0 k: X- v b/ o% E J2 f/ i, A; _/ E8 p6 K- }- N
14、Kurt简洁而完整的ApacheTuningTips。
) ^! ~. w W. u- t
8 l2 d4 W/ o" P3 }15、如果喜欢从修改Apache源码入手,可以安装lingerd。在页面产生和发送后,每个Apache进程都会浪费一段时光在客户连接上,Lingerd能接管这项工作,让Apache迅速服务下一个客户请求。
5 T4 _ U1 u; w" ]) H" e r
; r7 H) Y2 M5 [16、如果网络拥挤,CPU资源不够用,采用PHP的HTML压缩
功能:
9 w2 C7 y( v( w2 z) ]7 y+ g
6 z! d& ^* y- b& ooutput_handler=ob_gzhandler
5 K" W! p5 F( c$ t: I2 i
1 _" `& N, q+ u# rPHP4.0.4的用户请不要使用,因为存在内存泄漏问题。
@/ R$ _" _6 a( L
2 L g, K2 d* ~5 W; `8 H17、修改httpd.conf中的SendBufferSize为你最大的页面文件的大小。加大内核的
TCP/IP写缓冲大小。
3 t3 w9 m( u, F' [/ b2 k, j' o. c$ I1 Y: P I! w' l7 w( t
18、另外一篇文章:TuningApacheWeb
ServersforSpeed,一篇97年的很古老的文章。
$ ~( _( F6 L7 j
: f6 H% f( p$ ^, K$ m19、采用数据库的持久连接时,不要把MaxRequestsPerChild设置得太大。
5 ^. |0 N/ B+ ~4 E, d# D7 Z: W, Q6 V8 W0 |8 I6 \: Y
20、CachingTutorialforWebAuthorsandWebmasters教你怎样实现
浏览器缓冲。
" K1 Z9 n, h& t0 C( `: x( e* Y. e+ c0 T: a3 A7 S& z* Y" J
21、如果你足够勇敢的话,还可以采用SiliconGraphics的AcceleratedApache补丁。这个工程能使Apache1.3快10倍,使Apache2.0快4倍。
) x9 s6 z Y% Z' P v
) L" G) Q- c2 w$ G- O W
22、来自ProfessionalApache的技巧。
+ p. T3 m: ?8 Y' b
5 I4 { Z# L1 t* s3 _- S23、官方的PerformanceTuning文档,很好的资料,但是十分繁琐。
V7 N: A6 T. ]. X3 U
# ~- {$ A8 X3 V24、编译PHP时,建议采用如下的参数:
; O5 S# G! t6 L. c5 E3 ?, V7 S: R/ c4 B# _
--enable-inline-optimization--disable-debug
: e4 d2 O' h7 B* ^% D
$ y8 d' j9 | I5 y: ^2 A
25、优化Linux,moreLinux以及
Solaris。
6 `" {# H o% [/ [
& k( V7 H# x) R4 ?# V+ ^$ `* _ n. I26、以上所有的方法都是针对单机而言的,如果你觉得系统还是不够快,可以采用集群,负载均衡,缓冲技术。采用Squid作为缓冲,配置Squid的方法。
' L o, V; W1 a, |+ [) u8 R9 b
+ T0 E! g$ p0 u$ G; U. _. T) [7 ] h# g0 H7 b4 Q/ n, w
" p/ J& R) G1 m
相关文档:. j2 k4 `- a4 H' w: u6 r% z0 T: m
PHP的优化,缓冲,压缩
; J/ o0 @% W2 `! o. O, E" @) C; g% z$ c" Y
为加速PHP
程序而努力
* |$ O" P$ ]5 ]0 W4 f
# N* \3 u# J! i. v! v& M
采用PEAR来缓冲PHP程序之一
5 k: s0 b4 r# i1 d! Z/ K6 l" F
; ?/ o/ m" V3 o7 D% f" P
采用PEAR来缓冲PHP程序之二
" g6 ]' ^" w: M
9 W) k3 C1 L* t4 l: v' \5 A+ D7 e& X更加
安全的PHP4.1.0发布