天天看點

如何減少伺服器上rsync 的io磁盤與主伺服器io 占用的問題

對于服務上rsync 的io磁盤與主伺服器io 占用的問題,我們可以采用ionice來進行有效解決:

伺服器是一台做資料分析的BI服,每天同步的資料檔案有上萬個,目錄下也占用了很多零碎的目錄和檔案,周遊起來也很費勁,本身以前購買的磁盤又不是IO很好的磁盤,檔案一多更是很慢了,雖然不占用CPU,但是CPU處于繁忙中了 (idle 99%,wa 1%),當伺服器中需要運作大量的資料檔案時,伺服器的Io磁盤就會出現被占用的情況,導緻伺服器在處理資料時響應會減慢,介紹一下如何減少服務上rsync 的io磁盤與主伺服器io 占用的問題。

  如何減少rsync主伺服器的io占用:

  解決方法:在啟用伺服器上的rsync時,我們可以采用進行降低IO使用的設定:ionice -c 2 -n 7 rsync --daemon

  如何降低rsync的io磁盤占用

root@ip-172-31-19-100 ~]# ps -ef|grep rsync

root      2261  2185  0 10:26 pts/2    00:00:00 grep rsync

root     14065  5656  0 07:03 ?        00:00:16 rsync --daemon

root     14066 14065  0 07:03 ?        00:00:02 rsync --daemon

root     27198  5656  0 08:33 ?        00:00:08 rsync --daemon

root     27199 27198  0 08:33 ?        00:00:01 rsync --daemon

root     29260  5656  0 09:03 ?        00:00:06 rsync --daemon

root     29261 29260  0 09:03 ?        00:00:01 rsync --daemon

14065,27198,29260 三個PID

  當rsync --daemon已經在運作并不想停止時,這時我們可以: 找到伺服器上的rsync的PID,如 14065,使用ionice降低程序14065的IO占用:ionice -c 2 -n 7 -p 14065

其他PID 

ionice -c 2 -n 7 -p 27198

ionice -c 2 -n 7 -p 29260 

  Ionice指令功能介紹

  ionice – 擷取或設定程式的IO排程與優先級。

  指令格式:

  ionice [[-c class] [-n classdata] [-t]] -p PID [PID]…

  ionice [-c class] [-n classdata] [-t] COMMAND [ARG]…

  IO排程政策:

  ionice将磁盤IO排程分為三類:

  ilde:空閑磁盤排程,該排程政策是在目前系統沒有其他程序需要進行磁盤IO時,才能進行磁盤;是以該政策對目前系統的影響基本為0;當然,該排程政策不能帶有任何優先級參數;目前,普通使用者是可以使用該排程政策(自從核心2.6.25開始)。

  Best effort:是預設的磁盤IO排程政策;

  (1)該排程政策可以指定優先級參數(範圍是0~7,數值越小,優先級越高);

  (2)針對處于同一優先級的程式将采round-robin方式;

  (3)對于best effort排程政策,8個優先級等級可以說明在給定的一個排程視窗中時間片的大小。

  (4)目前,普調使用者(非root使用者)是可以使用該排程政策。

  (5)在核心2.6.26之前,沒有設定IO優先級的程序會使用“none”作為排程政策,但是這種政策使得程序看起來像是采用了best effort排程政策,因為其優先級是通過關于cpu nice有關的公式計算得到的:io_priority = (cpu_nice + 20) /5。

  (6)在核心2.6.26之後,如果目前系統使用的是CFQ排程器,那麼如果程序沒有設定IO優先級級别,将采用與核心2.6.26之前版本同樣的方式,推到出io優先級級别。Real time:實時排程政策,如果設定了該磁盤IO排程政策,則立即通路磁盤,不管系統中其他程序是否有IO。是以使用實時排程政策,需要注意的是,該通路政策可能會使得其他程序處于等待狀态。

  參數說明:

  -c class :class表示排程政策,其中0 for none, 1 for real time, 2 for best-effort, 3 for idle。

  -n classdata:classdata表示IO優先級級别,對于best effort和real time,classdata可以設定為0~7。

  -p pid:指定要檢視或設定的程序号或者線程号,如果沒有指定pid參數,ionice will run the listed program with the given parameters。-t :忽視設定優先級時産生的錯誤。

  以上就是如何減少伺服器上rsync 的io磁盤與主伺服器io 占用的問題的相關介紹,當使用者租用的伺服器上出現響應變慢的情況出現時,可能是伺服器上rsync的io 被占用而造成的,這時我們就可以利用ionice 來進行程序上的釋放來解決相關問題标準,如果使用者想在價格和保證上進行衡量,可以對服務商的伺服器進行使用來決定。

-----------------------

以上僅供參考!!

其實,其實上面的方法也沒有起到多大作用,io還是占有很大

iotop看那了下,磁盤的寫入都慢了很多

最根源的方法就是把下面有很多目錄的檔案遷移點到其他備份目錄下,減少周遊更多的檔案夾,可以減輕IO, mv了舊的目錄到其他備份目錄下, 減輕了有寫入的目錄IO,一下子cpu就不繁忙了,磁盤寫入也快了(通過iotop可以檢視到寫入速度和之前的不一樣)

本文轉自 holy2009 51CTO部落格,原文連結:http://blog.51cto.com/holy2010/1977316

繼續閱讀