系統(tǒng)調(diào)試

2018-02-24 16:02 更新
  • curl?和?curl -I?可以便捷地被應(yīng)用于 web 調(diào)試中,它們的好兄弟?wget?也可以,或者是更潮的?httpie。

  • 使用?iostat、netstattop?(htop?更佳)和?dstat?去獲取硬盤、cpu 和網(wǎng)絡(luò)的狀態(tài)。熟練掌握這些工具可以使你快速的對(duì)系統(tǒng)的當(dāng)前狀態(tài)有一個(gè)大概的認(rèn)識(shí)。

  • 若要對(duì)系統(tǒng)有一個(gè)深度的總體認(rèn)識(shí),使用?glances。它在一個(gè)終端窗口中向你提供一些系統(tǒng)級(jí)的數(shù)據(jù)。這對(duì)于快速的檢查各個(gè)子系統(tǒng)非常有幫助。

  • 若要了解內(nèi)存狀態(tài),運(yùn)行并理解?free?和?vmstat?的輸出。尤其注意“cached”的值,它指的是 Linux 內(nèi)核用來作為文件緩存的內(nèi)存大小,因此它與空閑內(nèi)存無關(guān)。

  • Java 系統(tǒng)調(diào)試則是一件截然不同的事,一個(gè)可以用于 Oracle 的 JVM 或其他 JVM 上的調(diào)試的小技巧是你可以運(yùn)行kill -3 <pid>?同時(shí)一個(gè)完整的棧軌跡和堆概述(包括 GC 的細(xì)節(jié))會(huì)被保存到標(biāo)準(zhǔn)輸出/日志文件。JDK 中的jps,jstatjstack,jmap?很有用。SJK tools?更高級(jí).

  • 使用?mtr?去跟蹤路由,用于確定網(wǎng)絡(luò)問題。

  • 用?ncdu?來查看磁盤使用情況,它比常用的命令,如?du -sh *,更節(jié)省時(shí)間。

  • 查找正在使用帶寬的套接字連接或進(jìn)程,使用?iftop?或?nethogs。

  • ab?工具(捆綁于 Apache)可以簡(jiǎn)單粗暴地檢查 web 服務(wù)器的性能。對(duì)于更復(fù)雜的負(fù)載測(cè)試,使用?siege

  • wireshark,tshark?和?ngrep?可用于復(fù)雜的網(wǎng)絡(luò)調(diào)試。

  • 了解?strace?和?ltrace。這倆工具在你的程序運(yùn)行失敗、掛起甚至崩潰,而你卻不知道為什么或你想對(duì)性能有個(gè)總體的認(rèn)識(shí)的時(shí)候是非常有用的。注意 profile 參數(shù)(-c)和附加到一個(gè)運(yùn)行的進(jìn)程參數(shù) (-p)。

  • 了解使用?ldd?來檢查共享庫(kù)。

  • 了解如何運(yùn)用?gdb?連接到一個(gè)運(yùn)行著的進(jìn)程并獲取它的堆棧軌跡。

  • 學(xué)會(huì)使用?/proc。它在調(diào)試正在出現(xiàn)的問題的時(shí)候有時(shí)會(huì)效果驚人。比如:/proc/cpuinfo,/proc/meminfo,/proc/cmdline,/proc/xxx/cwd/proc/xxx/exe,/proc/xxx/fd/,/proc/xxx/smaps(這里的?xxx?表示進(jìn)程的 id 或 pid)。

  • 當(dāng)調(diào)試一些之前出現(xiàn)的問題的時(shí)候,sar?非常有用。它展示了 cpu、內(nèi)存以及網(wǎng)絡(luò)等的歷史數(shù)據(jù)。

  • 關(guān)于更深層次的系統(tǒng)分析以及性能分析,看看?stapSystemTap),perf,以及sysdig。

  • 查看你當(dāng)前使用的系統(tǒng),使用?uname?或者?uname -a?(Unix/kernel 信息) or?lsb_release -a?(Linux 發(fā)行版信息)。

  • 無論什么東西工作得很歡樂時(shí)試試?dmesg(可能是硬件或驅(qū)動(dòng)問題)。
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)