記錄一次坎坷的debug之旅,NUXT框架頁面多開假死現象,NUXT剛開始可以訪問,突然就訪問無響應,並且前后端均未出現任何報錯提示:現在是早晨4點35分


背景條件:前台系統框架NUXT,后台微服務注冊NACOS,服務轉發nginx

問題出現:在springboot整合redis的時候,NUXT突然出現訪問無效的情況,即訪問index主頁空白,頁面一直顯示正在加載。並且前后端無任何報錯提示,瀏覽器控制台也無任何報錯提示。但是有個奇怪的現象,即每次一開始啟動服務時可以正常訪問,當過了一段時間就會出現失效的情況。

 

 

------------------------------------------------------------------------------------

問題分析:由於是在整合redis的時候出現的,首先我把目光對准了redis,因為是啟動前端工程后一段時間才會出現這個bug,所以我猜測可能和redis的timeout屬性會有相關。因此首先我認為問題可能出在后端

Debug:恰好在配置redis的時候出現了一個奇怪的報錯,但是並沒有影響服務運行。於是我思考會不會是timeout的設置的原因導致的問題。於是經過一番搜索,明白了之所以會報錯是因為高版本的IDEA要求在配置后面加上ms單位,即可解決問題

 

 

 

 測試:重新啟動微服務進行測試,發現情況依然如此。並沒有得到解決

---------------------------------------------------------------------

問題分析:既然不是springboot配置文件中配置出的錯,我猜想會不會是因為虛擬機中redis.conf配置文件里面的某個配置導致功能失效。

Debug:打開虛擬機中的redis.conf配置文件,核對了幾個主要的配置參數,發現並沒有問題,排除該猜想。

------------------------------------------------

問題分析:既然配置無報錯無其他問題也不能解決,我決定嘗試回滾代碼,但是最早的備份是昨天中午的,回滾會丟失很多代碼。於是我手動把redis的配置刪掉,所有整合的過程全部回溯。

測試:重新啟動微服務進行測試,發現情況依舊,沒有得到解決。

-----------------------------------------------

問題分析:這樣看來有可能的情況是這個bug早就存在,但是一直沒有被發現,只是在整合redis的時候被察覺了而已

Debug:雖然大概率我認為是前端的問題,但是我決定重新測一下后端接口,並且開啟了后台系統的前端工程,進行測試

測試結果:頁面成功獲取到了數據並進行展示,說明后端接口並沒有出現問題

-------------------------------------------------

問題分析:既然后端沒有出現問題,我決定把重心放在前端。重新看前端,發現十幾分鍾過去了報了一個錯(我測試了不下15次,重啟電腦3次。但該錯誤僅僅出現過一次,但是這個錯誤或許就是關鍵所在,因此我特別留意了該錯誤)。錯誤如下,提高了是前端出問題的可能性

 

 Debug:既然有了報錯。我開始在搜索引擎上通過下面兩個方面進行搜索。第一個方面的關鍵字:NUXT,頁面失效,頁面空白,無法調用接口,突然打不開頁面;第二個方面即根據前端報錯進行搜索。搜索的結果有很多,第二個方面搜索到的包括1.因為nginx的問題 2.因為nacos的問題。可是這個頁面調用的接口並沒有進行跨服務的調用,並沒有nacos的Feign功能,於是我排除了nacos的問題。然后是nginx,我打開nginx的配置仔細看一遍,並沒有任何問題。

於是我進行了下面三個嘗試

  1.關閉nginx並重新啟動,打開前端頁面,測試:依舊無法打開頁面

  2.關閉nginx並重新啟動,重新啟動前端工程,測試:發現可以打開頁面,但過不了一會兒打開多個頁面后又出現同樣情況,無法訪問

  3.nginx保持不變,重新啟動前端工程,測試:發現可以打開頁面,但過不了一會兒打開多個頁面后又出現同樣情況,無法訪問

------------------------------------------------------------------------------------

問題分析:經過上面的測試基本已經可以確定是前端工程出現了問題,因為NUXT我是第一次使用,並不熟悉。特別是當我打開百度進行搜索NUXT的時候,第一列赫然是   NUXT就是一個坑。讓我不知道怎么下手了。

 

 

 但是上面說到我從兩個方面進行了搜索,而第一個方面搜索到了一個答案,可是並沒有引起我的注意,原答案如下。當時我只是從眾多網頁中看了一眼,然后並沒有覺得有什么,因為下面的回答也說到了可能是他代碼的問題。

 

 突然我有點覺得這個bug可能我要解決不了了,可是后面還有很多功能要做,如果卡在這里的話勢必會對后面的功能開發產生一定影響。

於是我第N次重啟了服務,開始刷新。令我驚訝的是,這次居然沒有出現bug,一切正常。

於是我又重啟了服務,打開了多個頁面進行刷新,可是,又出現了bug。這時候我意識到可能是頁面的問題,剛剛那個提問在我腦海中閃了一下

於是再重啟服務,開始刷新一個頁面,沒問題。再開一個頁面進行刷新,沒問題。再開一個頁面,出現問題了,頁面開始無法訪問。

再多試了幾次之后,我總結掌握了規律:即只要我只使用一個頁面進行訪問,沒有任何問題,但是只要我多開頁面達到3個就會導致bug出現,之前能訪問的頁面也會無法訪問。

而這個問題正是之前那個樓主想要解決的問題。

到此:我的心情終於開心了起來。

但是:當我進行搜索出現這樣問題的原因時,並沒有人對此進行回答。。。

--------------------------------------反思---------------------------------------------------

這個bug的出現一個是因為本身框架可能有問題。

另一個就是自己平常的習慣:多開網頁進行測試,而不是反復刷新一個頁面。

最開始我以為是啟動前端工程到達一定時間后就會出現bug,最后發現其實是因為多開了頁面,並且開頁面需要時間,讓我誤以為原因是在於時間,而不是數量

但最終能找出問題的所在實在是不容易,耗費了幾個小時的時間

可是現在只知道問題所在,暫時還解決不了。

------------------------------------結語-----------------------------------------

換個好點的框架用吧,睡個好覺!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM