成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

高性能高并發(fā)系統(tǒng)的穩(wěn)定性保障

開發(fā) 開發(fā)工具
可行性指標:999,一周10分鐘;9999,一周1分鐘不可用。可用性:從客戶角度??捎眯远攘浚篈 = MTBF / (MTBF + MTTR) ,其中MTBF表示mean time betweenfailures,而MTTR表示maximum time to repair or resolve。

作者:肖飛,于2011年8月份加入京東,曾親身參與到京東的應用性能監(jiān)控、統(tǒng)一日志、流式計算、內(nèi)存緩存、四層防攻擊等一些基礎技術平臺的研發(fā)和搭建工作,經(jīng)歷了京東的技術系統(tǒng)從簡單粗放向復雜精細化的演變過程。目前主要工作為多中心交易項目中的數(shù)據(jù)復制中間件JingoBUS的研發(fā)。平時也會開發(fā)一些公共的平臺和工具,關注分布式系統(tǒng)的實現(xiàn)、程序設計、性能優(yōu)化、開發(fā)語言等。

本文是2015年肖飛在內(nèi)部分享的《高性能高并發(fā)系統(tǒng)的穩(wěn)定性保障》PPT內(nèi)容。

性能、并發(fā)、穩(wěn)定性三者關系

  • 高性能:高吞吐量、低延時
  • 公式:吞吐量(并發(fā))=單位時間/平均延時
  • N-th% Latency:TP99, TP999
  • 穩(wěn)定性:低延時的穩(wěn)定性標準為TP99/TP999是隱含的必要條件;系統(tǒng)的穩(wěn)定性標準:高+可用;用戶標準

吞吐量:QPS, TPS,OPS等等,并發(fā)。并不是越高越好,需要考慮TP99。用戶角度:系統(tǒng)是個黑盒,復雜系統(tǒng)中的任何一環(huán)到會導致穩(wěn)定性問題。SLA:在某種吞吐量下能提供TP99為n毫秒的服務能力。降低延時,會提高吞吐量,但是延時的考核是TP99這樣的穩(wěn)定的延時。

如何改善延時

你應該知道如下表格

原文:http://www.eecs.berkeley.edu/~rcs/research/interactive_latency.html

  • JeffDean
  • Disk random read IOPS:
  • IOPS = 1000 / (4 + 60000/7200/2) = 122
  • IOPS = 1000 / (4 + 60000/10000/2) = 142
  • IOPS = 1000 / (4 + 60000/15000/2) = 166
  • SSD random read IOPS:
  • IOPS = 1000000/16=62500

數(shù)字的啟示

  • 高速緩存的威力;
  • 線程切換代價cache miss
  • 順序寫優(yōu)于隨機寫
  • 局域網(wǎng)絡快于本地HDD
  • 大塊讀優(yōu)于小塊讀
  • SSD解決隨機讀寫
  • 跨地域IDC網(wǎng)絡是最大的延時

策略

  • 關鍵路徑:“28原則”(20%的代碼影響了80%的性能問題,抓重點)、“過早優(yōu)化是萬惡之源”。不同解讀;
  • 優(yōu)化代碼:空間換時間:各級緩存;時間換空間:比如傳輸壓縮,解決網(wǎng)絡傳輸?shù)钠款i;多核并行:減少鎖競爭;lesscode;各類語言、框架、庫的trick;算法+數(shù)據(jù)結構,保持代碼的清晰、可讀、可維護和擴展;
  • 通過性能測試和監(jiān)控找出瓶頸

metric

原文:http://www.vpsee.com/2014/09/linux-performance-tools/

通過性能測試和監(jiān)控:

  • 單系統(tǒng)operf/jprofiler etc;
  • Java的一系列工具:jstat, jstack, jmap, jvisualvm,HeapAnalyzer, mat
  • 分布式跟蹤系統(tǒng):Dapper,鷹眼等

benchmark

原文:http://www.vpsee.com/2014/09/linux-performance-tools/

微觀

  • 內(nèi)存分配

吞吐量和利用率的權衡

顯式分配器:jemalloc/tcmalloc代替默認的ptmalloc

隱式分配器:JVM GC的各種調(diào)優(yōu)

是否使用hugepagen預分配和重用:Netty的Pooled ByteBuf

減少拷貝:new ArrayList(int), new StringBuilder(int)

內(nèi)存分配器利用率:減少內(nèi)部或外部碎片;Page Table(頁表), TLB(頁表寄存器緩沖),減少TLB miss,pin cache。增加COW的開銷, 與內(nèi)存分配器的實現(xiàn)沖突。JVM的GC調(diào)優(yōu)是很多Java應用的關注重點。

  • 減少系統(tǒng)調(diào)用

批處理: buffer io,pipeline

