如何优化你的php(二)
五月 26, 2009 | php | RSS 2.0
–> –>
翻译:http://phplens.com/lens/php-book/optimizing-debugging-php.php
今天翻译着翻译着,已经烦了,看来真的持之以恒做一件事很难,尤其是不太喜欢的事情,我略过和跳过,和翻译错了很多。
为php调试你的web服务器
我们将论述在今天两种非常常用的web服务器如何得到最好的性能,apache1.2和iis,当然也有许多关于服务html的建议。
Php的作者表示apache2.0相对于apache1.3没有性能和架构的优点,特别是多线程模式,但apache2.0以预分配模式运行的时候,下面的讨论依然有关系(2003年11 21)
(aapache1.3/2.0
apache可以运行在unix和windows上面,它是当今世界最流行的服务器,apache1.3在服务器运行时用了预分配模式,但它启动时,它会创建多个子进程来处理http请求,初始化的父进程间就像一个呵护天使,确保每个子进程工作地顺利同时协调所有的事情,越多的http请求过来,越多的子进程出来处理它们,但http请求慢下来的时候,父进程会杀死一个空闲的进程,为别的进程释放资源,这个模式使得apache非常的健壮,即使一个子进程崩溃了,父进程和别的进程是和这个崩溃的进程独立的。
预分配模式不像别的设计的那么快,但对我来说,服务一个php脚本足够了,当apache性能组织非常重大的影响前还有很多别的瓶颈要找。Apache的健壮性和信赖性非常重要。
Apace2.0提供了在执行时采用多线程模式,我的测试表明在这种模式下只有一点性能上的优点。当然好多php的扩展部兼容。Apache2.0.47(2003)。
Apache的配置使用httpd.conf,下面的参数在配置子进程的时候非常重要。
|
命令 |
默认 |
描述 |
|
MaxClients |
256 |
最大的子进程的数量,默认的意思是最多同时处理256个http请求,多的连接被放在队列里。 |
|
StartServers |
5 |
启动时候创建的子进程个数 |
|
MinSpareServers |
5 |
需要创建的空闲子进程的数目,如果子进程的数目低于这个数字,1个子进程被初始化创建,然后是2个,后来是4个,直到32个被创建每秒钟 |
|
MaxSpareServers |
10 |
如果激活的子进程多于这个数字,多的进程将被中止掉 |
|
MaxRequestsPerChild |
0 |
子进程中止前能处理的http请求数.设置成0 表示永远不终止.设置为100到10000如果你怀疑有内存泄漏,或者来释放一些没有用的资源. |
如果是大一点的网站,值设置成下面的会好一点:
MinSpareServers32
MaxSpareServers64
Apache在windows有点不一样,它不是用子进程,而是用线程,上面的参数将不会用到,相比我们有一个参数:ThreadsPerChild,默认的是50,这个参数表示apache可以多少个线程交换.在windows的版主中只有一个子进程,默认的设置成50 当前只可以处理50个请求。但web服务器经历高的网络流量时,增加它在256和1024之间,一些有用的参数你可以改变,包括如下:
|
参数 |
默认 |
描述 |
|
SendBufferSize |
设置成操作系统默认的 |
决定在用tcp/ip连接时候用到的输出的缓冲大小。对于忙的网络是非常有用的当你缓存时候,你可以设置这个参数关闭最大的文件下载。每个客户端连接的时候tcp/ip缓冲都会创建。 |
|
KeepAlive [on|off] |
On |
在老的http协议中,每个http请求都需要在服务器上单独建立个连接。为了减少过多的正常连接,keep-live的头被发展开了,它告诉服务器继续使用同一个socket处理多个请求,如果一个独立的专为突破服务器的服务器,你可以关闭这个选项,这个技术很大的提高了资源的可用性. |
|
KeepAliveTimeout |
15 |
这个数字式保持socket连接的存活时间,这个时间包括服务器生成内容,和客户机响应,如果客户机不响应,他将生成一个新连接。这个值得将保持低值做为 |

