簡記 大規模Web開發技術(第二章)

2021-08-01 04:37:39 字數 1839 閱讀 3288

第二章主題:大規模資料處理入門(linux背景下)

中-大資料標準,每張sql表的資料量都以gb為單位,表中資料量千萬級別。

記憶體和磁碟的讀取速率,差距在10^5~10^6倍。

linux下:使用top或uptime等命令顯示平均負載。

平均負載從左到右分別為1 分鐘、5 分鐘、15 分鐘內,單位時間中處於等待狀態的任務數。也就是說,該數字報告了平均有多少任務在等待。平均負載高,說明有相應數量的任務在等待,可以認為執行有延遲, 也就是負載過高。

平均負載過高時,要在cpu和i/o部分找原因。sar或者vmstat可以檢視cpu使用率和i/o等待率隨時間的推移情況。

"cpu 負載"過高時,用以下流程尋找原因:

確認是使用者程式處理的瓶頸,還是系統程式的原因。用

top 或sar 確認;

再通過ps 檢視可見程序的狀態和cpu 使用時間等,確

定導致問題的程序;

確定程序之後,想要進一步尋找原因的話,可以通過

strace 跟蹤,或oprofile 進行剖測,以確定瓶頸所在。

一般來說, cpu 負載是由於以下兩者之一:

·磁碟或記憶體容量等其他部分沒有成為瓶頸,即處於理想

狀態;

·程式失控,需要消耗過多的cpu 。

如果是前者,並且系統的吞吐量有問題,可以採取增加伺服器、改善程式邏輯和演算法的方式。後者的情況要去除故障,避免程式失控。

"i/o 負載"過高,其原因多半是程式發出的i/o 請求過多導致負載過高,或是發生頁面交換導致頻繁訪問磁碟。應通過sar或vmstat剖

確認交換區狀態,以找出原因。

根據確認結果,如果是發生頁面交換的情況,應該從以下幾點著手調查:

·用ps 確認是否有程序消耗了大量的記憶體;

·如果由於程式故障造成記憶體消耗過大,應改進程式;

·如果是因為記憶體安裝不足,就要增加記憶體。無法增加內

存時考慮分布式。

如果是沒有交換發生,而且磁碟i/o頻繁的情況,可能是用

於快取的記憶體不足。根據伺服器擁有的資料量和可增加的記憶體

量,按照以

下步驟選擇應對方法:

· 如果通過增加記憶體可以擴大快取,就增加記憶體;

· 如果增加記憶體還不夠用,就考慮分散儲存資料,或增加快取伺服器等。當然,改進程式減少i/o頻率也是一種方法。

上面就是尋找負載原因的基本策略。

改善i/o效能,需要確認以下幾點:

·能否通過增加記憶體以保證快取區域的方法解決;

.資料量是否本來就過多;

·有無必要改變應用程式的i/o演算法。

*****

相反,資料庫伺服器需要較多i/o資源。

web應用程式的三層結構由**伺服器、應用程式伺服器、資料庫組成。

處理大規模資料的重點:

1.能在記憶體中完成多少?

將磁碟尋道次數降到最低(使用索引)

可以實現分布式,有效利用區域性性

2.能應對資料量增加的演算法和資料結構

例如:線性搜尋→二叉樹搜尋

o(n)→o(logn)

3.資料壓縮、資訊搜尋技術

大規模Web服務開發技術

大規模web服務開發技術 日 伊藤直也,田中慎司編著 李劍 譯 isbn 978 7 121 13884 3 2011年7月出版 定價 59.00元 16開 356頁 內 容 簡 介 hatena是日本最大的web 服務提供商之一,它提供的服務包括關鍵字 類似於維基百科 部落格 相簿等。本書的內容主...

大規模Web服務開發技術

大規模web服務開發技術 日 伊藤直也,田中慎司編著 李劍譯 isbn 978 7 121 13884 3 2011年7月出版 定價 59.00元 16開 356頁 內 容 簡 介 hatena是日本最大的web 服務提供商之一,它提供的服務包括關鍵字 類似於維基百科 部落格 相簿等。本書的內容主要...

大規模Web服務開發技術

大規模web服務開發技術 日 伊藤直也,田中慎司編著 李劍譯 isbn 978 7 121 13884 3 2011年7月出版 定價 59.00元 16開 356頁 內容簡介 hatena 是日本最大的 web 服務提供商之一,它提供的服務包括關鍵字 類似於維基百科 部落格 相簿等。本書的內容主要來...