使用用戶態(tài)的等價函數(shù): gettimeofday ->clock_gettime

減少鎖競爭

RWMutex

CAS

Thread local

最小化鎖范圍

最小化狀態(tài),不變類

批處理增加了內(nèi)存拷貝的開銷,但是減少了系統(tǒng)調(diào)用開銷,減少了上下文切換的影響。bufferio的例子:日志、網(wǎng)絡讀寫。pipeline的例子:redis。

  • 減少上下文切換

觸發(fā):中斷、系統(tǒng)調(diào)用、時間片耗盡、IO阻塞等

危害:L1/L2 Cache Missing,上下文保存/恢復

單線程:基于狀態(tài)機redis和Master/Worker的nginx

CPU親和性綁定

ThreadPool的配置,不同任務類型不同的ThreadPool

幾個例子:1、docker中線程池大小的核數(shù)自動設定;2、CPU節(jié)能模式;3、CENTOS-7.1內(nèi)核BUG。

  • 網(wǎng)絡

內(nèi)核TCP Tuning參數(shù)和SocketOption:net.ipv4.tcp_*

TCP Socket連接池

網(wǎng)絡I/O模型

傳輸壓縮

編解碼效率

超時、心跳和重試機制

網(wǎng)卡:多隊列中斷CPU綁定;增加帶寬:萬兆、Bonding;Offload特性:ethtool -k eth0;UIO Driver: DPDK

連接池:減少握手、減少服務端session創(chuàng)建消耗。網(wǎng)絡I/O模型:BIO、Non-Blocking IO、AIO;select/poll、epoll/kqueue、aio;netty使用nativetransport。Offload特性:ethtool-k eth0。 將數(shù)據(jù)包分組、重組、chksum等從內(nèi)核層放到硬件層做。

如何提高吞吐量

改善和降低單機的延時,一般就能提高我們的吞吐量。從集群化上講,因素就比較多。

宏觀

  • 提升系統(tǒng)擴展能力
  • 應用的無狀態(tài)架構
  • 緩存/存儲的集群架構:冗余復制(負載均衡、異構解除系統(tǒng)依賴);分布式(數(shù)據(jù)sharding , 副本,路由,數(shù)據(jù)一致性);切換
  • 微服務/SOA
  • 擴容
  • 異步化
  • 緩存

復制

  • 通過復制提高讀吞吐量、容災、異構
  • 通過數(shù)據(jù)分片,提高寫吞吐量
  • 程序雙寫:一致性難以控制,邏輯復雜,冪等性要求。完全把控復制和切換時機。異構系統(tǒng)唯一選擇。 同步雙寫(數(shù)據(jù)一致性高,影響性能,不適合多個復制集); 異步雙寫(數(shù)據(jù)一致性差,性能高,適合多個復制集);CDC[Change Data Capture](canal,databus等)
  • 底層存儲復制機制:一致性由底層控制,對應用端透明。程序和底層存儲配合切換

擴容

  • 每年大促前的核心工作:該擴容了嗎?現(xiàn)狀分析;擴容規(guī)劃(關鍵系統(tǒng)峰值20倍吞吐量);擴容依據(jù)(架構梳理、線上壓測);
  • 擴容checklist:前(部署、DB授權....);后(配置更新、LB更新、接入日志、接入監(jiān)控....)
  • 應用擴容、數(shù)據(jù)擴容、寫擴容、讀擴容
  • 垂直擴容:加內(nèi)存、升級SSD、更換硬件。數(shù)據(jù)復制、切換
  • 水平擴容:數(shù)據(jù)遷移或初始化

現(xiàn)狀分析:去年雙十一到目前,峰值時的性能數(shù)據(jù);軟硬件性能指標;數(shù)據(jù)存儲容量。

擴容規(guī)劃;流量規(guī)劃:核心系統(tǒng)20倍吞吐量;數(shù)據(jù)增長量規(guī)劃;擴容依據(jù);架構梳理;線上壓測。

讀擴容比寫擴容難;讀寫分離。

異步化

  • 解耦利器
  • 削峰填谷
  • 頁面異步化
  • 系統(tǒng)異步化
  • JMQ
  • 狀態(tài)機(worker)+DB
  • 本地隊列
  • 集中式緩存隊列

本地內(nèi)存隊列:實時價格回源服務響應之后,通過BlockingQueue異步更新前端緩存。本地日志隊列:庫存預占。集中式緩存隊列:商品變更任務下發(fā)系統(tǒng)。

異步化的一些例子:

1、操作系統(tǒng)內(nèi)核的高速緩存隊列,磁盤延遲刷盤;

2、mysql數(shù)據(jù)庫復制、redis復制;

異步化需要注意的是:

1、任務要落地;

2、不可避免的重復執(zhí)行,需要冪等;

