如何減小服務器上rsync 的io磁盤與主服務器io 佔用的問題

對於服務上rsync 的io磁盤與主服務器io 佔用的問題,咱們能夠採用ionice來進行有效解決:服務器


服務器是一臺作數據分析的BI服,天天同步的數據文件有上萬個,目錄下也佔用了不少零碎的目錄和文件,遍歷起來也很費勁,自己之前購買的磁盤又不是IO很好的磁盤,文件一多更是很慢了,雖然不佔用CPU,可是CPU處於繁忙中了 (idle 99%,wa 1%),當服務器中須要運行大量的數據文件時,服務器的Io磁盤就會出現被佔用的狀況,致使服務器在處理數據時響應會減慢,介紹一下如何減小服務上rsync 的io磁盤與主服務器io 佔用的問題。ionic

 

  如何減小rsync主服務器的io佔用:ide


  解決方法:在啓用服務器上的rsync時,咱們能夠採用進行下降IO使用的設置:ionice -c 2 -n 7 rsync --daemonspa

 

  如何下降rsync的io磁盤佔用線程

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

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

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

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能夠查看到寫入速度和以前的不同)

相關文章
相關標籤/搜索