最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java開發(fā)者進(jìn)行線上問題排查的50個常用命令推薦

 更新時間:2025年05月16日 08:47:40   作者:風(fēng)象南  
在生產(chǎn)環(huán)境中,當(dāng)Java應(yīng)用出現(xiàn)性能下降、響應(yīng)緩慢、內(nèi)存泄漏或崩潰等問題時,快速有效的問題排查至關(guān)重要,本文匯總了50個最常用的命令,有需要的可以了解一下

在生產(chǎn)環(huán)境中,當(dāng)Java應(yīng)用出現(xiàn)性能下降、響應(yīng)緩慢、內(nèi)存泄漏或崩潰等問題時,快速有效的問題排查至關(guān)重要。

作為Java開發(fā)者,掌握一系列命令行工具能幫助你迅速定位問題根源,將損失降到最小。

本文匯總了50個Java開發(fā)者在線上環(huán)境排查問題時最常用的命令,涵蓋系統(tǒng)資源監(jiān)控、JVM分析、網(wǎng)絡(luò)檢測、日志處理等多個方面。

系統(tǒng)資源監(jiān)控命令

1. top - 系統(tǒng)進(jìn)程實時監(jiān)控

# 基本使用
top

# 按內(nèi)存排序
top -o %MEM

# 只查看特定用戶的進(jìn)程
top -u java_user

# 監(jiān)控特定進(jìn)程
top -p $(pgrep -d',' java)

排查要點:關(guān)注CPU使用率(%CPU)、內(nèi)存使用(%MEM)、運(yùn)行時間(TIME+),可以快速發(fā)現(xiàn)資源占用異常的進(jìn)程。

2. htop - 增強(qiáng)版系統(tǒng)監(jiān)控

htop

排查要點:比top提供更友好的界面,支持鼠標(biāo)操作,可以查看每個CPU核心的使用情況,適合多核系統(tǒng)的監(jiān)控。

3. vmstat - 系統(tǒng)資源統(tǒng)計

# 每2秒輸出一次,共10次
vmstat 2 10

排查要點:關(guān)注r(運(yùn)行隊列)、b(阻塞進(jìn)程)、si/so(交換區(qū)使用)、us/sy(用戶CPU/系統(tǒng)CPU),可以判斷系統(tǒng)是CPU密集型還是IO密集型負(fù)載。

4. free - 內(nèi)存使用情況

# 顯示可讀格式
free -h

# 每3秒更新一次
free -h -s 3

排查要點:檢查可用內(nèi)存(available)是否過低,swap使用是否過高,判斷是否存在內(nèi)存壓力。

5. iostat - IO統(tǒng)計信息

# 查看設(shè)備IO統(tǒng)計,每2秒一次,共5次
iostat -xd 2 5

排查要點:關(guān)注%util(設(shè)備利用率)、r/s和w/s(讀寫操作數(shù))、await(IO等待時間),判斷IO是否成為瓶頸。

JVM監(jiān)控命令

6. jps - 列出Java進(jìn)程

# 列出簡單進(jìn)程信息
jps

# 列出完整的包名和進(jìn)程參數(shù)
jps -lvm

排查要點:這是排查Java問題的起點,首先需要確定目標(biāo)Java進(jìn)程的PID。

7. jstat - JVM統(tǒng)計信息監(jiān)控

# 監(jiān)控GC情況,每1000毫秒一次,共10次
jstat -gc [pid] 1000 10

# 查看類加載情況
jstat -class [pid]

# 查看JIT編譯情況
jstat -compiler [pid]

排查要點:關(guān)注GC頻率、GC耗時、老年代空間使用情況,判斷是否存在GC問題。

8. jmap - 內(nèi)存映射

# 查看堆內(nèi)存使用概況
jmap -heap [pid]

# 查看對象統(tǒng)計信息
jmap -histo [pid] | head -20

# 生成堆轉(zhuǎn)儲文件
jmap -dump:format=b,file=heap_dump.hprof [pid]

排查要點:分析內(nèi)存中大對象,檢查是否存在內(nèi)存泄漏,必要時生成堆轉(zhuǎn)儲文件進(jìn)行詳細(xì)分析。

9. jstack - 線程堆棧分析

# 生成線程堆??煺?
jstack [pid] > thread_dump.log

# 包含鎖信息的線程轉(zhuǎn)儲
jstack -l [pid]

# 檢測死鎖
jstack -F [pid] | grep -A 30 "Found.*deadlock"

排查要點:查找BLOCKED狀態(tài)的線程,分析線程間鎖競爭,排查死鎖或線程掛起問題。

10. jinfo - 查看和修改JVM參數(shù)

# 查看所有JVM參數(shù)
jinfo -flags [pid]

# 查看特定參數(shù)值
jinfo -flag MaxHeapSize [pid]

# 動態(tài)修改某些參數(shù)
jinfo -flag +HeapDumpOnOutOfMemoryError [pid]

排查要點:確認(rèn)JVM關(guān)鍵參數(shù)是否正確配置,必要時動態(tài)調(diào)整。

11. jcmd - JVM診斷命令工具

# 列出所有可用命令
jcmd [pid] help

# 查看JVM版本信息
jcmd [pid] VM.version

# 執(zhí)行GC
jcmd [pid] GC.run

# 生成堆轉(zhuǎn)儲
jcmd [pid] GC.heap_dump filename=heap.hprof

# 生成線程轉(zhuǎn)儲
jcmd [pid] Thread.print

排查要點:jcmd是一個多功能工具,可以替代多個單一功能的JDK工具,掌握它能簡化問題排查流程。

12. jhat - 堆轉(zhuǎn)儲分析工具

# 分析堆轉(zhuǎn)儲文件
jhat heap_dump.hprof

# 然后訪問 http://localhost:7000 查看分析結(jié)果

排查要點:在瀏覽器中查看對象實例、引用關(guān)系,找出可能的內(nèi)存泄漏點。

網(wǎng)絡(luò)相關(guān)命令

13. netstat - 網(wǎng)絡(luò)連接狀態(tài)

# 查看所有TCP連接
netstat -ant

# 查看監(jiān)聽端口
netstat -tnlp

# 查看特定進(jìn)程的網(wǎng)絡(luò)連接
netstat -anp | grep [pid]

排查要點:關(guān)注ESTABLISHED連接數(shù)、TIME_WAIT狀態(tài)連接數(shù),檢查端口占用情況。

14. ss - 更快的socket統(tǒng)計

# 顯示所有TCP連接
ss -ta

# 查看連接統(tǒng)計
ss -s

# 查看特定端口連接
ss -tn sport = :8080

排查要點:比netstat更高效,適合連接數(shù)較多的系統(tǒng),可以快速統(tǒng)計各種連接狀態(tài)。

15. lsof - 列出打開的文件

# 查看進(jìn)程打開的所有文件
lsof -p [pid]

# 查看特定端口使用情況
lsof -i:8080

# 查看所有網(wǎng)絡(luò)連接
lsof -i

排查要點:查看進(jìn)程打開了哪些文件和網(wǎng)絡(luò)連接,排查文件描述符泄露問題。

16. ping - 網(wǎng)絡(luò)連通性測試

# 基本使用
ping www.example.com

# 限制發(fā)送次數(shù)
ping -c 5 www.example.com

排查要點:測試與目標(biāo)主機(jī)的網(wǎng)絡(luò)連通性和延遲情況。

17. curl - HTTP請求測試

# 簡單GET請求
curl http://localhost:8080/api/status

# 帶超時控制的請求
curl --connect-timeout 5 -m 10 http://api.example.com

# POST請求
curl -X POST -d '{"name":"test"}' -H "Content-Type: application/json" http://localhost:8080/api/users