3、是否需要保證順序、如何保證順序。

緩存

  • 久經(jīng)考驗的局部性原理
  • 多級緩存:瀏覽器browser cache、cdn、nginx本地redis緩存、本地JVM緩存、集中式緩存...
  • 緩存前置:2/8原則、單品頁、實時價格、庫存狀態(tài)
  • 一致性、延遲權衡
  • 緩存主節(jié)點負責寫,和最重要的校驗
  • 通過CDC監(jiān)聽數(shù)據(jù)庫binlog主動更新緩存
  • CPU不是瓶頸,網(wǎng)絡才是
  • 優(yōu)化編碼,減少尺寸
  • 優(yōu)化操作
  • 優(yōu)化拓撲

如何保障穩(wěn)定性

宏觀

  • 提高可用性
  • 分組和隔離
  • 限流
  • 降級
  • 監(jiān)控和故障切換

可用性

  • 可用性衡量指標:幾個9
  • 可用性度量:A = MTBF / (MTBF + MTTR)
  • 減少故障、加長可用時間
  • 減少故障修復時間(發(fā)現(xiàn)、定位、解決)
  • 冗余復制、災備切換,高可用的不二法門
  • 如何快速切換?
  • 切換的影響
  • 監(jiān)控、ThoubleShooting、軟件質(zhì)量的影響

可行性指標:999,一周10分鐘;9999,一周1分鐘不可用??捎眯裕簭目蛻艚嵌?。可用性度量:A = MTBF / (MTBF + MTTR) ,其中MTBF表示mean time betweenfailures,而MTTR表示maximum time to repair or resolve。

高可用行性的成本和收益,好鋼用在刀刃上。

如何快速切換:有可以切換的?可以不重啟應用么? 操作快捷么?演練過么?

切換的影響:切換目標資源能否承受新增的壓力;切換是否影響狀態(tài)(數(shù)據(jù)的一致性、丟失問題)。

監(jiān)控到位、即時,減少故障發(fā)現(xiàn)時間;監(jiān)控全面,增加故障分析時可以參考的數(shù)據(jù)。

troubleshooting的能力,踩坑的精力, COE,問題本質(zhì)、根源的追查。

軟件質(zhì)量:編碼是否健壯、(異常處理、防御性、2/8原則)超時處理、日志是否全面合理、線程名稱等等。

測試:case是否全面、自動回歸。

上線:是否灰度:N+1, N+2;回滾方案、數(shù)據(jù)回滾。

分組和隔離

  • 網(wǎng)絡流量隔離:大數(shù)據(jù)單獨部署,QOS;
  • 業(yè)務系統(tǒng)隔離:秒殺系統(tǒng)獨立出主交易;
  • 流量分組:對使用者按照重要程度、請求量、SLA要求等因素分級
  • 存儲的分組:按照使用者重要程度、實時性要求等因素,將數(shù)據(jù)庫的復制集分組

傳統(tǒng)世界的例子:道路被劃分為高速道路、自行道、人行道等,各行其道。

流量分組

舉例:商品基礎信息讀服務。對使用者按照重要程度、請求量、SLA要求等因素分級,將服務實例和存儲分組:交易、生產(chǎn)、網(wǎng)站、移動、promise、ERP...

讀寫分離

舉例:商品主數(shù)據(jù)服務。按照使用者重要程度、實時性要求等因素,將數(shù)據(jù)庫分組:ERP、POP、網(wǎng)站、大數(shù)據(jù)平臺...

限流

  • 限流原則:影響到用戶體驗,謹慎使用
  • 區(qū)分正常流量和超預期流量:限流標準來自壓力測試、折算
  • 讀少限,寫多限
  • 客戶端配合限流
  • 不同分組的限流閾值
  • 各層限流手段

前置限流,快速失敗:比如通過提供給調(diào)用方的JSF客戶端,封裝限流邏輯。

Nginx層限流:自主研發(fā)的模塊;幾個規(guī)則:賬戶,IP,系統(tǒng)調(diào)用流程。

應用限流:減少并發(fā)數(shù)線程數(shù);讀少限,寫多限;DB限流;連接數(shù)。

降級

保證用戶的核心需求

降級需要有預案和開關:確定系統(tǒng)和功能級別,是否可降,影響如何;降級需要有開關

非關鍵業(yè)務屏蔽:購物車的庫存狀態(tài)

業(yè)務功能模塊降級:實時價格更新不及時;peking庫,保訂單管道、生產(chǎn),暫停統(tǒng)計相關

數(shù)據(jù)降級:動態(tài)降級到靜態(tài);遠程服務降級到本地緩存:采銷崗服務

監(jiān)控和切換

