1. 程式人生 > >總結之踩過的後臺服務報500的坑

總結之踩過的後臺服務報500的坑

500錯誤 tomcat 運維 數據庫

有時候遇上服務報500的錯誤,500錯誤是內部服務器錯誤。根據工作中所爬過的坑,小結一下目前遇到的服務報500的情況大致有下面幾種:

1、數據庫異常:
1)檢查數據庫服務器,是否能夠正常連得上,數據庫機器或者是否掛了;
2)檢查服務上的數據庫相關的配置,是否正確;
3)檢查swagger,看swagger頁面是否能夠正常訪問,swagger裏面的後臺接口能否正常獲取到數據庫裏面的數據;
4)如果數據庫正常、配置正常,swagger也能獲取到數據,而且查看日誌的時候,發現日誌報某些表不存在,但是登上某一臺數據庫,發現表是完整的。那麽就需要檢查一下所有的數據庫機器裏面的數據了。看看主從數據庫裏面的數據是否一致。如果數據不一致,且同步數據有問題,而服務正好連上問題數據庫,那麽就會出現頁面上有些數據顯示不出來,服務報500的情況;

5)如果是新搭建的環境,那就需要看看是否數據庫沒有進行數據的初始化了;
6)數據庫的磁盤空間滿了,這時候服務不一定會報500,但是頁面上數據會加載不出來;
7)還遇到一種數據庫異常就是,有一個鑒權的服務升級完了之後,發現所有的成員操作報沒權限,但是服務是OK的。查看服務日誌,日誌報該服務配置的數據庫用戶沒權限連接數據庫。查看這個數據庫的用戶,發現這個庫的用戶和密碼被誰刪掉了(另一次是用戶沒有刪,突然就沒權限了),然後重新創建這個用戶,重新授權,就OK了

2、域名異常
有一次遇上服務A報500,查看了機器的後臺進程,服務的配置、數據庫,一切正常。而且使用服務A所在服務器的IP+端口訪問後臺swagger,也能夠完整的獲取到數據。但是使用服務A的域名去訪問swagger的時候,發現swagger頁面卻無法打開,經過排查域名,發現該服務的域名丟失了,而前臺調用該服務是通過域名調用的,因此出現了報500的情況。

3、/etc/hosts沒有配置解析
有一次發現A服務的頁面上出現了B服務報500的錯誤,A服務是通過域名調用的B服務後臺服務。經過核對排查,發現因為兩臺機器的大小網、網絡等原因,需要在A服務的/etc/hosts裏面單獨配置B服務的解析,加上IP和域名(如:10.0.0.0 www.baidu.com )才能正確解析到。於是加上解析之後,服務就不再報500了。

4、logout的 URL配置問題,網站的退出登錄時,頁面直接500
有一次是在首頁退出登錄遇到了500錯誤。正常情況下點擊logout,就應該是界面回到最初的登錄界面,但是點擊logout退出登錄之後,界面直接就是顯示一串500的報錯。於是查看tomcat下應用裏面的inputs參數,檢查logout這裏對應的URL鏈接地址,發現URL鏈接有誤。換成正確的地址之後,500錯誤解決。

5、memcached異常,頁面登錄,報500
在前端是加了memcached的,在登錄頁面輸入用戶名和密碼登錄,進去之後發現不是網站的首頁,而是頁面直接就是500的報錯信息,報錯信息還寫了time out等等,其中註意到報錯裏面有兩個IP地址,經核實,正是memcached的IP地址,於是查看memcached服務,確認是memcached服務異常引起的。

6、Haproxy的VIP異常
服務為雙節點,走的HA,一次頁面上出現服務報500,影響了業務的正常功能。但是以上5點原因都排查過,均是正常的。最後查看HA,發現是後臺HA服務的VIP掛了,因此引起了服務報500。將vip處理好,問題得到解決。

目前遇到的大致就這些,後續再有,再繼續補充。。。

總結之踩過的後臺服務報500的坑