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

DevOps的三板斧

開發 項目管理
DevOps代表著未開軟件開發的方向,它倡導小團隊,強調單兵作戰能力,此時的程序員作為團隊中的一員,已經不能再僅僅局限于開發的角色,必須在運維方面武裝自己,希望大家都能有自己的三板斧,當然我們可不是古惑仔,而是程咬金。

話說這些天電視上正在熱映《隋唐英雄》,雖然我并沒有看,但是對當年田連元老先生的評書聯播《隋唐演義》卻是記憶猶新,特別是故事里面講到的程咬金的三板斧:拍蒜瓣、戳腳指甲蓋、胡椒面,每每聽來總是讓人忍俊不禁,不過這些貌似無厘頭的招數在實戰中卻往往有出奇制勝的效果,由此可以見簡單實用永遠都是硬道理,在當前這個倡導DevOps的年代,我們這些程序員自然也要學一些運維方面的本事才好安身立命,下面結合一些真實案例說說我在日常工作中常用的三板斧。

 

第一板斧:AWK

Web服務器負載飆升,猜測是訪問量激增造成的,如何驗證?如果有監控,這自然不是什么難事,但如果沒有呢?亦或者監控不能顯示即使數據,此時如何是好?

前提:日志已經通過logrotate按天切分,其內容類似下面的樣子:

  1. 123.123.123.123 - - [01/Jan/2013:00:01:01 +0800] "GET /path HTTP/1.1" 200 123 "-" "Mozilla" 

利用AWK,我們可以很方便的計算一天中每分鐘的訪問量是多少:

  1. shell> awk -F: '{ count[$2":"$3]++ } END { for (minute in count) print minute, count[minute] }' /path/to/log | sort > count.log 

下面列出生成的count.log文件中的部分數據,結果一目了然,不多說了:

  1. 18:55 14450  
  2. 18:56 14926  
  3. 18:57 15645  
  4. 18:58 16678  
  5. 18:59 19032  
  6. 19:00 29134  
  7. 19:01 34665  
  8. 19:02 35558  
  9. 19:03 35545  
  10. 19:04 35829  
  11. 19:05 35608 

如果想要以秒為單位來統計,很是類似的方法,這里就不多說了。

第二板斧:Strace

程序運行很慢,我們如何知道到底慢在哪?此時可以利用strace的「r」選項,不過需要注意的是,strace的結果在標準錯誤里,使用前最好重定向到標準輸出。

