當我們發現網頁/應用訪問突然變慢,我們可以從幾方面來定位問題:
- 看看是一個用戶的問題?還是一群用戶的問題?或是全部用戶的問題?
- 看看是前端問題?還是后端問題?
- 看看是數據庫問題?還是接口問題?或是服務器問題?
如果是一個用戶的問題,可以考慮是否是該用戶的網絡問題,或者我們的服務器有沒有對當前用戶的IP進行了限流或攔截。如果是固定某一群用戶的問題,可以考慮是否是某個電信運營商的問題,或者我們某個的機房的問題。如果是全部用戶的問題,可以考慮是前端問題,還是后端問題。
對于是前端問題還是后端問題的定位,在定位問題之前,我們可以打開瀏覽器和服務器的調試模式,以查看網頁/應用的執行情況。
如果是前端問題,你可以看看html、css、JS等靜態資源是否加載正常,所用時間是否特別長。如果是后端問題,你可以看看是否是數據庫問題,接口問題,或服務器問題。
看看每一條SQL的執行情況,看看有沒有慢查詢。看看請求外部接口是否正常,看看有沒有超時的情況。看看CPU、內存、磁盤的使用情況,看看是否存在內存溢出。看看請求來源ip,看看是否存在DDoS攻擊。
總之,要盡早發現問題,最好是提前在可能出現問題的地方增加日志和監控。讓機器,而不是人工來發現問題。