lamp性能调优

参考: http://www.ibm.com/developerworks/cn/linux/l-tune-lamp-1/index.html

 

 

1、使用curl度量站点的响应时间:

 

[flykobe@localhost ~]$ curl -o /dev/null -s -w %{time_connect}:%{time_starttransfer}:%{time_total} http://www.sina.com.cn

0.068:0.074:1.074

 

[flykobe@localhost ~]$ curl -o /dev/null -s -w %{time_connect}:%{time_starttransfer}:%{time_total} http://www.myspace.cn
0.020:0.061:1.044

 

计时器描述
time_connect建立到服务器的 TCP 连接所用的时间
time_starttransfer在发出请求之后,Web 服务器返回数据的第一个字节所用的时间
time_total

完成请求所用的时间

 

 

所以,程序处理时间就是 time_starttransfer - time_connect

 

可以看到,访问sina的总时间虽然比较长(这可能是因为它们的页面比较大,sina:415k,myspace:53k),而程序处理的时间还是相对比较短的,只有0.01s。

 

 

2、查看硬盘读写速度:

 

[root@localhost ~]# cat /etc/fstab
/dev/VolGroup00/LogVol00 /                       ext3    defaults        1 1
LABEL=/boot             /boot                   ext3    defaults        1 2
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
/dev/VolGroup00/LogVol01 swap                    swap    defaults        0 0

 

根目录所在位置是:/dev/VolGroup00/LogVol00,所以对它进行测速

 

[root@localhost ~]# /sbin/hdparm -t /dev/VolGroup00/LogVol00    

/dev/VolGroup00/LogVol00:
 Timing buffered disk reads:   60 MB in  3.08 seconds =  19.49 MB/sec

 

3、ab:apache提供的工具

It is designed to give you an impression of how your current Apache installation performs

 

[flykobe@localhost ~]$ ab -n 1000 -c 100 -k http://www.sina.com.cn/

 

 

4、多看看配置文件

httpd.conf

my.cnf

php.ini

 

5、php的mysql_connect 和 mysql_pconnect的区别:


引用exceed php club论坛上的朋友原话:
php中mysql_pconnect()的实现方式:
其实mysql_pconnect()本身并没有做太多的处理, 它唯一做的只是在php运行结束后不主动close掉mysql的连接.
mysql_pconnect()与此同时mysql_connect()的区别:
cgi方式下:
在php经cgi方式运行时pconnect和connect是基本没有区别的, 因为cgi方式是每一个php访问起一个进程, 访问结束后进程也就结束了, 资源也全释放了.
apache模块方式下:
区别在于当php以apache模块方式运行时, 由于apache有使用进程池, 一个httpd进程结束后会被放回进程池, 这也就使得用pconnect打开的的那个mysql连接资源不被释放, 于是有下一个连接请求时就可以被复用.
这就使得在apache并发访问量不大的时候, 由于使用了pconnect, php节省了反复连接db的时间, 使得访问速度加快. 这应该是比较好理解的.
但是在apache并发访问量大的时候, 如果使用pconnect, 会由于之前的一些httpd进程占用的mysql连接没有close, 则可能会因为mysql已经达到最大连接着, 使得之后的一些请求永远得不到满足.
例如:
若mysql最大连接数设为500, 而apache的最大同时访问数设为2000
假设所有访问都会要求访问db, 而且操作时间会比较长
当前500个请求的httpd都没有结束的时候...之后的httd进程都是无法连接到mysql的(因已经达到mysql最大连接数). 只有当前500个httpd进程结束或被复用才可以连接得到了mysql.
其实这个也很好解释了xgy_p的测试中若操作比较简单, pconnect比connect效率高很多, 而且跟使用jsp的连接池的速度比较接近. 因为这个时候httpd进程可以不断的给复用.
而 当db操作复杂, 耗时较长时, 因httpd会fork很多并发进程处理, 而先产生的httpd进程不释放db连接, 使得后产生的httpd进程无法连上db. 因为这样没有复用其它httpd进程的mysql连接. 于是会就产生很多连接超时, 像一开始的1000个并发连接测试说几乎都是连接超时就是这个原因.
---
(反进来看jsp用的如果是纯粹的db连接池, 则不会有因为达到mysql连接上限而连不上的问题, 因为jsp的连接池会使得可以等待其它连接使用完毕并复用. )
因此在并发访问量不高时,使用pconnect可以简单提高访问速度, 但在并发量增大后, 是否再使用pconnect就要看程序员的选择了..
就我个人认为, php现在对mysql的连接并没有真正用到连接池, pconnect也只是相当于借了apache的进程池来用, 所以在并发访问量大的时候pconnect并不能很好的提高访问db效率. 在这一点上. php的确比不上jsp.
就目前的这种情况, 如果并发量大的话, 我个人建议最好还用mysql_connect.

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值