讀<<大規模web服務開發技術>>精彩內容

1

  1. “橫向擴展” (scale out):通過增加服務器數量來提高系統整體的處理能力並分擔負載  
  2. “縱向擴展” (scale up) :通過提高硬件性能來提高處理能力 

2

  1. 硬盤和內存的讀取速度差異能達到100000----1000000倍(10的5次方--10的6次方)  
  2.  
  3. 硬盤總線與內存總線的傳輸速度爲:內存:7.5G/秒,磁盤:58M/秒  

3

  1. load average: 0.7,0.6,0.5     平均負載從左到右爲1分鐘,5分鐘,15分鐘內,單位時間中處於等待狀態的任務數。也就是說
  2. 該數字報告了平均有多少任務在等待。平均負載高,說明有相應數量的任務在等待,可以認爲運行有延遲,也就是負載過高
  3.  
  4. 硬件每隔一定週期給CPU發送中斷信號,因爲是週期發送的,所以稱爲“定時器中斷”(timeer interrupt)。例如Centos5的中斷
  5. 時間設置爲4毫秒。每次發生中斷時,CPU就會進行與時間有關的處理,如推動時鐘前進、計算運行中的進程使用了多少CPU等。平均負載值
  6. 就是在每次定時器中斷髮生時計算的。 內核在發生定時器中斷時,計算就緒任務數(可以運行的任務)和等待I/O的任務數。將該數字除以單位時間,就是報告中的平均負載。 就緒任務就是由於其他任務佔有CPU而無法開始計算任務。也就是說平均負載中的負載的意思就是:
    想要執行處理,卻無法執行而不得不等待的進程有多少
    更具體的一點就是
        1.等待賦予CPU的執行權限的進程
        2.等待磁盤I/O完成的進程

 4

  1. CPU 負載過高時,尋找問題流程的思路:  
  2. 1.確認是用戶程序處理的瓶頸,還是系統程序的原因。用top 或者 sar確認  
  3. 2.再通過ps 查看可見進程的狀態和CPU使用時間等,確定導致問題的進程  
  4. 3.確定進程後,想要進一步尋找原因,可以銅鼓strace跟蹤,或oprofile進行剖析,以確定瓶頸所在  

5

  1. sar -f  指定日誌文件  
  2. sar -u  查看CPU使用率  
  3. sar -q   查看平均負載  
  4. sar -r  查看內存使用  
  5. sar -W  查看頁面交換髮生情況 

6

  1. 分佈式MYSQL應用的要點:  
  2. 1.靈活應用操作系統緩存  
  3. 2.正確設置索引  
  4. 3.以橫向擴展爲前提的設計  
  5.  
  6. 整數int類型32比特,是四個字節,字符8比特,是一個字節  
  7. 索引分爲二叉樹 與 B樹 與B+樹  
  8.  
  9. 善用explain分析索引,儘量少用Join,換成where in 

7

  1. PV = 100萬-200萬左右 單臺服務器可以支撐 (4核8G內存)  
  2.  
  3. 爬蟲服務器無法使用緩存,會爬很久以前的記錄,分流到單獨的服務器 

8

  1. 系統穩定性措施  
  2.  
  3. 維持適當的餘量-內存容量,cpu負載-> 使用到極限的7成  
  4.  
  5. 去除不穩定因素  
  6. 1.規定SQL負載上限-必要時將負載過高的SQL移到其他主機  
  7. 2.減少內存泄露  
  8. 3.異常行爲的自律控制  
  9. 自動DOS判斷 (mod_dossdetector)  
  10. 自動重啓  
  11. 自動終止耗時查詢(kill 過長的SQL)  

9

  1. 虛擬化管理  
  2. 1.虛擬機的hostname不要重複,在線遷移的時候會出問題  
  3. 2.虛擬機配合DNS能更有效的管理  
  4. 如vm1.主機.com ,當出現故障的時候可以通過名字來知道虛擬機遷移到哪個主機上,更快的定位問題  
  5.  
  6. 虛擬機消耗:  
  7. CPU: 2%-3%左右  
  8. 內存:10%左右  
  9. 網絡性能:50%左右  
  10. IO:5%左右  
  11.  
  12. SSD的訪問性能  
  13. 內存 > SSD > HDD RAID10 > HDD RAID-1 

10

  1. Tokyo Tyrant 是本地運行的key-value 存數系統TokyoCabinet的網絡版。它將數據寫在磁盤上實現永久保存,但由於有磁盤訪問,性能不足memcached,但仍比RDBMS快很多。  
  2.  
  3. Varnish 重啓後數據會丟失  
  4. 特點:  
  5. 對象(默認)通過mmap保存在磁盤上的文件中,而且進程重啓後緩存全部丟失  
  6. 基本配置通過命令行參數指定,代理規則通過配置文件(VCL)指定  
  7. 自身不能將日誌寫入文件,而是放在共享內存中 (varnishnaca命令將日誌寫到實際文件中)  
  8.  
  9. squid會把緩存寫入文件,但squid IO負載會高。 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章