閱讀792 返回首頁    go 阿裏雲 go 技術社區[雲棲]


DockOne微信分享(六十七):互聯網場景下閃存優化測試和應用

本文講的是DockOne微信分享(六十七):互聯網場景下閃存優化測試和應用【編者的話】閃存在這幾年存儲領域發展非常快,應用也越來越廣泛,如何能更好的使用閃存,本次分享講一些閃存相關的優化和應用。

閃存應用場景

  • 數據庫
  • NoSQL
  • 分布式存儲
  • CDN
  • 公有雲存儲

綜合上麵幾種場景看,閃存主要適合有比較高的隨機IO需求和帶寬需求的場景。場景選擇上,也是要發揮閃存的長處。目前上麵業務中 未來幾年發展比較快的會是在公有雲存儲這一部分。下圖就是某廠商雲盤對比,可以看到閃存的價格已經很接近機械硬盤了,而單從每IOPS成本看,性價比會更高。
圖片1.png

閃存概述

固態硬盤,不過可以從廣義理解,從2010年開始在互聯網行業大規模應用,性能和穩定性已經得到大規模集群線上驗證,應用場景已經非常廣泛。當然閃存的IOPS比傳統機械硬盤高幾個數量級,但是更核心的還是在延遲降低上,優勢更大。
圖片2_副本.jpg

上圖就很好的說明了,閃存在訪問延遲上的提升。

提到閃存,不得不提到閃存裏非常基礎的組件NAND。NAND分類現在也是非常多。
圖片3.png

測試

我們為什麼要做測試呢?
  • 了解產品
  • 了解自己
  • 優化自己
  • 優化成本模型

所以說麵對如此多的廠商和產品,如何做到更高效的測試 是一個很重要的問題。雖然現在大家都開始轉向雲服務,直接接觸硬件產品並不多,但是雲廠商的測試依然是很重要的一部分。

測試很Low嗎?
  • 測試很簡單?
  • 沒科技含量?
  • 測試很無聊?

圖片4.png

上圖是我們需要了解的存儲技術棧。

測試準則:
  • 明確目標
  • 高效
  • 完備性
  • 可量化
  • 可對比
  • 產出

測試過程:
  • 明確測試需求
  • 明確測試目標
  • 選擇測試工具和測試模型
  • 製定測試計劃
  • 測試過程跟蹤
  • 測試數據驗證
  • 測試報告

測試工具:
  • IO層麵:fio,sysbench,iometer,dd等
  • OLTP:sysbench,TPC-C
  • 輔助工具:tcpcopy,tcprstat,pt-log-player

SysBench:
  • 開源的多線程性能測試工具
  • 支持CPU IO Mutex OLTP等測試
  • 可以lua腳本定製測試用例
  • 常用的insert select和oltp三種場景

測試痛點:
  • 重複工作很多
  • 標準不統一
  • 測試周期很長
  • 人工成本高
  • 測試期間異常處理
  • 測試數據處理和測試報告

解決痛點首先就是規範化,主要是以下幾方麵:
  • 測試目標標準化
  • 測試工具標準化
  • 測試流程標準化
  • 測試報告標準化

自動化測試流程:
  • 自動化測試框架
  • 基於Python
  • 包含整體標準測試流程
  • 覆蓋主流測試工具
  • 數據處處理和生成報表
  • 定製測試計劃

下圖是測試流程圖
圖片5_副本.jpg

自動化的好處也是顯而易見的:
  • 大大節省了人力
  • 提高測試效率
  • 測試的更加完整
  • 有精力做更深入的測試優化

測試閃存需要注意的幾點:
  • 我們需要的性能是steady state
  • OP
  • NAND
  • 全盤寫
  • 測試時間不能太短
  • 性能抖動
  • 監控

圖片6.png


MySQL測試的一些問題:
  • 測試數據集大小,至少要過億
  • 和內存buffer比例,要看在小cache下的性能
  • 物理讀
  • 事務複雜度
  • 多表並發

係統層麵的一些注意點:
  • 文件係統:Ext4 xfs
  • IO調度算法
  • IO cpu affinity
  • Scsi-mq/blk-mq(新內核特性)

測試優化結合

InnoDB壓縮測試:
  • InnoDB內置壓縮
  • 基於zlib庫
  • 理論可以達到50%左右的壓縮比
  • 但是性能有損失
  • CPU時間換存儲空間
  • 對SSD壽命有好處
  • 如何用好呢?

圖片7.png

基於我們之前的測試過程,我們可以得到結論,InnoDB壓縮比在50%左右,對寫入性能損失比較大, 損失比例在70%左右。根據這個結論,我們就可以針對我們線上業務選擇是否需要使用InnoDB壓縮。

TokuDB:
  • MySQL的一個存儲引擎,支持事務 ACID 特性
  • 支持多版本控製(MVCC)
  • 基於Fractal Tree Index,非常適合寫入密集場景
  • 高壓縮比
  • 原生支持Online DDL
  • 主流分支都支持
  • 收費 轉開源

圖片8.png

這是我們測試結果,可以看到TokuDB更好的壓縮比和更好的寫入穩定性,當然代價就是更高的CPU消耗。

總結

  • 現在不再是性能為王的時代
  • 真正了解自己需求才是更重要的
  • 發掘閃存性能,軟硬件結合
  • 拓展閃存應用空間
  • 做真正有價值的事情
  • 如何做到更好的軟硬件結合(其實現在硬件是超前於一些軟件的)

圖片9.png

以此圖結尾,不要隻活在當下,要勇敢的接受新技術,勇於試錯,當然試錯成本和收益也要評估和可控的。其實很多技術理解透徹了,可能並沒有別人說的“邪惡”。

以上內容根據2016年7月5日晚微信群分享內容整理。分享人楊尚剛,熊貓TV DBA,前新浪高級數據庫工程師,負責新浪微博核心數據庫架構改造優化,以及數據庫相關的服務器存儲選型設計。 DockOne每周都會組織定向的技術分享,歡迎感興趣的同學加微信:liyingjiesz,進群參與,您有想聽的話題或者想分享的話題都可以給我們留言。

原文發布時間為:2016-07-10

本文作者:楊尚剛

本文來自雲棲社區合作夥伴Dockerone.io,了解相關信息可以關注Dockerone.io。

原文標題:DockOne微信分享(六十七):互聯網場景下閃存優化測試和應用

最後更新:2017-10-19 14:33:26

  上一篇:go  電商網站的支付接入該怎麼做呢?
  下一篇:go  如何使用Docker部署一個Go Web應用程序