日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

百万记录级MySQL数据库及Discuz!论坛优化

發(fā)布時間:2023/12/18 数据库 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 百万记录级MySQL数据库及Discuz!论坛优化 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

最近,幫一個朋友優(yōu)化一個擁有20萬主題,100萬帖子,3萬多會員,平均在線人數(shù)2000人的Discuz!論壇,采用Linux2.6+Apache2+mod_php5+MySQL5,服務器配置為雙至強+4G內(nèi)存,優(yōu)化前,系統(tǒng)平均負載(load average)基本維持在10以上,MySQL的CPU占用率基本在90%以上,優(yōu)化后,系統(tǒng)平均負載降到0.5以下,MySQL的CPU占用率很少有超過10%的時候。優(yōu)化前YSlow得分只有35分,優(yōu)化后YSlow得分86分?,F(xiàn)將優(yōu)化的過程和經(jīng)驗做一個記錄:

首先,對Apache進行優(yōu)化,編輯httpd.conf,設置HostnameLookups、KeepAlive、MaxKeepAliveRequests以及KeepAliveTimeout四個參數(shù),調(diào)整MaxSpareServers、ServerLimit、MaxClients以及MaxRequestsPerChild參數(shù),還可以考慮棄用prefork而采用worker MPM。設置mod_deflate及mod_expires模塊,不過注意Discuz!不能對PHP文件開啟Expires,否則會出現(xiàn)問題。另外還可以考慮開啟mod_cache和mod_mem_cache模塊。另外利用cronolog按天對日志進行輪循截斷,如果日志特別大,也可以按小時截斷。另外再加上Awstats對日志進行分析,并用gzip對日志進行壓縮,自動刪除1個月前的日志。

其次,對PHP進行優(yōu)化,編輯php.ini,調(diào)整output_buffering、zlib.output_compression及max_execution_time、max_input_time、memory_limit等參數(shù),并安裝Xcache和Zend Optimizer。

然后對MySQL進行優(yōu)化。首先重新靜態(tài)編譯MySQL,使其只支持MyISAM和Memory兩種引擎,并按Discuz!編碼選擇只支持UTF-8或者GBK字符集。編輯my.cnf,設置skip-locking、skip-external-locking、skip-networking和skip-name-resolve,根據(jù)內(nèi)存和數(shù)據(jù)庫狀態(tài)具體調(diào)整key_buffer_size、query_cache_size、query_cache_limit、max_allowed_packet、table_cache、thread_cache_size、sort_buffer_size、read_buffer_size、read_rnd_buffer_size、join_buffer_size、tmp_table_size、max_tmp_tables、back_log、max_connections、wait_timeout的參數(shù)。

對數(shù)據(jù)庫進行優(yōu)化,將threads和posts表中部分未索引的字段增加索引,并將supersite數(shù)據(jù)庫表從bbs數(shù)據(jù)庫獨立出去。修改discuz!配置文件,設置開啟pconnect。

對Discuz!設置進行優(yōu)化。進入Discuz!系統(tǒng)設置,修改頁面緩存設置中的緩存有效期和緩存系數(shù),修改服務器優(yōu)化中的禁止瀏覽器緩沖和頁面Gzip壓縮,修改防盜鏈設置中下載附件來路檢查,用JSMin自動對js文件進行縮減(Discuz! 6.1的common.js原文件29.3k,經(jīng)JSMin縮減后為24.1k,再經(jīng)deflate后為7.3k),修改attachments.php文件,將:

//dheader(’Cache-control: max-age=31536000′);
//dheader(’Expires: ‘.gmdate(’D, d M Y H:i:s’, $timestamp + 31536000).’ GMT’);

前的注釋去掉。修改模板目錄下adv.htm,去掉與Insenz有關的代碼。

通過查看MySQL的status,可以看出優(yōu)化后,長時間運行的Key_read_ratio基本保持在0.05%以下,Threads_cache_hitrate保持在99.9%以上。個人感覺,Discuz!將Session保存在數(shù)據(jù)庫中,極大地降低了Query Cache的命中率,如果需要進一步優(yōu)化,可以考慮修改Discuz!源碼,將Session保存到Memcache中。

優(yōu)化之后用Siege做并發(fā)壓力測試,在200并發(fā)下,基本沒有任何錯誤。如果將來人數(shù)更多,可以考慮將平臺遷移到Ngix+PHP FastCGI上。

下面是用Siege在300并發(fā)下的測試結果:

#siege -c 300 -b -r 35 -f bbs.url
** SIEGE 2.67
** Preparing 300 concurrent users for battle.
The server is now under siege..????? done.
Transactions:????????????????? 10500 hits
Availability:???????????????? 100.00 %
Elapsed time:????????????????? 52.68 secs
Data transferred:????????????? 65.67 MB
Response time:????????????????? 1.27 secs
Transaction rate:???????????? 199.32 trans/sec
Throughput:???????????????????? 1.25 MB/sec
Concurrency:????????????????? 253.07
Successful transactions:?????? 10500
Failed transactions:?????????????? 0
Longest transaction:?????????? 24.88
Shortest transaction:?????????? 0.00

500并發(fā)下的測試結果:

#siege -c 500 -b -r 20 -f bbs.url
** SIEGE 2.67
** Preparing 300 concurrent users for battle.
The server is now under siege..????? done.
Transactions:?????????????????? 9979 hits
Availability:????????????????? 99.79 %
Elapsed time:????????????????? 86.52 secs
Data transferred:????????????? 82.66 MB
Response time:????????????????? 3.30 secs
Transaction rate:???????????? 115.34 trans/sec
Throughput:???????????????????? 0.96 MB/sec
Concurrency:????????????????? 381.07
Successful transactions:??????? 9979
Failed transactions:????????????? 21
Longest transaction:?????????? 34.80
Shortest transaction:?????????? 0.00

=======

轉(zhuǎn)載于:https://www.cnblogs.com/yongzhi/articles/1233480.html

總結

以上是生活随笔為你收集整理的百万记录级MySQL数据库及Discuz!论坛优化的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。