性能面试3
1,產品就只給一個需求,需求調研的內容都不知道,也沒人告訴你,怎么開展性能測試?
a> 沒有任何途徑進行需求調研的情況下,可以跳過需求調研,直接開始壓測。
b> 壓測完成后,可以把本次壓測數據開會討論,共同決定是否滿足性能需求;
c> 或者根據行業內的通用指標規范,比如高頻接口響應時間<100ms,低頻<200ms的標準來判斷
2,如何定位一個系統的性能瓶頸?
見《性能案例分析》PPT
整體思路:從前到后,從表象到內部
1、首先排除壓力機自身的問題,如CPU、內存,網絡,腳本編寫等
2、監控中間件的訪問日志,觀察響應時間,大體確定耗時處于哪一段
3、排查網絡問題,監控壓力機到后端服務器的網絡,以及各服務器間的網絡,是否達到網絡上限
4、監控服務端所有機器的操作系統負載,如CPU、內存、磁盤、網絡是否達到瓶頸
5、監控應用服務器的日志,查看是否存在ERROR日志,比如TimeOut或其他類型報錯
6、監控各中間件的連接數,如nginx、tomcat、mysql等,是否達到上限
7、監控應用程序線程狀態,使用jstack或jvisualvm查看是否有死鎖、阻塞等情況
8、監控應用程序的jvm,使用jstat或者jmap查看GC情況,是否內存泄漏等
9、使用jprofiler監控應用程序,可以查看耗時比較長的代碼方法
10、監控數據庫,是否存在慢查詢,一般數據庫CPU高都是因為SQL語句效率低造成的
11、檢查數據庫執行計劃,是否有全表掃描,以及索引不生效的情況
12、檢查系統外部依賴情況,如果外部依賴系統性能差,也會造成本系統性能低
13、對于不好定位的問題,可以考慮采用模塊隔離法來確定問題
3,怎么進行性能場景設計?
通用類場景:
a> 單接口測試場景
b> 混合接口測試場景
c> 高可用性場景(集群情況下)
d> 網絡異常場景(如有必要)
e> 穩定性場景
f> 其他業務相關場景
4,給你一種xx協議的系統,怎么測試
a> 先了解協議的格式,數據交互
b> 查找壓測工具是否支持本協議
c> 如果不支持,通過自己寫代碼的方式發送協議包進行測試
5、云上部署的應用怎么壓測?
a> 在云上申請一臺機器當做壓力機,與部署應用同區域機房,這樣相當于在云上內網壓測
b> 與局域網壓測一樣,使用通用工具LR、Jmeter進行壓測
總結
- 上一篇: 堆栈的初始化,主要是为ss和SP赋初值
- 下一篇: volatile 关键字