如何调试公司范围内的 Web 应用程序连接问题?

问题描述 投票:0回答:1

我们有一个网络应用程序,公司中的许多人都需要访问。有时,网络应用程序似乎停止响应请求。

例如,如果资源索引页面(例如订单表视图)尝试刷新资源列表,它将通过 API 请求数据并显示加载指示器,但一段时间后请求最终会默默失败。这种情况同时发生在多人身上,但在此中断/缓慢期间从另一个网络(例如移动数据)访问该应用程序似乎可行。其他网站在此期间似乎也没有受到影响。

浏览器网络选项卡显示请求在 20-40 秒后失败,但没有状态代码。选择请求时的状态文本为

failed net::ERR_CONNECTION_TIMED_OUT
。似乎当您在处理请求时未单击该请求并稍后打开详细信息时,计时选项卡会显示它卡在“Stalled”阶段。但是,如果您在处理请求详细信息时打开请求详细信息,它会说它卡在“初始连接”阶段。这使得请求详细信息的计时选项卡看起来不可靠,因为它显示的内容似乎取决于我在处理请求时是否正在检查请求。 服务器在此期间似乎没有显示出严重过载 - 最大 30% CPU/内存使用率。 该服务器在 Digital Ocean Droplet 上运行,并使用 nginx 托管 Laravel 应用程序。 应用程序本身确实启用了限制,但它绑定到用户 ID,返回“尝试次数过多”错误消息和定义的状态代码,因此如果这是限制的情况,则不应在应用程序级别进行限制。 我可以做什么来调试/调查问题的根源?据我了解,问题可能出在从 nginx 配置到 ISP 提供商限制的任何地方。我认为目前这是某种限制,但我可能错过了什么吗?

可能是 Laravel 中默认为所有 api 路由配置的 RateLimiter。

看看

laravel nginx connection digital-ocean
1个回答
0
投票

/** * Configure the rate limiters for the application. */ protected function configureRateLimiting(): void { RateLimiter::for('api', function (Request $request) { return Limit::perMinute(60)->by($request->user()?->id ?: $request->ip()); }); }

干杯

© www.soinside.com 2019 - 2024. All rights reserved.