排查要點:測試HTTP服務(wù)響應(yīng)情況,檢查響應(yīng)碼、響應(yīng)時間和響應(yīng)內(nèi)容。

18. tcpdump - 網(wǎng)絡(luò)數(shù)據(jù)包分析

# 捕獲特定端口的數(shù)據(jù)包
tcpdump -i any port 8080 -n

# 捕獲特定主機(jī)的數(shù)據(jù)包
tcpdump host 192.168.1.100

# 保存數(shù)據(jù)包到文件
tcpdump -i any -w capture.pcap

排查要點:分析網(wǎng)絡(luò)數(shù)據(jù)包內(nèi)容,排查網(wǎng)絡(luò)協(xié)議相關(guān)問題,特別是網(wǎng)絡(luò)延遲和連接重置問題。

19. traceroute - 路由跟蹤

# 基本使用
traceroute www.example.com

排查要點:排查網(wǎng)絡(luò)路由問題,確定網(wǎng)絡(luò)延遲出現(xiàn)在哪個環(huán)節(jié)。

日志和文件分析命令

20. tail - 查看文件尾部

# 實時查看日志
tail -f app.log

# 顯示最后100行
tail -n 100 app.log

# 從第1000行開始顯示
tail -n +1000 app.log

排查要點:實時監(jiān)控日志輸出,是排查問題的基礎(chǔ)操作。

21. grep - 文本搜索

# 搜索錯誤日志
grep "ERROR" app.log

# 顯示匹配行的前后5行
grep -A 5 -B 5 "OutOfMemoryError" app.log

# 遞歸搜索多個文件
grep -r "Connection refused" /var/log/

排查要點:快速定位日志中的錯誤信息,是分析問題的有力工具。

22. awk - 文本處理

# 提取特定列
awk '{print $1, $4}' access.log

# 統(tǒng)計HTTP響應(yīng)碼分布
awk '{print $9}' access.log | sort | uniq -c | sort -nr

# 計算平均響應(yīng)時間
awk '{sum+=$10; count++} END {print sum/count}' access.log

排查要點:對日志進(jìn)行結(jié)構(gòu)化分析,提取關(guān)鍵信息,進(jìn)行統(tǒng)計計算。

23. sed - 流編輯器

# 替換文本
sed 's/ERROR/CRITICAL/g' app.log

# 只顯示特定行范圍
sed -n '1000,2000p' app.log

排查要點:處理和轉(zhuǎn)換日志文本,提取特定行內(nèi)容。

24. find - 文件查找

# 查找大文件
find / -type f -size +100M

# 查找最近修改的文件
find /var/log -mtime -1 -type f -name "*.log"

# 查找并刪除老舊日志文件
find /var/log -name "*.log" -mtime +30 -exec rm {} ;

排查要點:定位占用空間大的文件,查找最近更改過的配置文件等。

25. du - 磁盤使用統(tǒng)計

# 查看目錄大小
du -sh /var/log

# 按大小排序顯示子目錄
du -h --max-depth=1 /var | sort -hr

排查要點:分析磁盤空間占用情況,找出占用空間最大的目錄。

進(jìn)程管理命令

26. ps - 進(jìn)程狀態(tài)

# 查看所有進(jìn)程
ps aux

# 查看特定用戶的進(jìn)程
ps -u tomcat

# 按CPU使用率排序
ps aux --sort=-%cpu | head -10

# 按內(nèi)存使用率排序
ps aux --sort=-%mem | head -10

排查要點:查看進(jìn)程狀態(tài)、資源使用情況,識別異常進(jìn)程。

27. pstree - 進(jìn)程樹

# 顯示進(jìn)程樹
pstree

# 顯示特定進(jìn)程的進(jìn)程樹
pstree -p [pid]

排查要點:了解進(jìn)程間的父子關(guān)系,特別是在排查守護(hù)進(jìn)程和子進(jìn)程問題時很有用。

28. kill - 發(fā)送信號給進(jìn)程

# 正常終止進(jìn)程
kill [pid]

# 強(qiáng)制終止進(jìn)程
kill -9 [pid]

# 生成Java線程轉(zhuǎn)儲
kill -3 [java_pid]

排查要點:終止異常進(jìn)程,或向Java進(jìn)程發(fā)送信號生成診斷信息。

29. pkill - 按名稱終止進(jìn)程

# 終止特定名稱的進(jìn)程
pkill java

# 向所有Java進(jìn)程發(fā)送SIGTERM信號
pkill -15 java

排查要點:批量操作特定類型的進(jìn)程,在緊急情況下快速響應(yīng)。

30. pgrep - 查找進(jìn)程ID

# 查找Java進(jìn)程ID
pgrep java

# 查找并顯示命令行
pgrep -a java

排查要點:快速找到特定進(jìn)程的PID,用于后續(xù)的監(jiān)控和分析。

系統(tǒng)性能分析命令

31. sar - 系統(tǒng)活動報告

# 查看CPU使用情況
sar -u 1 5

# 查看內(nèi)存使用
sar -r 1 5

# 查看磁盤IO
sar -b 1 5

# 查看網(wǎng)絡(luò)統(tǒng)計
sar -n DEV 1 5

排查要點:綜合分析系統(tǒng)資源使用情況,識別性能瓶頸。

32. mpstat - 多處理器統(tǒng)計

# 查看所有CPU核心使用情況
mpstat -P ALL 2 5

排查要點:分析各CPU核心的負(fù)載分布,檢測是否存在單核心過載情況。

33. dmesg - 內(nèi)核消息

# 查看內(nèi)核消息
dmesg

# 只查看錯誤和警告
dmesg --level=err,warn

排查要點:查看系統(tǒng)錯誤和警告信息,特別是OOM(內(nèi)存不足)等嚴(yán)重問題。

34. strace - 跟蹤系統(tǒng)調(diào)用

# 跟蹤指定進(jìn)程
strace -p [pid]

# 跟蹤特定系統(tǒng)調(diào)用
strace -e open,read,write -p [pid]

# 統(tǒng)計系統(tǒng)調(diào)用時間和次數(shù)
strace -c -p [pid]

排查要點:分析進(jìn)程與系統(tǒng)的交互,排查系統(tǒng)調(diào)用級別的問題。

35. perf - 性能分析工具

# 記錄性能數(shù)據(jù)
perf record -F 99 -p [pid] -g -- sleep 30

# 分析性能數(shù)據(jù)
perf report

排查要點:通過采樣分析程序的CPU使用熱點,定位性能瓶頸。

數(shù)據(jù)庫相關(guān)命令

36. mysqladmin - MySQL服務(wù)器管理

# 查看MySQL狀態(tài)
mysqladmin -u root -p status

# 進(jìn)程列表
mysqladmin -u root -p processlist

# 變量狀態(tài)
mysqladmin -u root -p variables

排查要點:檢查MySQL服務(wù)器狀態(tài)和配置,監(jiān)控連接數(shù)和進(jìn)程情況。

37. mysqlshow - 顯示數(shù)據(jù)庫信息

# 顯示所有數(shù)據(jù)庫
mysqlshow -u root -p

# 顯示特定數(shù)據(jù)庫的表
mysqlshow -u root -p database_name

排查要點:快速了解數(shù)據(jù)庫結(jié)構(gòu)和表信息。

38. pg_stat_activity - PostgreSQL活動查詢

# 查看活動連接(在psql中執(zhí)行)
SELECT * FROM pg_stat_activity;

# 查看長時間運(yùn)行的查詢
SELECT pid, now() - query_start AS duration, query 
FROM pg_stat_activity 
WHERE state = 'active' 
ORDER BY duration DESC;

排查要點:檢查PostgreSQL數(shù)據(jù)庫中的活動連接和正在執(zhí)行的查詢,找出長時間運(yùn)行的查詢。

39. redis-cli - Redis客戶端

# 連接Redis服務(wù)器
redis-cli

# 監(jiān)控Redis命令
redis-cli monitor

# 獲取統(tǒng)計信息
redis-cli info

排查要點:檢查Redis服務(wù)器狀態(tài),監(jiān)控命令執(zhí)行,排查緩存相關(guān)問題。

容器和微服務(wù)相關(guān)命令

40. docker ps - 查看容器

# 查看運(yùn)行中的容器
docker ps

# 查看所有容器(包括已停止的)
docker ps -a

排查要點:了解當(dāng)前運(yùn)行的容器及其狀態(tài)。

41. docker logs - 查看容器日志

# 查看容器日志
docker logs [container_id]

# 實時查看日志
docker logs -f [container_id]

# 顯示最近的100行日志
docker logs --tail 100 [container_id]

排查要點:查看容器內(nèi)應(yīng)用的日志輸出,排查容器內(nèi)部問題。

42. docker stats - 容器資源使用統(tǒng)計

# 查看所有容器的資源使用情況
docker stats

# 查看特定容器的資源使用
docker stats [container_id]

排查要點:監(jiān)控容器的CPU、內(nèi)存使用情況,發(fā)現(xiàn)資源瓶頸。

43. kubectl - Kubernetes命令行工具

# 獲取所有Pod狀態(tài)
kubectl get pods

# 查看Pod詳細(xì)信息
kubectl describe pod [pod_name]

# 查看Pod日志
kubectl logs [pod_name]

# 進(jìn)入Pod內(nèi)執(zhí)行命令
kubectl exec -it [pod_name] -- /bin/bash

排查要點:在Kubernetes環(huán)境中管理和排查容器化應(yīng)用問題。

44. kubectl top - Kubernetes資源使用統(tǒng)計

# 查看節(jié)點資源使用
kubectl top nodes

# 查看Pod資源使用
kubectl top pods

排查要點:監(jiān)控Kubernetes集群中各組件的資源使用情況。

專用工具命令

45. arthas - Java診斷工具

# 啟動arthas
java -jar arthas-boot.jar

# 使用dashboard命令查看系統(tǒng)概況
dashboard

# 跟蹤方法執(zhí)行
trace com.example.Controller method

# 查看JVM信息
jvm

排查要點:Arthas是阿里開源的Java診斷工具,提供了更豐富的Java應(yīng)用分析能力。

46. btrace - Java運(yùn)行時追蹤

# 使用BTrace腳本追蹤方法
btrace [pid] ScriptFile.java

排查要點:在不重啟應(yīng)用的情況下,動態(tài)跟蹤Java方法的執(zhí)行情況。

47. jprofiler - 性能分析工具

# 啟動jprofiler客戶端
jprofiler

# 連接到遠(yuǎn)程JVM
jpenable

排查要點:進(jìn)行更深入的性能分析,包括CPU熱點、內(nèi)存泄漏、線程分析等。

48. ab - Apache HTTP服務(wù)器基準(zhǔn)測試

# 發(fā)送1000個請求,并發(fā)數(shù)100
ab -n 1000 -c 100 http://localhost:8080/api/test

排查要點:測試HTTP服務(wù)性能,檢查在負(fù)載下的響應(yīng)時間和吞吐量。

49. wrk - HTTP基準(zhǔn)測試工具

# 運(yùn)行30秒測試,使用12個線程和400個連接
wrk -t12 -c400 -d30s http://localhost:8080/api/test

排查要點:比ab更強(qiáng)大的HTTP壓測工具,可以測試在高并發(fā)下應(yīng)用的表現(xiàn)。

50. java-flight-recorder (JFR) - JVM飛行記錄儀

# 啟動JFR記錄
jcmd [pid] JFR.start duration=60s filename=recording.jfr

# 檢查JFR記錄狀態(tài)
jcmd [pid] JFR.check

# 停止JFR記錄
jcmd [pid] JFR.stop