下面讓我們過濾某個PHP進程中操作時間大于0.001秒的操作:

  1. shell> strace -rp <PID> 2>&1 | awk '$1 > 0.001'  
  2. 0.001596 lstat64("/var/www", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 

如果問題比較簡單,通常這樣就夠了,但如果問題相對復雜,那么我們僅僅過濾出耗時的操作是不夠的,最好附上完整的上下文,此時如果用AWK來做的話,代碼會變得很復雜,別忘了我們還有grep,通過它的「A」和「B」選項可以很方便的保存上下文,此外利用它的正則功能,可以模擬判斷時間的大小。

下面讓我們過濾某個PHP進程中操作時間大于0.001秒的操作,并附上前后兩行上下文:

  1. shell> strace -rp <PID> 2>&1 | grep -E '^[ ]*([1-9]|0\.[1-9]|0\.0[1-9]|0\.00[1-9])' -A 2 -B 2  
  2. 0.000081 getcwd("/var/www/script", 4096) = 32  
  3. 0.000805 lstat64("/var", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0  
  4. 0.001596 lstat64("/var/www", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0  
  5. 0.000105 lstat64("/var/www/script", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0  
  6. 0.000112 lstat64("/var/www/script/test.php", {st_mode=S_IFREG|0644, st_size=4096, ...}) = 0 

補充:本例中使用的是PHP程序,之所以會出現一堆lstat64操作是因為PHP配置中沒有設定合適的realpath_cache_size,具體就不多說了,大家自行查閱相關資料。

第三板斧:Gnuplot

數字總是蒼白的,不如圖形來得直觀,Gnuplot在繪圖方面非常簡單,就拿文章開頭統計訪問量的例子來說,以count.log為數據源,代碼大致如下:

  1. #!/usr/bin/gnuplot  
  2.  
  3. set terminal png size 500,400  
  4. set grid  
  5. set xdata time  
  6. set timefmt "%H:%M"  
  7. set format x '%H'  
  8. set xlabel "Time"  
  9. set ylabel "Count"  
  10. set output "count.png"  
  11. plot "count.log" using 1:2 with line notitle 

還支持利用多份兒數據畫多條線,這樣更方便對比歷史數據:

  1. plot "count1.log" using 1:2 with line title "1st", \  
  2.      "count2.log" using 1:2 with line title "2nd" 

最終生成的圖形是不是比數字直觀多了:

Gnuplot繪圖

—Gnuplot繪圖

有了Gnuplot,我們甚至可以通過CRON之類的方式打造簡易的圖形化監控系統。

DevOps代表著未開軟件開發的方向,它倡導小團隊,強調單兵作戰能力,此時的程序員作為團隊中的一員,已經不能再僅僅局限于開發的角色,必須在運維方面武裝自己,希望大家都能有自己的三板斧,當然我們可不是古惑仔,而是程咬金。

原文鏈接:http://huoding.com/2013/01/26/215

責任編輯:林師授 來源: 火丁筆記
相關推薦

2014-07-29 11:25:18

LinuxMySQL

2017-03-23 10:54:58

LINUXMYSQL優化

2011-03-09 15:23:25

Windows Ser

2020-09-03 15:32:08

Wireshark數據包分析

2020-11-18 08:17:14

Java源碼Class

2017-08-21 23:50:45

線上內存OOM

2012-11-08 16:05:23

2019-05-30 14:30:42

技術管理架構

2009-02-19 10:20:00

2022-07-22 09:55:29

軟件工程師

2020-03-09 13:37:49

Serverless無服務器騰訊云

2018-06-19 08:50:15

崗位總監管理

2010-12-29 10:29:31

Linux磁盤管理dfdu

2019-08-13 16:23:19

JavaScript數組方法

2022-05-07 11:47:36

服務器架構

2021-02-15 22:07:18

項目策略模式

2022-03-29 18:20:10

戴爾

2019-11-14 08:34:08

LinuxMySQLCPU

2021-03-29 17:51:00

瑞數信息攻防演練

2010-05-28 09:17:45

ARM服務器
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 免费午夜视频 | www.久久国产精品 | 91在线视频观看免费 | 亚洲一区二区三区在线播放 | 亚洲 精品 综合 精品 自拍 | 国产99久久精品一区二区永久免费 | 久久精品免费 | 日本三级电影免费 | 免费一区 | 亚洲一区 | 亚洲a视频| 伊人手机在线视频 | 亚洲精品乱码久久久久久9色 | 国产精品一区二区欧美黑人喷潮水 | 久久久久久亚洲欧洲 | 国产乡下妇女做爰 | 国产精品视频在 | 成人高清在线 | 香蕉久久a毛片 | 91视频日本 | 亚洲福利一区二区 | 久久一区二区视频 | 丝袜一区二区三区 | 精品在线一区 | 欧美人成在线视频 | 久久天天躁狠狠躁夜夜躁2014 | 奇米久久久 | 国产第一区二区 | 国产精品久久久久久妇女6080 | 亚洲精品久久久蜜桃网站 | 欧美不卡一区二区三区 | 免费福利视频一区二区三区 | 国产午夜精品久久 | 国产探花在线观看视频 | 91九色视频 | 天天操狠狠操 | 浮生影院免费观看中文版 | 成人h视频在线 | 中文在线一区 | 久久久久久久久久一区 | 99精品久久|