2017年總結及2018年計劃

  時間的車輪已經滾過了2017,原本是計劃年末12月份結束以前將過去一年的工做和學習總結下,無奈一直託更,看來拖延症仍是沒有改善;趁着2018年到來之時,月初留空,就將這件事情落實下。ios

  其實2017年大概就是折騰如下三件事情:數據庫

  1、以性能爲相關的工做,這佔用這一年的大部分時間,包括性能測試,性能分析和性能調優。緩存

  一、性能測試:這沒什麼好說的,大都是重複的執行,先根據測試需求將測試場景設計好,而後重複執行,找到問題就須要記錄,而後從新執行驗證,挺枯燥的。性能優化

  二、性能分析:性能分析的關鍵在於數據的收集,沒有數據收集何來分析呢,大數據分析也是這套路;數據收集又在於監控,針對不一樣的運行環境部署相應的監控配置;待數據收集完畢後,按預期的數據需求來分析數據,服務器的性能分析基本都是看CPU,內存,磁盤和IO,網絡和IO等這些數據。大多數服務器又分爲應用,中間件,數據庫,讓服務器專心幹一種事情。服務器

  CPU分析網絡

  在觀察CPU性能的時候,按照負載特徵概括的方法,能夠檢查以下清單:  多線程

  * 整個系統範圍內的CPU負載如何,CPU使用率如何,單個CPU的使用率呢?
  * CPU負載的併發程度如何?是單線程嗎?有多少線程?
  * 哪一個應用程序在使用CPU,使用了多少?
  * 哪一個內核線程在使用CPU,使用了多少?
  * 中斷的CPU用量有多少?
  * 用戶空間和內核空間使用CPU的調用路徑是什麼樣的?
  * 遇到了什麼類型的停滯週期?架構

  這裏列舉了一些系統性能分析工具,調用路徑和停滯週期的分析可使用perf工具,dstat工具也比較經常使用,也可使用DTrace等更靈活的工具。併發

  

工具函數

描述
uptime 平均負載
vmstat 包括系統範圍的CPU平均負載
top 監控每一個進程/線程CPU用量
pidstat 每一個進程/線程CPU用量分解
ps 進程狀態
perf CPU剖析和跟蹤,性能計數器分析

更強大的工具可使用火焰圖,火焰圖能夠幫助分析CPU的調用路徑。

內存分析

內存問題檢查清單:

* 系統範圍內的物理內存和虛擬內存使用率
* 換頁、交換、oom的狀況
* 內核和文件系統緩存的使用狀況
* 進程的內存用於何處
* 進程爲什麼分配內存
* 內核爲什麼分配內存
* 哪些進程在持續地交換
* 進程或者內存是否存在內存泄漏?

內存的分析工具以下:

工具 描述
free 緩存容量統計信息
vmstat 虛擬內存統計信息
top 監視每一個進程的內存使用狀況
ps 進程狀態
Dtrace 分配跟蹤
 
除了DTrace,全部的工具只能回答信息統計,進程的內存使用狀況等等,至因而否發生內存泄漏等,只能經過分配跟蹤。可是DTrace須要對內核函數有很深刻的瞭解,經過D語言編寫腳本完成跟蹤。Perf也有一些諸如cache-miss、page-faults的事件用於跟蹤,可是並不直觀。
 
磁盤和IO分析

對於磁盤IO,能夠列出以下等問題來幫助咱們分析性能問題:

* 每塊磁盤的使用率是多少?
* 每塊磁盤上有多長等待隊列?
* 平均服務時間和等待時間時多少?
* 是哪一個應用程序或者用戶正在使用磁盤?
* 應用程序讀寫的方式是怎樣的?
* 爲何會發起磁盤IO,內核調用路徑是什麼樣的?
* 磁盤上的讀寫比是多少?
* 隨機IO仍是順序IO?

 Linux對磁盤的性能分析工具主要以下:

工具 描述
iostat 各類單個磁盤統計信息
iotop、pidstat 按進程列出磁盤IO的使用狀況
perf、Dtrace 跟蹤工具
磁盤上是隨機IO仍是順序IO,不少時候並無很好的方式去判斷,由於塊設備回寫磁盤的時候,隨機IO可能已經被整理爲順序IO了。對於磁盤的分析一樣可使用perf跟蹤事件或者DTrace設置探針。 
 
網絡和IO分析
 
對於網絡性能,能夠列出一下問題來幫助參考分析:
* 平均數據包的大小(RX、TX)是多少?
* 協議是什麼?TCP or UDP?
活躍的TCP/UDP端口是多少?B/s、每秒鏈接數?
*
 哪一個進程在主動地使用網絡?
 
Linux對網絡的性能分析工具主要以下:
工具 描述
netstat 網絡棧和接口統計信息
sar 統計信息歷史
ifconfig 接口配置
perf、Dtrace TCP/IP棧跟蹤:鏈接、數據包、丟包,延時
 
以上內容參考《性能之巔:洞悉系統、企業與雲計算》和服務器性能優化的正確姿式http://www.brendangregg.com,瞭解詳細的內容也能夠去閱讀。
 
三、性能調優:這一年的調優主要是數據庫方向的調優,由於性能測試發現數據庫是性能瓶頸的問題所在,引發性能瓶頸的緣由是數據庫服務的IO負載高和表索引;將磁盤從普通的硬盤換成SSD能夠解決IO負載高的問題,表索引的問題須要將關鍵的SQL語句找出來,針對性優化。具體的優化步驟因爲篇幅過大,這裏不作詳細解說,有時間另外開篇。
 
關於性能調優的問題,能夠看看《性能之巔:洞悉系統、企業與雲計算》和《圖解性能優化》這兩本書,京東上都有售,價格加起來差很少200來塊錢,不算太貴。
 
2、學習Python接口測試和Django
 
2016年末看到蟲師在博客更新關於Pyhton接口測試方面,因而也跟着節奏學習;到3月份實體書《Web接口開發與自動化測試——基於Python語言》,主要仍是學習Django接口開發和測試,而後也寫了一個簡單的博客系統,一直修修補補,到如今也沒完工。
 
3、學習Pyhton爬蟲和多線程
 
學習爬蟲開始目的是爲了網上爬點妹子下來,也是在網上發現這個網站比較有趣:http://cuiqingcai.com/,而後就是跟着玩,接着玩了大概3個月,從8月到11月,天天下班回去就研究爬蟲寫代碼;主要是學習Requests庫,Beautiful Soup,xpath語法,多線程和MongoDB。
 
以上就是這一年折騰的事情了,對於2018年,計劃是作這三件事,從新學習Java,架構和性能調優,數據庫。
相關文章
相關標籤/搜索