首頁  >  問答  >  主體

java - 频繁请求后台导致服务器无响应一般是什么原因呢

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

高洛峰高洛峰2713 天前1642

全部回覆(2)我來回復

  • 巴扎黑

    巴扎黑2017-04-17 14:37:57

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

    回覆
    0
  • 阿神

    阿神2017-04-17 14:37:57

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

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

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

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

    以上

    回覆
    0
  • 取消回覆