從7月初到10月底的4個月時間中,我們已經在服務器上導入了大量數據,建成了一批新的子網站,在接下來的一段時間内我們不準備繼續大增數據量了,而是對已經導入數據的網站進行精細優化調整,這個月已經開始了這方面的工作。
MediaWiki平台的網站都是去年以及以前建成的,這次基本沒有大的調整,隻是一部分網站對模闆進行了更新,以便嵌入microdata微數據标記,雖然也需要運行後台更新、重新生成緩存文件,不過這個對服務器的負載影響不算很大,是可以承受的。
而在對今年新做的Drupal平台的改進中,如果隻是修改内頁模闆、block以及menu等的話,對負載的影響也不算很大,但如果涉及到新建Views就可能對MySQL造成壓力,特别是我們近幾個月添加的都是大數據量的子網站,一個站點就可能有數百萬計的頁面,用Views生成索引列表的時候運算時間很長,而當有大量這樣的運算同時進行的時候,服務器就會不堪重負。
我和同事在前面商量網站改版的時候,沒有過多考慮負載情況,隻是本着浏覽者方便的角度出發,計劃增加多種Views索引列表來替代以前的Taxomony分類,還要增加地域分級的索引以及地域和行業的交叉索引,這些在設計Views中就知道将會是mysql load killer。
本周以來随着我們在多個子網站中實施改版計劃,幾台服務器的負載都明顯增加,有一台是16核CPU持續占用都達到100%,都消耗在Apache和PHP中,另外有一台是MySQL占用了CPU的16核中的12核以上,從PHPMyAdmin中看明顯是增加Views引起的。
目前隻有放緩改版實施的步伐,并強制kill超時的MySQL進程,還去禁止了一些疑似采集的IP,以便先讓目前的網站都能維持正常訪問。這個月以來的一段時間,我們網站的訪問量還在增加,AdSense的單價也有上升,所以幾周來廣告收入都連創新高。保證網站能被正常訪問是首要的,改版可以逐步來進行。
在MediaWiki中我們為了方便浏覽者也曾使用DPL動态頁面列表的功能,後來因為負載問題,改用了普通頁面來實現需要的索引列表功能,雖然人工來整理數據、新導入頁面要麻煩一些,但可以保證服務器不受大的影響。Drupal中的Views也類似MediaWiki中的DPL,隻是功能更加靈活強大,可以實現複雜的數據庫查詢應用,但對服務器的消耗也大,後面我們會根據實際情況來做調整。
评论