有一个按钮用来向后台请求数据,我已经限制了这个按钮,从发起请求到请求数据接收完之间按钮是不可点击的,但是我后台数据返回是很快的,如果快速频繁的点击它,仍然会导致它不断的向后台请求数据,然后请求无响应了,服务器那边没反应了,服务器无法访问了,看后台日志又一切正常,没有任何错误(日志这块不太熟,不确定是真没错误信息,还是信息没有打出来)。
这里我比较困惑:
为什么浏览器端频繁操作会导致服务器端无响应?
巴扎黑2017-04-17 14:37:57
問題の原因は、データベース アクセスでトランザクション アノテーションが追加されず、その結果、データベース アクセス接続が管理されず、接続プール内の接続数が増加し続けたことでした。 、その後サーバーが応答しなくなりました。通常、これはエラーを報告するはずですが、最初に選択したデータベース接続プールは org.apache.commons.dbcp.BasicDataSource でした。そのため、接続を通じて問題を特定できなかった理由がわかりません。 Tomcat ログ内リセット情報はデータベース接続の数に関連していると思われます。その後、接続プール org.logicalcobwebs.proxool.ProxoolDataSource を変更しました。データベース アクセスが一定の回数を超えると、エラーが報告されました。接続数が超過したことを直接伝えた後、接続数が解放されていないことがわかり、コードにトランザクションアノテーションがないことがわかりました(トランザクションアノテーションを追加した後は、Springがデータベース接続の管理を担当する必要があります)。注釈が私の問題を解決しました。 。 。何かを得ました
阿神2017-04-17 14:37:57
サーバーの応答失敗は次の状況に分類できます
1: サーバーがダウンしています。現時点ではサーバーにアクセスできません。サーバー全体がダウンしてしまいました。検出方法は最も簡単で、 ping
をクリックするだけです
2: サービスがダウンしています。これは、応答を提供したサービスが停止しており、システム内に内部例外が存在することを意味します。このサービスはプロセスである可能性があります。検出も比較的簡単で、他のサービスにアクセスして利用可能かどうかを確認するだけです。
3: ネットワーク異常、検出の最初のステップのみを使用
質問に戻る为什么浏览器端频繁操作会导致服务器端无响应?
これは 1: サービスのロジックが複雑すぎて、処理時間が長すぎることが考えられます。その結果、後続のリクエストはブロックされ、一時停止されます。 2: 内部例外により、サービスが存在するプロセスがハングアップしたため、後続のリクエストに応答できなくなりました。 PS: エラーの可能性がある箇所は、リクエストによって取得されるリターンステータスコードによって判断できます。
上