stress命令安裝


一、stress(cpu)

stress是一個linux下的壓力測試工具,專門為那些想要測試自己的系統,完全高負荷和監督這些設備運行的用戶。

下載地址
http://people.seas.harvard.edu/~apw/stress/

進入到usr/local/bin目錄下:  #cd /usr/local/src

上傳stress壓縮包:    #rz

解壓縮包:      #tar  -xzpvf  stress-1.0.4.tar.gz 

進入到已解壓的文件夾:    #cd stress-1.0.4

輸入./configure進行配置 :  #./configure

然后進行以下命令輸入:

                                        #make

                                        #make check

                                        #make install

最后輸入:stress --version 驗證是否安裝成功

命令參數:

Usage: stress [OPTION [ARG]] ...
-?, --help  //顯示幫助信息

--version    //顯示軟件版本信息

-v, --verbose    // be verbose

-q, --quiet         // be quiet

-n, --dry-run    //show what would have been done

-t,  --timeout N     // timeout after N seconds

     --backoff N     // wait factor of N microseconds before work starts

-c,  --cpu N          //spawn N workers spinning on sqrt()

-i,  --io N       //spawn N workers spinning on sync()

-m,  --vm N     //spawn N workers spinning on malloc()/free()

     --vm-bytes B    //malloc B bytes per vm worker (default is 256MB)

     --vm-stride B     //touch a byte every B bytes (default is 4096)

     --vm-hang N      //sleep N secs before free (default none, 0 is inf)

     --vm-keep         //redirty memory instead of freeing and reallocating

-d,  --hdd N          //spawn N workers spinning on write()/unlink()

     --hdd-bytes B     //write B bytes per hdd worker (default is 1GB)

 

 

-?
--help 顯示幫助信息
--version 顯示軟件版本信息
-t secs:
  --timeout secs指定運行多少秒
  --backoff usecs 等待usecs微秒后才開始運行
-c forks:
  --cpu forks 產生多個處理sqrt()函數的CPU進程
-m forks
  --vm forks:產生多個處理malloc()內存分配
-i forks
  --io forks:產生多個處理sync()函數的磁盤I/O進程
  --vm-bytes bytes:指定內存的byte數,默認值是1
  --vm-hang:表示malloc分配的內存多少時間后在free()釋放掉
-d :
  --hdd:寫進程,寫入固定大小,通過mkstemp()函數寫入當前目錄
  --hdd-bytes bytes:指定寫的byte數,默認1G
  --hdd-noclean:不要將寫入隨機ascii數據的文件unlink,則寫入的文件不刪除,會保留在硬盤空間。

>>>>>>安裝過程中遇到的坑:

 1、yum安裝會出現yum源的問題導致安裝不成功,如何解決呢?

博客:https://www.cnblogs.com/dadong616/p/5062727.html

2、沒有make命令

 

 

練習::

1、stress --cpu 1 --timeout 600  分析現象?負載為啥這么高?top命令查看用戶進程消耗的cpu過高(stress進程消耗的)

2、stress -i 1 --timeout 600  分析現象?top看負載升高,內核cpu過高?       iostat -x     stress消耗cpu多,iowait 等待        pidstat -d      

3、stress -c 8 --timeout 600  

 

案例:vu增加,tps降低,響應時間增加?

打印tomcat的整體響應時間,再打印接口的處理時間。

tomcat從1秒增加到8秒。

原因最后:線程池的上下文切換導致的線程等待時間過長。

 

4、sysbench --threads=10 --max-time=300 threads run

 

 

cswch自願上下文切換:進程無法獲取資源導致的上下文切換,比如;I/O,內存資源等系統資源不足,就會發生自願上下文切換。

nvcswch非自願上下文切換:進程由於時間片已到,被系統強制調度,進而發生的上下文切換 ,比如大量進程搶占cpu。

5、vmstat 默認看的是 

pidstat -w 默認看的是進程的上下文切換

pidstat -wt -t參數看線程的上下文切換

6、python3 腳本運行分析

app.py

負載上來,top 定位到磁盤有問題

iostat -x 3 定位到寫操作有問題

pidstat -d  中斷不可恢復的情況比較多,定位到python進程的寫操作有問題

和寫操作有關,則和程序里的方法有問題

strace -p  pid  跟蹤進程   ,可以看到是大量的寫操作,往log.txt里寫文件導致的

查看代碼,分析分析,可以看到代碼中的寫入大小

 

分析流程:

負載-cpu-b(中斷不可恢復的進程比如io)

負載高-cpu-iowait-io-(中斷、上下文切換、讀寫)-(pidstat -d)定位到某個進程的寫-(strace 跟蹤進程,定位到寫哪個文件)-查看源碼,定位到寫這個文件的代碼塊。

7、

 8、

 


免責聲明!

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



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