Linux---網絡相關和定位Java進程佔用系統資源使用率高的問題

Linux網絡相關命令

  1. ping :檢測host地址或域名代表的主機是否可達;

  2. ifconfig:查看當前主機的所有網卡以及工作狀態;

  3. netstat:查看當前主機的top端口使用的情況,服務運行的情況;

  4. netstat -tanp:可以查看當前使用協議(TCP/UDP)、接收緩衝區數據大小,發送緩衝區數據大小,本機地址,端口號,socket的狀態,進程的PID號/進程名;

  5. netcat:可以模擬實現一個tcp/udp服務端客戶端;

netcat -l host port :模擬實現一個可以收發數據的TCP 服務器;

netcat host port : 模擬實現一個可以收發數據的TCP客戶端;

  1. tcpdump:在Linux上一個非常實用的抓包工具;

  2. tcpdump -i [網卡名稱] host[ip地址] port[端口號] :驗證TCP三次握手和四次揮手;

  3. telnet:一個簡單的tcp客戶端,模擬遠程登錄;

  4. telnet IP地址 port 端口號:在telnet命令裏按Ctrl +]退出;

開發Java程序的時候:

curl + URL地址:可以模擬瀏覽器連接http服務器;

curl -v url地址:可以把模擬的瀏覽器客戶端和http服務器通信的細節全部輸出,request,response;

一般協議都是TCP,除了傳輸視頻,音頻等文件時使用UDP協議;

ping 域名DNS,eg: ping www.baidu.com

RST:連接重置指令

TCP粘包問題:

確認應答

流式協議

進程、線程、網絡相關命令

ps、top、netstat

  1. ps : 默認只查看當前用戶身份下創建的進程;

  2. ps -ef : 查看Linux系統下所有運行的進程的詳細信息 主要關注的是用戶;

  3. ps -ef | grep XXX 查看包含指定關鍵字信息的進程;

  4. kill - 9 XXX進程號 強制殺死進程;

  5. top -p + PID 號 查看指定的PID進程的資源使用情況;

  • 查看進程:
    ps -l:查看自己的進程
    ps aux:查看系統所有進程
    ps aux | grep threadx:查看特定的進程
    pstree:查看進程樹。
    pstree -A:查看所有進程樹
    top:實時顯示進程信息。
    top -d 2:兩秒鐘刷新一次
    netstat:查看佔用端口的進程
    netstat -anp | grep port:查看特定端口的進程

Linux 下如何查看CPU和磁盤利用率,內存大小

查看內存

  1. free:查看內存佔用;
  2. free -m:以MB爲單位顯示內存使用情況;
  3. free -h:以GB爲單位顯示內存使用情況;
  4. free -t:以總和的形式查詢內存的使用信息;
  5. free -s 5:週期性的查詢內存使用信息;每5秒執行一次命令;
    注:
    Mem:內存的使用情況總覽表
    total:機器總的物理內存
    used:用掉的內存
    free:空閒的物理內存
    T:物理內存(total)=系統看到的用掉的內存(used)+系統看到空閒的內存(free)

查看CPU

  1. top -d 5 :週期性的查詢CPU使用信息;每5秒刷新一次;
  2. ps auxw(查看本機的進程所佔cpu和mem的百分比情況)
    使用"ps auxw" 可以查看到本機的進程所佔cpu和mem的百分比情況
    ps auxw | head -1
    %CPU 進程的cpu佔用率
    %MEM 進程的內存佔用率

查看cpu信息(信息記錄在/proc/cpuinfo中)

總核數 = 物理CPU個數 X 每顆物理CPU的核數

總邏輯CPU數 = 物理CPU個數 X 每顆物理CPU的核數 X 超線程數

  1. 查看虛擬機邏輯CPU的個數:cat /proc/cpuinfo| grep “processor”| wc -l

  2. 查看物理CPU個數:cat /proc/cpuinfo| grep “physical id”| sort| uniq| wc -l

  3. 列出CPU詳細信息:lscpu

磁盤利用率

df:是用來檢查linux服務器的文件系統的磁盤空間佔用情況。可以利用該命令來獲取硬盤被佔用了多少空間,目前還剩下多少空間等信息。

  1. 命令格式:
    df [選項] [文件]
  2. 命令功能:
    顯示指定磁盤文件的可用空間。如果沒有文件名被指定,則所有當前被掛載的文件系統的可用空間將被顯示。默認情況下,磁盤空間將以 1KB 爲單位進行顯示,除非環境變量 POSIXLY_CORRECT 被指定,那樣將以512字節爲單位進行顯示
  3. 命令參數:
    -a 全部文件系統列表
    -h 方便閱讀方式顯示
    -H 等於“-h”,但是計算式,1K=1000,而不是1K=1024
    -i 顯示inode信息
    -k 區塊爲1024字節
    -l 只顯示本地文件系統
    -m 區塊爲1048576字節
    –no-sync 忽略 sync 命令
    -P 輸出格式爲POSIX
    –sync 在取得磁盤信息前,先執行sync命令
    -T 文件系統類型
    選擇參數:
    –block-size=<區塊大小> 指定區塊大小
    -t<文件系統類型> 只顯示選定文件系統的磁盤信息
    -x<文件系統類型> 不顯示選定文件系統的磁盤信息
    –help 顯示幫助信息
    –version 顯示版本信息

如何定位java進程佔用系統資源使用率高的問題

  1. ps 查看當前用戶身份下創建的進程;

  2. top -p + PID 查看指定的PID進程的資源使用情況;

  3. top -Hp + PID 查看指定PID進程裏面所有線程的使用情況;

  4. jstack + 進程PID 輸出當前JAVA進程所有線程的調用棧信息;

  5. 找到top命令輸出的那個資源佔用率高的線程調用棧信息(nid + 16進制);

  6. 找到調用棧信息最上面的代碼提示(代碼問件和行號),在java代碼上面,找到問題。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章