軟件性能測試面試題一

1、IO性能調優的過程:OS級別->進程級->線程級->文件級

vmstat(或者iostat,可以查看系統磁盤的讀寫量及cpu佔用率)->iotop(定位到什麼進程在作祟)->systemtap->

2、cpu性能調優的過程:vmstat->top(查看進程號)->pidstat(查看哪個線程消耗了cpu:pidstat -p 10846 -u -d -t -w -h 1 1000)->jstack(做thread dump,例如:jstack -l 10846>10846.threadump)->查看nid(nid指native ID 對應系統的tid,但tid顯示的10進制,nid顯示的是16進制)->printf %x'\n' 10861->轉換後的結果爲2a6d->對應到threaddump文件中,查到nid在哪一行,從而確定代碼的哪一行對cpu的使用比較高

3.tomcat配置

4、JVM內存是否開的越大越好,爲什麼?

答:JVM內存開的越大,JVM在進行Full GC所需的時間越久,由於Full GC時stop whole word的,如果是用於響應HTTP請求的服務器,這個時候就表現爲停止響應,對於需要低延遲的應用來說,這是不可接受的,對於需要高吞吐量的應用來說,可以不在乎這種停頓,比如一些後臺的應用之類的,那麼內存可以適當調大一些

5、如果tps曲線圖上下波動很大,那你怎麼去分析問題?

答:比如:1、網絡的波動,2、壓力過大,3、防火牆設置不當,4、環境不乾淨,壓測期間有其他用戶在訪問服務器,5、線程是有掛起,6、數據庫鎖,7、不正常的GC;這幾個問題都會引起tps上下波動很大

6、性能測試流程

答:獲取測試需求->測試架構的調研、業務模型調研、確定需求->測試計劃(屬於部門老大工作)->測試方案設計->環境的搭建->測試用例設計->測試數據準備->測試環境試運行->測試腳本開發->創建模型(場景)->執行場景(此過程中,需監控調試)->測試結果分析->問題反饋(相應的研發人員處理問題)->再次測試->最終報告

7、cpu資源負載高如何定位分析問題

答1、用top找到最耗資源的進程id,2、查詢最消耗資源的java線程( top -H -p  進程號)3、打印java 棧 信息(在jdk的bin下執命令: jstack pid>pid.threaddump

     4、將耗資源的java的tid(十進制)轉換爲nid(十六進制){因爲系統級的tid對應threaddump中的nid},5、查看pid.threaddump文件中的nid,從而找到出問題java代碼的行號 ,6、

同時要看一下堆的情況,在jdk的bin目錄執行:jmap  - heap  pid;jmap  -histo   pid

8、堆內存和棧內存的區別?

答:堆主要用來存放對象的,棧主要是用來執行程序的

9.top的-H參數的意思

答;-H : Threads toggle(線程切換),所以top -H -p pid的意思就是找出線程切換消耗cpu的線程







可能存在的問題:1、程序中可能存在死循環,導致服務器負載超高(使用top指令查看負載高達100+), 需要藉助Linux的proc虛擬文件系統找到具體的問題程序,2、程序不合理使用session,需要藉助Linux的proc文件系統找出原因,



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