診斷實驗室一啟動中開啟檔案錯誤

2021-08-20 16:43:34 字數 1260 閱讀 1532

本系列主要是充分使用ebpf來延時如何定位實際問題,在生產中碰到類似問題也可以採用文中所描述方法。

**就是模擬乙個應用啟動,啟動過程會去讀取配置檔案,如果沒有配置檔案會迴圈一直去讀永不止息,這個是為了演示方便(實際應用會退出並提示相關錯誤的)。

# gcc -g -fno-omit-frame-pointer -o0 server.c -o server

其中引數-fno-omit-frame-pointer,o0表示取消棧和相關**編譯優化。

然後執行./server

發現系統卡主了,用top命令檢視該程序還占用一定的cpu資源。

然後使用pidstat來檢視程序每秒使用者和系統資源情況。

# pidstat -u -p $(pidof server) 121時

34分27秒

uid       pid    %usr %system  %guest    %cpu   cpu  command21時

34分28秒

0      2654    5.13   14.10    0.00   19.23     0  server21時

34分29秒

0      2654    5.13   15.38    0.00   20.51     0  server

其中-u表示顯示cpu使用率,另外從監控資料可以看到cpu使用率是位於核心系統。

既然在核心態,那麼程式肯定呼叫了大量的系統呼叫。使用bcc的syscount工具。

既然在核心態,那麼程式肯定呼叫了大量的系統呼叫。使用bcc的syscount工具。

# ./syscount.py  -p $(pidof server)

輸出如下:

tracing syscalls, printing top 10... ctrl+c to quit.

^c[21:44:08]

syscall                   count

open                      52400

nanosleep                 52400

看主要是open系統呼叫。

使用opensnoop工具,呼叫如下:

#./opensnoop.py -p $(pidof server)

……2654   server             -1   2 /etc/tracing-server-example.conf

……發現做開啟的目的檔案了,返回的錯誤為-1,表示檔案找不到。

至此,問題已非常明確。

愛立信實驗室實習感想(一)

時間過的很快,將近一年過去了,上次寫了一篇 愛立信北航聯合實驗室面試經驗 到現在,我已經成了愛立信實驗室的核心成員,負責實驗室重點專案的管理和開發工作。在這不到一年的時間中,從自身感覺出發,確實成長了很多,也學會了很多。接下來,從幾個方面來說說這一年我的感悟。當然,學生,肯定離不開學習,首先來談談學...

實驗室每日一題 2020 11 24

解壓縮後開啟題目.txt,可以看出裡面是16進製制的資料,而且開頭的504b0304是zip檔案的檔案頭,結尾的ffd9是jpg檔案的檔案尾。再結合題目描述可以知道這串16進製制數最起碼包含了乙個zip檔案和乙個jpg檔案。然後就是寫 把這串16進製制資料轉化為正常檔案 好像直接扔010或者winh...

實驗室每日一題 2020 11 26

用winhex開啟壓縮包,檔案末尾有一串用空格隔開的01字元,用.替換0,用 替換1可得到一串摩斯密碼,解開後得到的字元小寫就是壓縮包密碼。解壓後的在linux中用binwalk分解可得到乙個加密的壓縮包,用winhex開啟 檔案,在檔案末尾有一串base64,解碼後就是壓縮包密碼。解壓後得到的pn...