無所不在的監(jiān)控:網(wǎng)絡流量;操作系統(tǒng)指標;服務接口調(diào)用量、TP99、錯誤率...;日志;業(yè)務量變化;太多監(jiān)控了,如何提高監(jiān)控的質(zhì)量

切換:切換開關;成熟的流程可自動化;數(shù)據(jù)的重要性、一致性,要求強一致的,可以人工介入;系統(tǒng)的指標沒法判斷、監(jiān)控點不全的,需人工判斷決定

review

Nginx層限流:自主研發(fā)的模塊;幾個規(guī)則:賬戶,IP,系統(tǒng)調(diào)用流程。

應用限流:減少并發(fā)數(shù)線程數(shù);讀少限,寫多限;DB限流;連接數(shù)。

如何驗證性能和穩(wěn)定性

  • 線上壓測:兩類壓力測試場景(讀業(yè)務壓測、寫業(yè)務壓測);壓力測試方案(從集群中縮減服務器、復制流量、模擬流量、憋單)
  • 全流程演練:降級、切換等

讀業(yè)務壓力測試:是將線上業(yè)務隔離后,壓測至系統(tǒng)臨界點,通過分析系統(tǒng)在臨界點時軟硬件指標定位系統(tǒng)短板并優(yōu)化。

寫邏輯壓力測試,如果數(shù)據(jù)具有不可恢復性,一定要提前做好數(shù)據(jù)隔離保護,如訂單號壓測,為避免影響線上業(yè)務,壓測前后都要做好“跳號”以隔離線上數(shù)據(jù)。

從集群中縮減服務器。加大單臺服務器的壓力。大概估算出正常的集群規(guī)模能夠承載的流量。

復制流量。主要通過 Tcpcopy 復制端口流量,多層翻倍放大流。

模擬流量。模擬流量主要腳本攻擊工具和壓測工具結合,主要用ab,siege,webbench,loadruner通過多臺機器壓測。分機房,按分支進行壓測。

憋單。主要針對后續(xù)的訂單生產(chǎn)系統(tǒng)壓測。通過在管道積壓一批訂單,然后快速釋放,形成對后續(xù)生產(chǎn)系統(tǒng)持續(xù)快速的沖擊,達到壓測的目的。

【本文來自51CTO專欄作者張開濤的微信公眾號(開濤的博客),公眾號id: kaitao-1234567】

責任編輯:武曉燕 來源: 開濤的博客
相關推薦

2022-10-20 12:04:08

2022-06-14 14:57:47

穩(wěn)定性高可用流程

2022-02-24 08:18:12

穩(wěn)定性高可用可用性

2021-01-27 11:48:34

高可用系統(tǒng)Review

2021-03-10 11:18:21

高可用系統(tǒng)限流

2023-06-30 08:43:36

2024-12-12 09:18:21

2022-12-15 09:56:27

2022-05-05 11:04:35

技術高可用系統(tǒng)

2024-07-08 12:37:29

2020-07-13 08:10:13

軟件設計系統(tǒng)

2022-09-15 08:33:27

安全生產(chǎn)系統(tǒng)Review

2014-05-19 11:58:21

世紀互聯(lián)微軟云服務

2023-08-28 06:58:40

2023-04-26 18:36:13

2011-12-21 09:46:46

程序員

2023-08-29 11:38:27

Java內(nèi)存

2023-02-27 18:31:20

架構服務監(jiān)控

2009-07-01 18:01:20

JSP代碼塊緩沖OSCache

2021-05-24 09:28:41

軟件開發(fā) 技術
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久青草影院 | 国产精品揄拍一区二区 | 日韩成人中文字幕 | 欧美成年黄网站色视频 | 99re视频在线 | 一区二区三区国产精品 | 亚洲一区二区三区免费在线 | 国产在线二区 | 久久亚洲春色中文字幕久久久 | 精品久久久久久国产 | 日屁视频 | 精品亚洲永久免费精品 | 国产精品欧美一区二区三区 | av日韩一区 | 成人在线视频网址 | 久久成人人人人精品欧 | 黑人巨大精品欧美一区二区免费 | 久久国产精品网 | av国产精品毛片一区二区小说 | 日本精品视频在线 | 一区在线播放 | 中文字幕在线人 | 国产高清一二三区 | 欧美区在线 | 久久精品视频91 | 精品国产乱码久久久久久闺蜜 | 日本一区二区三区视频在线 | 国产精品一区二区在线播放 | 欧美精品一区二区三区在线 | 日本一道本视频 | 久久久久亚洲精品 | 中文字幕在线免费观看 | 欧洲一区二区三区 | 在线第一页 | 产真a观专区 | 国内自拍偷拍一区 | 丁香五月网久久综合 | 精品久久久av | 中国免费黄色片 | 久久精品小视频 | 国产高清在线视频 |