排查要點:收集JVM運(yùn)行時的詳細(xì)信息,用于后續(xù)分析和性能優(yōu)化。

線上問題排查思路與方法

快速定位問題類型

1. CPU問題排查路徑:top → jstack → perf/JFR

2. 內(nèi)存問題排查路徑:free → jmap → jhat/MAT

3. 磁盤問題排查路徑:df → du → lsof/find

4. 網(wǎng)絡(luò)問題排查路徑:netstat → tcpdump → wireshark

5.應(yīng)用異常排查路徑:jps → logs → jstack → arthas

常見問題排查技巧

1. CPU使用率高

# 查找占用CPU高的進(jìn)程
top -c

# 如果是Java進(jìn)程,生成線程轉(zhuǎn)儲
jstack [pid] > thread_dump.log

# 查找占用CPU高的線程
ps -mp [pid] -o THREAD,tid,time | sort -rk 3

# 將線程ID轉(zhuǎn)為16進(jìn)制
printf "%x\n" [tid]

# 在線程轉(zhuǎn)儲中查找該線程
grep -A 30 [hex_tid] thread_dump.log

2. 內(nèi)存泄漏

# 查看堆內(nèi)存使用情況
jmap -heap [pid]

# 生成多個堆轉(zhuǎn)儲,比較對象增長
jmap -dump:format=b,file=heap1.hprof [pid]
# 等待一段時間后
jmap -dump:format=b,file=heap2.hprof [pid]

# 使用MAT或jhat分析堆轉(zhuǎn)儲
jhat heap2.hprof

3. 頻繁GC

# 監(jiān)控GC情況
jstat -gc [pid] 1000

# 開啟GC日志
java -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:gc.log

# 分析GC日志
# 使用GCViewer或GCEasy等工具

4. 響應(yīng)緩慢

# 查看系統(tǒng)負(fù)載
uptime

# 查看網(wǎng)絡(luò)連接情況
netstat -ant | grep ESTABLISHED | wc -l

# 查看線程狀態(tài)
jstack [pid] | grep -c "java.lang.Thread.State"

# 使用Arthas進(jìn)行方法追蹤
trace com.example.SlowService slowMethod

5. 磁盤空間不足

# 查看磁盤使用情況
df -h

# 查找大文件
find / -type f -size +100M -exec ls -lh {} ;

# 查看目錄大小
du -sh /*

# 清理日志文件
find /var/log -name "*.log.*" -mtime +7 -delete

總結(jié)

在實際排查過程中,通常需要組合使用這些命令,形成系統(tǒng)性的問題排查流程。

記住,成功的線上問題排查不僅依賴于命令的熟練使用,還取決于對Java應(yīng)用架構(gòu)、JVM原理和操作系統(tǒng)機(jī)制的深入理解。

作為Java開發(fā)者,建議平時就熟悉這些命令的使用,并在非生產(chǎn)環(huán)境進(jìn)行實踐,為真正的線上問題排查做好準(zhǔn)備。同時,建立完善的監(jiān)控系統(tǒng)和日志體系,能讓問題排查事半功倍。

以上就是Java開發(fā)者進(jìn)行線上問題排查的50個常用命令推薦 的詳細(xì)內(nèi)容,更多關(guān)于Java線上問題排查命令的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評論

汪清县| 会理县| 阳西县| 海林市| 寻甸| 朝阳县| 商河县| 西充县| 得荣县| 龙岩市| 锡林浩特市| 新和县| 中超| 吕梁市| 曲松县| 万年县| 永兴县| 云林县| 平遥县| 蓬溪县| 荥阳市| 灌南县| 东平县| 玉林市| 大埔区| 兴安县| 宜良县| 治县。| 新郑市| 鱼台县| 高雄县| 收藏| 周宁县| 巩留县| 苗栗市| 彝良县| 楚雄市| 炉霍县| 博湖县| 临猗县| 胶南市|