cheng029 发表于 2012-7-4 15:10:02

LAMP 架构服务器性能优化建议(转)

 服务器配置如下:redhat linux 9.0、apache 1.3.29、php 4.3.4、mysql 3.23.58,以下建议均在以上平台上跑的很好,当然也跟你的应用有关系,具体实施要根据实际效果来进行。   1、众所周知的方法就是使用 Zend Optimizer(简称 ZO,最新版本为 2.5.1) 或者 Zend PerformanceSuite(简称 ZPS,其中包含 ZO,最新版本为 3.6.0)对 PHP 进行加速。相关软件可到张微波的主页来下载哦,地址为:http://www.5ilinux.com/blog/archives/000093.html。  2、apache配置优化(httpd.conf)1)修改“Timeout”的值为 30-60,如果你得程序没有执行时间需要很长的话,可以修改到 10-15;2)修改“KeepAlive”的值为“Off”,这个很有效果,也很有争议,我自己的看法是很有效果,而且并没有影响速度,大家可以自行试验;3) 修改“MaxRequestsPerChild”的值为“2048”,这个还在试验中,一是因为怕有内存泄漏,二是因为 apache进程会因为随着服务时间的延长,会变得越来越胖(我这里的实际情况是某些 apache进程会狂吃内存到18MB,晕啊:),不过这设置有没有效果,还在试验中;4)在不使用 .htaccess 的情况下,将其“”部分设置为“None”方式,如果你使用 PHPMYADMIN 进行管理的话,可以使用 PHPMYADMIN 的 COOKIE 权限控制方式。  3、卸载不必要的模块,不管是静态编译还是 DSO 模式,以便节省内存占用。具体模块可以参照 apache 的手册,这里就不多说了。PHP 也是同样,我基本上已经把不用的模块都卸载了:)  4、使用 mod_gzip 进行加速,很简单,就不多说了。   5、如果你的服务器还是负载很高的话,更极端的方式就是在 httpd.conf 里面将日志停掉了,不过一般要保留 errorlog才好,以便排错,而且要记得,不是把“CustomLog”注释掉就行了,而要使用“CustomLog /dev/nullcommon”这样的方式才好。  6、如果你的 PHP 程序使用Session 对话的话,可以在 php.ini 里面将“session.save_path”设置为“session.save_path =/dev/shm”,因为 /dev/shm 是 linux 系统独有的 TMPFS 文件系统,是以内存为主要存储方式的文件系统,比RAMDISK 要好,因为可以使用 DISKSWAP作为补充,而且是系统自带,不需要另行配置,想想吧,从磁盘IO操作到内存操作,速度会快多少?:)你也可以把你所需要的临时文件都写在/dev/shm 下,只是别忘了,重启就没有啦,我是只存放目标文件的,呵呵。额外的说明资料请看“使用虚拟内存(virtualmemory,VM)文件系统和绑定安装”(http://www-900.ibm.com/developer ... m/l-fs3/index.shtml)。  7、MYSQL 的优化(/etc/my.cnf)1)确认在“”部分加入了“skip-innodb”和“skip-bdb”参数;2)确认在“”部分加入了“skip-name-resolve”和“skip-locking”参数;3)如果不需要的话,可以将二进制日志(binlog)停掉,方法是将“log-bin”注释掉;4)在内存允许的情况下,对一些参数进行重新配置,目标在于将大部分操作集中于内存中,尽量不进行磁盘操作,对于我的 MYSQL 服务器我是如下修改的,基于 2G 内存情况:set-variable = key_buffer=512Mset-variable = max_allowed_packet=4Mset-variable = table_cache=1024set-variable = thread_cache=64set-variable = join_buffer_size=32Mset-variable = sort_buffer=32Mset-variable = record_buffer=32Mset-variable = max_connections=512set-variable = wait_timeout=120set-variable = interactive_timeout=120set-variable = max_connect_errors=30000set-variable = long_query_time=1set-variable = max_heap_table_size=256Mset-variable = tmp_table_size=128Mset-variable = thread_concurrency=8set-variable = myisam_sort_buffer_size=128M你可以根据“show status”命令返回的状态进行微调。我主要注意以下变量的数值,越小越好,最好为零:)Created_tmp_disk_tablesCreated_tmp_tablesCreated_tmp_filesSlow_queries   8、在启动脚本中使用“--log-slow-queries=/home/logs/mysql_slow.log”参数,以便进行 SQL语句的优化工作,这个其实是很很重要的工作。记得一定要在 my.cnf 中设置“set-variable =long_query_time=1”才行。  9、另外可以使用4.0.xx 版本的 MYSQL,4.0.xx 版本除了一些性能提升以外,还有 QueryCache 方法,就是在 SQL语句查询结果没有变动之前,将其结果进行缓存,下次再进行同样的 SQL 语句查询就可以直接反回结果,当然也是以牺牲内存为前提:)   10、额外的,对于 LINUX EXT3 文件系统还有一个小技巧可用,就是在修改 /etc/fstab 中的参数,比如“/dev/sdb2/home ext3 defaults 1 2”改为“/dev/sdb2 /home ext3 noatime 12”,“noatime”的意思就是不修改accesstime,对于磁盘文件读写频繁的服务器也应该可以降低一些效果。不过最好不要远程操作,不然因为修改失误,服务器不能启动了,可别怪我:)  好了,基本上我用过的方法已经说过一遍了,有些方法是取自于一些很好的文 章,由于未作保留,所以无法写出出处,只能泛泛的表示感谢了。其中有些方法也适用于 Windows平台,大家可以根据自己的服务器、应用情况去进行应用,大家也可一说说自己的办法,比如改用 ZEUS 来做webserver,我也在找更多的办法来提升服务器性能,比如基于 LINUX KERNEL v2.4 以上内核的一些性能优化方法,从network 到swap(因为内核升级,所以一些老版本内核的方法已经不能再使用了:)。我也会进一步更新这篇文章,让大家能够更好的进行服务器的性能提升工作~  另外欢迎来访问国内数一数二的手机网站,手机之家,地址见下,呵呵~

2653885 发表于 2013-3-13 17:46:20

过来看看的

aa0660 发表于 2013-5-15 20:35:41

长得真有创意,活得真有勇气!

liyeho 发表于 2013-5-16 02:31:03

如果有一双眼睛陪我一同哭泣,就值得我为生命受苦。

huhahapz 发表于 2013-5-16 10:21:47

月经不仅仅是女人的痛苦,也是男人的痛苦。

zzl001 发表于 2013-5-16 19:14:54

如果没有毛片,中国的性教育简直就是一片空白!

上帝大脸 发表于 2013-5-17 04:29:03

不在课堂上沉睡,就在酒桌上埋醉。
页: [1]
查看完整版本: LAMP 架构服务器性能优化建议(转)