84669 人學習
152542 人學習
20005 人學習
5487 人學習
7821 人學習
359900 人學習
3350 人學習
180660 人學習
48569 人學習
18603 人學習
40936 人學習
1549 人學習
1183 人學習
32909 人學習
有一个按钮用来向后台请求数据,我已经限制了这个按钮,从发起请求到请求数据接收完之间按钮是不可点击的,但是我后台数据返回是很快的,如果快速频繁的点击它,仍然会导致它不断的向后台请求数据,然后请求无响应了,服务器那边没反应了,服务器无法访问了,看后台日志又一切正常,没有任何错误(日志这块不太熟,不确定是真没错误信息,还是信息没有打出来)。 这里我比较困惑: 为什么浏览器端频繁操作会导致服务器端无响应?
拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...
問題最終解決了,問題的原因是資料庫存取沒有加事務註解,導致資料庫存取的連線沒有被管理,導致連線池中連線數不斷增加進而超出,然後伺服器就無回應了。正常來說這應該會報錯才對,我最開始選擇的資料庫連線池是org.apache.commons.dbcp.BasicDataSource,不知道為什麼沒有報錯,讓我對問題無法定位;然後透過tomcat日誌中connection reset訊息猜測和資料庫連接數有關;然後我換了一個連接池org.logicalcobwebs.proxool.ProxoolDataSource,這回報錯明顯,當我資料庫訪問超過一定次數,直接報錯告訴我連接數超出了;然後我就發現是連接數字沒有被釋放,然後我就發現是程式碼裡沒有加事務的註解(加了之後應該就是由spring來負責資料庫連線的管理,是嗎?),一個註解,解決了我的問題。 。 。有所收穫
伺服器無回應分為這樣幾種情況
1:伺服器掛了。這時候伺服器是沒辦法存取的。整個伺服器已經掛掉了。檢測方法最簡單,直接ping一下即可 2:服務掛了。就是你提供回應的服務掛了,系統內部異常,這個服務可能是個進程。檢測也比較簡單,訪問一下其它的服務看是否可用。 3:網路異常,用第一步的偵測方法即可
ping
回到你的問題为什么浏览器端频繁操作会导致服务器端无响应?
为什么浏览器端频繁操作会导致服务器端无响应?
這個原因可能有1:該服務被邏輯過於複雜,處理時間過長。導致後面的請求都被阻塞掛起了。 2:內部異常了,導致服務所在的進程掛了,因此後續的請求也無法回應。 PS:你可以透過要求得到的回傳狀態碼來判斷一下可能出錯的位置。
以上
問題最終解決了,問題的原因是資料庫存取沒有加事務註解,導致資料庫存取的連線沒有被管理,導致連線池中連線數不斷增加進而超出,然後伺服器就無回應了。正常來說這應該會報錯才對,我最開始選擇的資料庫連線池是org.apache.commons.dbcp.BasicDataSource,不知道為什麼沒有報錯,讓我對問題無法定位;然後透過tomcat日誌中connection reset訊息猜測和資料庫連接數有關;然後我換了一個連接池org.logicalcobwebs.proxool.ProxoolDataSource,這回報錯明顯,當我資料庫訪問超過一定次數,直接報錯告訴我連接數超出了;然後我就發現是連接數字沒有被釋放,然後我就發現是程式碼裡沒有加事務的註解(加了之後應該就是由spring來負責資料庫連線的管理,是嗎?),一個註解,解決了我的問題。 。 。有所收穫
伺服器無回應分為這樣幾種情況
1:伺服器掛了。這時候伺服器是沒辦法存取的。整個伺服器已經掛掉了。檢測方法最簡單,直接
ping
一下即可2:服務掛了。就是你提供回應的服務掛了,系統內部異常,這個服務可能是個進程。檢測也比較簡單,訪問一下其它的服務看是否可用。
3:網路異常,用第一步的偵測方法即可
回到你的問題
为什么浏览器端频繁操作会导致服务器端无响应?
這個原因可能有1:該服務被邏輯過於複雜,處理時間過長。導致後面的請求都被阻塞掛起了。 2:內部異常了,導致服務所在的進程掛了,因此後續的請求也無法回應。 PS:你可以透過要求得到的回傳狀態碼來判斷一下可能出錯的位置。
以上