線上系統,正在做壓力測試,剛開始10并發進行壓測,cpu壓到了100%但是系統最大qps才200多。通過JVM監控查看JVM younggc很頻繁,fullGC數量為零。
創新互聯建站是一家專注于網站設計制作、成都網站建設與策劃設計,海陵網站建設哪家好?創新互聯建站做網站,專注于網站建設十年,網設計領域的專業建站公司;建站業務涵蓋:海陵等地區。海陵做網站價格咨詢:028-86922220
cpu 達到100% 則先看cpu使用率最高是哪個進程,可以直接通過linux命令 top查看,找到對應的進程ID,發現正是壓測的java系統進程ID,找到進程ID后,然后在查找該進程下CPU使用率最高是哪個線程,可以通過top -p 進程ID -H 命令顯示線程使用cpu信息,效果如下:
圖片中PID列則為十進制顯示的線程ID,然后轉換為16進制通過jstack 系統進程ID | grep 16進制線程ID 可以找到對應的線程信息如下,也就是該線程占用了一半左右的cpu
Finalizer線程是個單一職責的線程。這個線程會不停的循環等待java.lang.ref.Finalizer.ReferenceQueue中的新增對象。一旦Finalizer線程發現隊列中出現了新的對象,它會彈出該對象,調用它的finalize()方法,將該引用從Finalizer類中移除,因此下次GC再執行的時候,這個Finalizer實例以及它引用的那個對象就可以回垃圾回收掉了。
說明Finalizer的隊列中有許多的等待回收的垃圾對象,可以通過命令查看等待回收的對象都有哪些;
jmap -finalizerinfo 進程ID
執行命令后顯示結果如下
發現有好多的自定義對象,通過類名可以看到這些對象都是通過CGLIB動態代理創建的,而這些動態代理類都默認實現了finalize方法,導致這些對象在進行垃圾回收時必須先要執行finalize方法,所以都積壓到了finalizer的隊列中。
1.不要使用cglib來給那些需要頻繁進行垃圾回收的對象創建動態代理,這些對象大量創建的同時,也會創建相等數量的動態代理對象,使得內存占用迅速增長,并且不斷進行垃圾回收,由于代理類重寫了finalize方法,給垃圾回收帶來了額外的壓力。
2.盡量能夠復用對象,不要每次都new一個對象
有時,我們需要查看某個文件的增長速度,如日志文件,以此來感受系統的負載情況,因為一般情況下,日志寫入越快,說明系統負載越重。
本文就來介紹下Linux中查看日志增長速度的幾種方法,如下:
首先要介紹的是dd,因為dd命令幾乎所有主流發行版都自帶,無需額外安裝,如下:
如上,使用 tail -F 獲取新寫入的數據,然后用管道將數據交給dd,dd將數據拷貝到 /dev/null ,其中 status=progress 是用來顯示拷貝速度的,可見,我們日志的寫入速度是 471 kB/s 。
pv命令可以看做是帶進度的cp,如下:
原理與dd類似,不過命令換成了pv。
由于日志數據都是程序(如java)寫入的,而在如下的偽文件中,存放著程序打開的文件信息,如下:
于是定期的讀取這個offset就可以知道文件的寫入速度了,這也是cv命令的實現原理,如下:
通過寫一個小腳本,定期觀察文件大小,也可查看文件寫入速度,如下:
通過watch再加上觀察,也能大致看出速度,如下:
其實轉念一想,如果我們在某個函數中打上日志,然后通過grep過濾出此日志,然后我們只要計算每秒輸出的日志行數,這豈不就是函數執行的QPS了!
這里可以通過 151/15 計算出QPS是10,由于沒有超過1000,所以看到的是0.0kB/s,如果使用pv命令,會更簡單一些,如下:
QPS是什么
我們先回憶一下,QPS的概念如下所示:
QPS(Query Per Second):每秒請求數,就是說服務器在一秒的時間內處理了多少個請求。
那我們怎么估出每秒鐘能處理多少請求呢?
OK,用日志來估計!那日志怎么記錄呢
此時,你訪問一次/home/index地址,會有下面這樣日志
那么,你就可以根據日志中,該記錄的出現次數,統計index接口的QPS。
假設,你這會日志已經拿到手了,名字為xxx.log。
假設日志內容如下
這個時候,你執行一串命令長下面這樣的,進行統計就行!
出來等結果就是
然后你就知道,原來在20:40:44 分。。這個接口的QPS最高,達到了驚人的2QPS!
現在,來講一下命令什么意思!
那么,如果是其他日志格式,無外乎 ”cut語句“的處理不同而已,道理類似!此法可以估算出單機的某接口的 “QPS” 是多少!
估算
我們現在估計出了單機的QPS。接下來,估算集群的QPS。
這就要根據負載均衡的策略來估計!
比如,你部署了32臺機器,負載均衡的策略恰巧為輪詢,那集群的QPS就是單機的QPS乘32就好了。
所以,根據具體的策略,來估計整個集群的QPS多大!
多嘴一句,一般2000QPS夠了!
新聞標題:linux統計qps命令的簡單介紹
當前鏈接:http://vcdvsql.cn/article40/ddopieo.html
成都網站建設公司_創新互聯,為您提供外貿建站、、網站建設、營銷型網站建設、網站排名、手機網站建設
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