在換用16核CPU、16G内存的服務器後,發現7200轉硬盤不給力,就增加了多塊10000轉的迅猛龍硬盤,一台服務器上的4塊硬盤分别放置系統及備份文件、Squid緩存文件、MySQL文件、Apache和HTML緩存文件,這樣一般訪問都不會有什麼壓力。
但在我們持續導入數據、批量修改模闆的過程中,發現放置Squid緩存文件的硬盤有時占用達到100%,影響正常訪問,于是我們修改Squid設置文件,隻使用幾個G内存作為Web反向加速的緩存,關閉了幾十G、上百G的Squid磁盤緩存,這樣可以避免大量小文件的尋道操作。
接下來又發現系統盤也偶爾發生占用100%的情況,這時更是影響服務器上所有網站的訪問,先以為是交換内存(Swap)的問題,用swapoff -a關閉了所有磁盤交換文件。
但這樣的情況下竟然還是有問題,再檢查,發現是MySQL的臨時文件引起的,MySQL的查詢、排序等操作中需要用到大量的臨時文件,默認使用Linux的系統臨時文件夾/tmp來保存,這就是瓶頸所在了。找了一些資料,可以修改my.ini中的tmpdir設置,讓臨時文件放置在多塊硬盤上,還可以設置到内存文件系統(tmpfs)中,檢查我們機器中啟動時默認就有/dev/shm/這個最大可以用物理内存一半容量的内存文件夾,于是就設置tmpdir=/dev/shm/來充分利用内存,跳過硬盤,讀寫速度應該高出幾個數量級。
Squid緩存文件、Swap交換文件、MySQL臨時文件都停掉或者轉到内存後,現在的16G内存也不算很富裕了,上周就和同事商量添加内存的事情,原計劃把服務器内存加滿到64G,但這種DDR2 主頻 663 帶有ECC REG校驗的服務器專用内存目前價格還比較高,3台服務器加滿需要近2萬元,都可以新購兩台服務器了,考慮先還是将其中2台增加到32G,1台保持16G,看看改善的效果,以後再逐步增加。
已經在淘寶上購買了8根4G專用内存,下周初同事安裝到服務器上去,然後再修改一些設置,争取讓服務器硬件不成為我們不斷增加數據的障礙。今年準備在去年上千萬頁面的基礎上,還要增加到上億的數量級。
评论2
為什麼不用SSD?
SSD小文件尋址用時幾乎為零
專門用作緩存文件儲存不好麼?
----------------------------------
而且四塊硬盤也可以做RAD(不怕丢失數據就做0,怕的話5或者10?)
單獨分開成四個分别放效率太低了!
現在16$/month 的VPS都是RAD10+萬轉硬盤
SSD及RAD硬盤問題
謝謝這位朋友的留言建議,說的很好、很專業!
先前我們考慮過SSD,但因為容量小、價格高、壽命短等原因,暫時還沒有實施,而是添置了2塊300G的萬轉硬盤。我們現在機器中的4塊硬盤是2塊7200轉的1T硬盤和2塊10000轉的300G硬盤,做起RAD起來怕是不合适,另外就是暫時不想停機重裝系統、導數據,所以就這樣先湊合着用,以後合适的時候再改為你建議的RAD并添加SSD。