記錄redis "Connection timed out"處理

來源:互聯網
上載者:User

標籤:redis time out

最近程式報錯:Failed to connect to redis: Connection timed out

發現THP的有關資訊,決定做測試及修改

1.page 與 Huge Pages

page: 

    一般而言,記憶體管理的最小塊級單位叫做page,一個page是4096bytes,1M的記憶體會有256個page,1GB的話就會有256,000個page。

     CPU通過內建的記憶體管理單元維護著page表記錄。

Huge pages:

    Huge Pages就是大小為2M到1GB的記憶體page,主要用於管理數千兆的記憶體,比如1GB的page對於1TB的記憶體來說是相對比較合適的。

HugePage廣泛啟用開始於Kernal 2.6,一些版本下2.4核心也可以是用。在作業系統Linux環境中,記憶體是以頁Page的方式進行分配,預設大小為4K。如果需要比較大的記憶體空間,則需要進行頻繁的頁分配和管理定址動作。

    HugePage是傳統4K Page的替代方案。顧名思義,是用HugePage可以讓我們有更大的記憶體分頁大小。無論是HugePage還是傳統的正常Page,這個過程都涉及到OS記憶體定址過程

當一個進程訪問記憶體的時候,並不是直接進行記憶體位置訪問,是需要通過Page Table進行轉移變換。在使用HugePage的情況下,PageTable具有了額外的屬性,就是判斷該頁記錄是HugePage還是Regular Page。

2.THP

  THP(Transparent Huge Pages)是一個使管理Huge Pages自動化的抽象層。

  Linux本身的頁大小是固定的4KB,在2.6.38核心新增了THP,透明地支援huge page(2MB)的使用,並且預設開啟。

  THP優點:

    (1) 減少page fault。一次page fault可以載入更大的記憶體塊。

    (2) 更小的頁表。相同的記憶體大小,需要更少的頁。

    (3) 由於頁表更小,虛擬位址到物理地址的翻譯也更快。

  THP缺點:

    (1)降低分配記憶體效率。需要大塊、連續記憶體塊,核心線程會比較激進的進行compaction,解決記憶體片段,加劇鎖爭用。

    (2)降低IO吞吐。由於swapable huge page,在swap時需要切分成原有的4K的頁。Oracle的測試資料顯示會降低30%的IO吞吐。

3.測試效能

  查看系統版本:

 

uname -r  Linux ckl-master1 2.6.32-504.el6.x86_64

  

  查看當前的Huge pages設定:

  grep Huge /proc/meminfo AnonHugePages:   5971968 kBHugePages_Total:       0HugePages_Free:        0HugePages_Rsvd:        0HugePages_Surp:        0Hugepagesize:       2048 kB

  查看是否開啟了Huge pages: 

  cat /sys/kernel/mm/transparent_hugepage/enabled [always] madvise never

測試THP開啟redis效能:

# /usr/local/redis/bin/redis-benchmark -P 4 -t set -r 5000000 -n 10000000====== SET ======  10000000 requests completed in 41.43 seconds  50 parallel clients  3 bytes payload  keep alive: 198.62% <= 1 milliseconds98.62% <= 2 milliseconds98.63% <= 4 milliseconds98.63% <= 5 milliseconds98.63% <= 7 milliseconds98.63% <= 12 milliseconds98.64% <= 13 milliseconds98.64% <= 14 milliseconds98.65% <= 15 milliseconds98.66% <= 16 milliseconds98.68% <= 17 milliseconds98.69% <= 18 milliseconds98.74% <= 19 milliseconds98.83% <= 20 milliseconds98.96% <= 21 milliseconds99.13% <= 22 milliseconds99.32% <= 23 milliseconds99.49% <= 24 milliseconds99.60% <= 25 milliseconds99.67% <= 26 milliseconds99.74% <= 27 milliseconds99.79% <= 28 milliseconds99.81% <= 29 milliseconds99.84% <= 30 milliseconds99.85% <= 31 milliseconds99.86% <= 32 milliseconds99.86% <= 33 milliseconds99.87% <= 34 milliseconds99.87% <= 35 milliseconds99.88% <= 36 milliseconds99.89% <= 37 milliseconds99.89% <= 38 milliseconds99.89% <= 39 milliseconds99.89% <= 40 milliseconds99.90% <= 42 milliseconds99.90% <= 43 milliseconds99.91% <= 44 milliseconds99.91% <= 49 milliseconds99.91% <= 53 milliseconds99.91% <= 54 milliseconds99.92% <= 55 milliseconds99.92% <= 56 milliseconds99.93% <= 57 milliseconds99.93% <= 62 milliseconds99.93% <= 63 milliseconds99.93% <= 65 milliseconds99.93% <= 66 milliseconds99.93% <= 67 milliseconds99.94% <= 68 milliseconds99.94% <= 74 milliseconds99.94% <= 76 milliseconds99.94% <= 77 milliseconds99.94% <= 78 milliseconds99.95% <= 79 milliseconds99.95% <= 81 milliseconds99.95% <= 82 milliseconds99.95% <= 83 milliseconds99.95% <= 85 milliseconds99.96% <= 86 milliseconds99.96% <= 91 milliseconds99.96% <= 92 milliseconds99.97% <= 93 milliseconds99.97% <= 95 milliseconds99.97% <= 96 milliseconds99.98% <= 97 milliseconds99.99% <= 98 milliseconds99.99% <= 99 milliseconds99.99% <= 100 milliseconds99.99% <= 101 milliseconds99.99% <= 126 milliseconds100.00% <= 157 milliseconds100.00% <= 158 milliseconds100.00% <= 168 milliseconds100.00% <= 169 milliseconds100.00% <= 169 milliseconds241382.62 requests per second

 關閉THP:

  echo never > /sys/kernel/mm/transparent_hugepage/enabled  cat /sys/kernel/mm/transparent_hugepage/enabled     always madvise [never]


  測試關閉THPredis效能:

/usr/local/redis/bin/redis-benchmark -P 4 -t set -r 5000000 -n 10000000====== SET ======  10000000 requests completed in 26.72 seconds  50 parallel clients  3 bytes payload  keep alive: 199.70% <= 1 milliseconds99.71% <= 2 milliseconds100.00% <= 3 milliseconds100.00% <= 3 milliseconds374321.53 requests per second

關閉THP後,redis的回應時間明顯縮短,建議關閉THP,需要重啟redis進程

本文出自 “深呼吸再出擊” 部落格,謝絕轉載!

記錄redis "Connection timed out"處理

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.