操作系統性能指標:CPU,io,內存


1,負載

什么是負載?

正在被CPU調度的進程+等待CPU調度的進程;正在運行的進程+正在io 的進程

怎么看負載?

load average:0.13  0.06  0.01  過去一分鍾的系統的平均負載,過去5分鍾的平均負載,過去15分鍾系統的平均負載

什么樣的負載是OK的?

不超過CPU顆粒數

 

進程是資源分配的最小單元
線程最小的調度單元

 

 

2,CPU

CPU理解?

CPU工人干活的在內存干活,內存相當於車間,數據最終存在磁盤,相當於倉庫

怎么樣的CPU是OK的?

CPU使用率(user+sy)不超過80%

97.4%id>20%,大於20%就是OK的

問題:Tomcat進程在寫日志時消耗的是系統內核進程,消耗的是系統CPU

回答:系統的CPU,系統內核切換的時候消耗的CPU,進程切換的時候,需要保持進程的上下文狀態,進程切換是在內核進行切換的,用到內核的進程,寫磁盤,讀磁盤是消耗系統的進程,從用戶進程切換到系統內核進程,系統內核對進程操作

3,內存  閃存,重啟就沒了,men是內存

Java應用程序沒有內存使用率之說,只有gc頻率以及內存溢出;關心fullgc和內存溢出;因為Java有虛擬機,有最小內存和最大內存,

非Java應用小於80%

4,磁盤   存儲所有數據  iostat -x

磁盤主要看什么?

繁忙程度和隊列

磁盤有哪些指標?

tps:每秒讀,寫磁盤的次數;每秒io的次數
rd_sec/s :每秒讀磁盤的次數 ,讀的比較多說明內存數據不夠,從磁盤讀數據
rd_sec/s:每秒寫磁盤的次數,寫的比較多在寫日志
avgrq-sz:每秒操作扇區的大小

avgqu-sz磁盤隊列長度,隊列大小長度,就是請求有沒有排隊,不能有大於1;
await:磁盤每次處理的時間,不超過5毫秒,看讀多還是寫多,如果讀多,內存的數據不夠
讀多:數據庫的全表掃描,執行語句,在內存中執行,從磁盤中讀出來,
寫過:就是寫操作比較多,
svctime:磁盤自己處理的時間,
排隊時間:await-svctime

怎么看磁盤是否OK?

單塊磁盤的繁忙程度不超過30%,用nmon命令,看busy 是否超過30%

或者看隊列不能超過1

怎么查看打開文件大小?

open files:1024個

ulimit -n 65535 調整為65535

問題?一個請求的響應時間慢,原因是什么?

首先看響應時間都包括什么?

響應時間就是用戶從發送請求到展示到頁面的時間,也就是前端時間和服務器的處理時間,一般我們都說的是服務器的時間

也就是服務器時間,數據庫時間,網絡時間

划分為web服務器時間,應用其服務器時間,數據庫時間,以及各服務器間通信的網絡時間。

 

三個方面:

服務器處理:代碼處理邏輯,中間件,操作系統(因為db和web容器運行在操作系統上)硬件資源CPU,io等
網絡
數據庫:執行sql時間sql執行的效率,數據庫執行的快還是慢,看服務器的慢查詢日志,或者把sql拿出來執行一下

負載機---》網絡----》web容器(Tomcat,apache等)是否空閑進程,然后執行代碼,執行到sql語句時,線程掛起,因為等待數據庫返回結果,-----》數據庫執行sql執行時間(數據庫是否有空閑的數據庫連接池,如果沒有進行排隊)
1,請求發起的地方負載機,負載機的配置(負載機的帶寬啥的) client
2,帶寬 網絡
3,web容器線程池是否排隊,web容器是Tomcat,Apache,資源池是否排隊,看是否有空閑的線程,如果排隊到了的話就開始執行代碼---執行到sql語句的話請求(線程或者進程)掛起---------請求請求發到數據庫,數據庫執行sql---執行完后把結果返回
4,數據庫連接池是否排隊,如果有空閑的數據庫連接池
5,sql執行的效率,數據庫執行的快還是慢,看服務器的慢查詢日志,或者把sql拿出來執行一下
6,jvm是否暫停 應用程序線程暫停的
7,代碼的業務邏輯的問題

Nginx多進程,
8,web容器和db都是在操作系統上,硬

 

緩存和緩沖的區別:

緩存說的是數據,數據從硬盤到內存

緩沖說的是文件,

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM