時(shí)間:2015-06-28 00:00:00 來源:IT貓撲網(wǎng) 作者:網(wǎng)管聯(lián)盟 我要評論(0)
服務(wù)器配置如下:redhat linux 9.0、apache 1.3.29、php 4.3.4、mysql 3.23.58,以下建議均在以上平臺(tái)上跑的很好,當(dāng)然也跟你的應(yīng)用有關(guān)系,具體實(shí)施要根據(jù)實(shí)際效果來進(jìn)行。?
1、眾所周知的方法就是使用 Zend Optimizer(簡稱 ZO,最新版本為 2.5.1) 或者 Zend Performance Suite(簡稱 ZPS,其中包含 ZO,最新版本為 3.6.0)對 PHP 進(jìn)行加速。
2、apache配置優(yōu)化(httpd.conf)
1)修改"Timeout"的值為 30-60,如果你得程序沒有執(zhí)行時(shí)間需要很長的話,可以修改到 10-15;
2)修改"KeepAlive"的值為"Off",這個(gè)很有效果,也很有爭議,我自己的看法是很有效果,而且并沒有影響速度,大家可以自行試驗(yàn);
3)修改"MaxRequestsPerChild"的值為"2048",這個(gè)還在試驗(yàn)中,一是因?yàn)榕掠袃?nèi)存泄漏,二是因?yàn)?apache 進(jìn)程會(huì)因?yàn)殡S著服務(wù)時(shí)間的延長,會(huì)變得越來越胖(我這里的實(shí)際情況是某些 apache 進(jìn)程會(huì)狂吃內(nèi)存到18MB,暈啊:),不過這設(shè)置有沒有效果,還在試驗(yàn)中;
4)在不使用 .htaccess 的情況下,將其"
3、卸載不必要的模塊,不管是靜態(tài)編譯還是 DSO 模式,以便節(jié)省內(nèi)存占用。具體模塊可以參照 apache 的手冊,這里就不多說了。PHP 也是同樣,我基本上已經(jīng)把不用的模塊都卸載了:)
4、使用 mod_gzip 進(jìn)行加速,很簡單,就不多說了。
5、如果你的服務(wù)器還是負(fù)載很高的話,更極端的方式就是在 httpd.conf 里面將日志停掉了,不過一般要保留 errorlog 才好,以便排錯(cuò),而且要記得,不是把"CustomLog"注釋掉就行了,而要使用"CustomLog /dev/null common"這樣的方式才好。
6、如果你的 PHP 程序使用 Session 對話的話,可以在 php.ini 里面將"session.save_path"設(shè)置為"session.save_path = /dev/shm",因?yàn)?/dev/shm 是 linux 系統(tǒng)獨(dú)有的 TMPFS 文件系統(tǒng),是以內(nèi)存為主要存儲(chǔ)方式的文件系統(tǒng),比 RAMDISK 要好,因?yàn)榭梢允褂?DISKSWAP 作為補(bǔ)充,而且是系統(tǒng)自帶,不需要另行配置,想想吧,從磁盤IO操作到內(nèi)存操作,速度會(huì)快多少?:)你也可以把你所需要的臨時(shí)文件都寫在 /dev/shm 下,只是別忘了,重啟就沒有啦,我是只存放目標(biāo)文件的,呵呵。額外的說明資料請看"使用虛擬內(nèi)存(virtual memory,VM)文件系統(tǒng)和綁定安裝"(http://www-900.ibm.com/developerWorks/cn/linux/filesystem/l-fs3/index.shtml)。
7、MYSQL 的優(yōu)化(/etc/my.cnf)
1)確認(rèn)在"[mysqld]"部分加入了"skip-innodb"和"skip-bdb"參數(shù);
2)確認(rèn)在"[mysqld]"部分加入了"skip-name-resolve"和"skip-locking"參數(shù);
3)如果不需要的話,可以將二進(jìn)制日志(binlog)停掉,方法是將"log-bin"注釋掉;
4)在內(nèi)存允許的情況下,對一些參數(shù)進(jìn)行重新配置,目標(biāo)在于將大部分操作集中于內(nèi)存中,盡量不進(jìn)行磁盤操作,對于我的 MYSQL 服務(wù)器我是如下修改的,基于 2G 內(nèi)存情況:
[mysqld]
set-variable = key_buffer=512M
set-variable = max_allowed_packet=4M
set-variable = table_cache=1024
set-variable = thread_cache=64
set-variable = join_buffer_size=32M
set-variable = sort_buffer=32M
set-variable = record_buffer=32M
set-variable = max_connections=512
set-variable = wait_timeout=120
set-variable = interactive_timeout=120
set-variable = max_connect_errors=30000
set-variable = long_query_time=1
set-variable = max_heap_table_size=256M
set-variable = tmp_table_size=128M
set-variable = thread_concurrency=8
set-variable = myisam_sort_buffer_size=128M
你可以根據(jù)"show status"命令返回的狀態(tài)進(jìn)行微調(diào)。我主要注意以下變量的數(shù)值,越小越好,最好為零:)
Created_tmp_disk_tables
Created_tmp_tables
Created_tmp_files
Slow_queries
8、在啟動(dòng)腳本中使用"--log-slow-queries=/home/logs/mysql_slow.log"參數(shù),以便進(jìn)行 SQL 語句的優(yōu)化工作,這個(gè)其實(shí)是很很重要的工作。記得一定要在 my.cnf 中設(shè)置"set-variable = long_query_time=1"才行。
9、另外可以使用 4.0.xx 版本的 MYSQL,4.0.xx 版本除了一些性能提升以外,還有 QueryCache 方法,就是在 SQL 語句查詢結(jié)果沒有變動(dòng)之前,將其結(jié)果進(jìn)行緩存,下次再進(jìn)行同樣的 SQL 語句查詢就可以直接反回結(jié)果,當(dāng)然也是以犧牲內(nèi)存為前提:)
10、額外的,對于 LINUX EXT3 文件系統(tǒng)還有一個(gè)小技巧可用,就是在修改 /etc/fstab 中的參數(shù),比如"/dev/sdb2 /home ext3 defaults 1 2"改為"/dev/sdb2 /home ext3 noatime 1 2","noatime"的意思就是不修改 accesstime,對于磁盤文件讀寫頻繁的服務(wù)器也應(yīng)該可以降低一些效果。不過最好不要遠(yuǎn)程操作,不然因?yàn)樾薷氖д`,服務(wù)器不能啟動(dòng)了,可別怪我:)
好了,基本上我用過的方法已經(jīng)說過一遍了,有些方法是取自于一些很好的文章,由于未作保留,所以無法寫出出處,只能泛泛的表示感謝了。其中有些方法也適用于 Windows 平臺(tái),大家可以根據(jù)自己的服務(wù)器、應(yīng)用情況去進(jìn)行應(yīng)用,大家也可一說說自己的辦法,比如改用 ZEUS 來做 webserver,我也在找更多的辦法來提升服務(wù)器性能,比如基于 LINUX KERNEL v2.4 以上內(nèi)核的一些性能優(yōu)化方法,從 network 到 swap(因?yàn)閮?nèi)核升級,所以一些老版本內(nèi)核的方法已經(jīng)不能再使用了:)。我也會(huì)進(jìn)一步更新這篇文章,讓大家能夠更好的進(jìn)行服務(wù)器的性能提升工作~
關(guān)鍵詞標(biāo)簽:優(yōu)化,建議,性能,服務(wù)器
相關(guān)閱讀
熱門文章 ISAPI Rewrite實(shí)現(xiàn)IIS圖片防盜鏈 IIS6.0下配置MySQL+PHP5+Zend+phpMyAdmin 在Windows服務(wù)器上快速架設(shè)視頻編解碼器全攻略 win2000server IIS和tomcat5多站點(diǎn)配置
人氣排行 XAMPP配置出現(xiàn)403錯(cuò)誤“Access forbidden!”的解決辦法 WIN2003 IIS6.0+PHP+ASP+MYSQL優(yōu)化配置 訪問網(wǎng)站403錯(cuò)誤 Forbidden解決方法 如何從最大用戶并發(fā)數(shù)推算出系統(tǒng)最大用戶數(shù) Server Application Unavailable的解決辦法 報(bào)錯(cuò)“HTTP/1.1 400 Bad Request”的處理方法 Windows Server 2003的Web接口 http 500內(nèi)部服務(wù)器錯(cuò)誤的解決辦法(windows xp + IIS5.0)