java - 频繁请求后台导致服务器无响应一般是什么原因呢
高洛峰
高洛峰 2017-04-17 14:35:57
0
2
1676

有一个按钮用来向后台请求数据,我已经限制了这个按钮,从发起请求到请求数据接收完之间按钮是不可点击的,但是我后台数据返回是很快的,如果快速频繁的点击它,仍然会导致它不断的向后台请求数据,然后请求无响应了,服务器那边没反应了,服务器无法访问了,看后台日志又一切正常,没有任何错误(日志这块不太熟,不确定是真没错误信息,还是信息没有打出来)。
这里我比较困惑:
为什么浏览器端频繁操作会导致服务器端无响应?

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回覆(2)
巴扎黑

問題最終解決了,問題的原因是資料庫存取沒有加事務註解,導致資料庫存取的連線沒有被管理,導致連線池中連線數不斷增加進而超出,然後伺服器就無回應了。正常來說這應該會報錯才對,我最開始選擇的資料庫連線池是org.apache.commons.dbcp.BasicDataSource,不知道為什麼沒有報錯,讓我對問題無法定位;然後透過tomcat日誌中connection reset訊息猜測和資料庫連接數有關;然後我換了一個連接池org.logicalcobwebs.proxool.ProxoolDataSource,這回報錯明顯,當我資料庫訪問超過一定次數,直接報錯告訴我連接數超出了;然後我就發現是連接數字沒有被釋放,然後我就發現是程式碼裡沒有加事務的註解(加了之後應該就是由spring來負責資料庫連線的管理,是嗎?),一個註解,解決了我的問題。 。 。有所收穫

阿神

伺服器無回應分為這樣幾種情況

1:伺服器掛了。這時候伺服器是沒辦法存取的。整個伺服器已經掛掉了。檢測方法最簡單,直接ping一下即可
2:服務掛了。就是你提供回應的服務掛了,系統內部異常,這個服務可能是個進程。檢測也比較簡單,訪問一下其它的服務看是否可用。
3:網路異常,用第一步的偵測方法即可

回到你的問題为什么浏览器端频繁操作会导致服务器端无响应?

這個原因可能有1:該服務被邏輯過於複雜,處理時間過長。導致後面的請求都被阻塞掛起了。 2:內部異常了,導致服務所在的進程掛了,因此後續的請求也無法回應。 PS:你可以透過要求得到的回傳狀態碼來判斷一下可能出錯的位置。

以上

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!