curl
?和?curl -I
?可以便捷地被應用于 web 調(diào)試中,它們的好兄弟?wget
?也可以,或者是更潮的?httpie
。
使用?iostat
、netstat
、top
?(htop
?更佳)和?dstat
?去獲取硬盤、cpu 和網(wǎng)絡的狀態(tài)。熟練掌握這些工具可以使你快速的對系統(tǒng)的當前狀態(tài)有一個大概的認識。
若要對系統(tǒng)有一個深度的總體認識,使用?glances
。它在一個終端窗口中向你提供一些系統(tǒng)級的數(shù)據(jù)。這對于快速的檢查各個子系統(tǒng)非常有幫助。
若要了解內(nèi)存狀態(tài),運行并理解?free
?和?vmstat
?的輸出。尤其注意“cached”的值,它指的是 Linux 內(nèi)核用來作為文件緩存的內(nèi)存大小,因此它與空閑內(nèi)存無關。
Java 系統(tǒng)調(diào)試則是一件截然不同的事,一個可以用于 Oracle 的 JVM 或其他 JVM 上的調(diào)試的小技巧是你可以運行kill -3 <pid>
?同時一個完整的棧軌跡和堆概述(包括 GC 的細節(jié))會被保存到標準輸出/日志文件。JDK 中的jps
,jstat
,jstack
,jmap
?很有用。SJK tools?更高級.
使用?mtr
?去跟蹤路由,用于確定網(wǎng)絡問題。
用?ncdu
?來查看磁盤使用情況,它比常用的命令,如?du -sh *
,更節(jié)省時間。
查找正在使用帶寬的套接字連接或進程,使用?iftop
?或?nethogs
。
ab
?工具(捆綁于 Apache)可以簡單粗暴地檢查 web 服務器的性能。對于更復雜的負載測試,使用?siege
。
wireshark
,tshark
?和?ngrep
?可用于復雜的網(wǎng)絡調(diào)試。
了解?strace
?和?ltrace
。這倆工具在你的程序運行失敗、掛起甚至崩潰,而你卻不知道為什么或你想對性能有個總體的認識的時候是非常有用的。注意 profile 參數(shù)(-c
)和附加到一個運行的進程參數(shù) (-p
)。
了解使用?ldd
?來檢查共享庫。
了解如何運用?gdb
?連接到一個運行著的進程并獲取它的堆棧軌跡。
學會使用?/proc
。它在調(diào)試正在出現(xiàn)的問題的時候有時會效果驚人。比如:/proc/cpuinfo
,/proc/meminfo
,/proc/cmdline
,/proc/xxx/cwd
,/proc/xxx/exe
,/proc/xxx/fd/
,/proc/xxx/smaps
(這里的?xxx
?表示進程的 id 或 pid)。
當調(diào)試一些之前出現(xiàn)的問題的時候,sar
?非常有用。它展示了 cpu、內(nèi)存以及網(wǎng)絡等的歷史數(shù)據(jù)。
查看你當前使用的系統(tǒng),使用?uname
?或者?uname -a
?(Unix/kernel 信息) or?lsb_release -a
?(Linux 發(fā)行版信息)。
dmesg
(可能是硬件或驅(qū)動問題)。
更多建議: