nginx訪問一直顯示502

寫文章之前,一共遇到過2次訪問自己的站點,nginx返回502。每次情況都不一樣,做個記錄:

第一次
引起502原因:內存溢出
排查方法:在終端 輸入top。查看服務器的運存是否已經達到了峯值
這裏寫圖片描述

內存溢出這問題就很淺顯易見了。
因爲是臨時的服務器,運存只有1G,可是臨時的項目非常的多,在報502之前,服務器已經在跑着3個項目。

這時候服務器沒及時的監控(其實已經到了運行內存的峯值了),接着又把第4個項目放了上去。

剛開始的時候還算平穩,過了5分鐘後。4個項目的接口全部返回了502。然後折騰着重啓tomcat,重啓nginx。

可是都不行,於是上控制檯看,原來是cup到頂了。登錄終端,輸入top一看,的確已經到頂了。於是把第4個項目先撤下來,重啓nginx,重啓tomcat。一切恢復正常(到現在服務器一直都在崩潰的邊緣徘徊,所以有重要的項目最好還是先升級一下服務器)。


第二次
引起502原因:tomcat配置文件異常
排查方法:只能從日誌入手,一步一步排查

1、有了第一次的經驗,這次一看到502.先查看峯值 top
這裏寫圖片描述
一切正常,服務器的壓力還算輕鬆,因爲只跑着一個項目

2、既然不是峯值的問題,那就從nginx的日誌入手,查看nginx日誌(在安裝目錄下/logs/error.log 我的就是在:/usr/local/nginx/logs)

[error] 14304#0: *94 connect() failed (111: Connection refused) while connecting to upstream, client: xxx.xxx.xx.xxx, server: xxxx.com, request: "GET / HTTP/1.1", upstream: "http://xx.xxx.xxx.xxx:8080/", host: "xxxxx.com"

搜索 nginx 502 或者搜索報錯的信息,給出的答案都是一個樣:

查看 php-fpm 是否啓動,修改php-fpm的配置文件。不得不說這可能是解決的方法之一,不過搜索出來的答案都是千篇一律,根本找不到點子上(因爲我的服務器根本就沒裝php-fpm,不過之前運行正常,所以我很肯定的排除了這種可能性!

3、既然找到了錯誤信息,可是又沒對應的解決方案,最好的方法就是重啓一次nginx。殺掉nginx的進程,然後用nginx -t來檢測配置文件是否正常

檢測發現一切都正常,重啓nginx,還是502。而且由於我的nginx代理給tomcat了。所以無論訪問哪個接口,都是會轉發到tomcat中去。

所以我只能通過服務器的IP地址(不加任何端口,在瀏覽器中輸入服務器IP地址)來訪問nginx。打開的正是nginx的歡迎頁面,這時候證實了nginx是正常在運行的

4、既然轉發給了tomcat。那就在從tomcat入手

關閉tomcat。在啓動tomcat,可是關閉的時候報了個錯,tomcat並沒有在運行
這裏寫圖片描述
於是我先把tomcat在運行起來,執行啓動命令沒有報錯,一切都很平靜,可是站點還是報502

5、開始排查tomcat日誌:

/usr/local/tomcat8/apache-tomcat-8.5.29/logs/catalina.對應日期.log

在日誌中隱約看到一個錯誤信息:

java.lang.IllegalStateException: java.io.FileNotFoundException

文件找不到的異常。由於之前我配置過一個nginx+tomcat 配置不同二級域名訪問tomcat中的對應項目。所以修改過tomcat的server.xml文件。詳細看我之前的博文

這就不難解釋了,由於之前的配置文件中配置了多個HOST節點,並且是映射到指定的項目目錄中。造成了找不到文件的異常,使tomcat掛了,所以訪問站點就報了502

到這裏,502的問題就算是解決了,把tomcat錯誤的配置文件修改回來,或者把多餘的host節點刪除。然後關閉tomcat,這時候tomcat就正常關閉了,在重新重啓tomcat。等tomcat運行完之後,站點恢復正常。

小結:平時還是要多留意服務器的運行情況

其次,每次出問題後,不要盲目相信其他操作,最好能從日誌文件入手,因爲別人的經驗不一定適用於自己,盲目操作可能會讓問題雪上加霜

再者,一定要很清楚到底是服務的問題還是程序的問題,因爲tomcat歸tomcat,nginx歸nginx。需要一個一個排查清楚。

就像這次的事故,是因爲tomcat的配置文件,導致tomcat運行異常。然後引發的nginx報錯502

最重要的就是平時要做好備份保護,不要一通操作之後連最基本的配置都改亂了

至此,我的問題就暫時解決了,又是一次艱難的排查。

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