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