我运营一家 SaaS 监控服务公司。我们的标准集成示例是向我们提供的特殊 URL 发出 curl 请求。我们遇到了一个间歇性问题,即用户遇到 10 秒的 curl 超时(-m 10 param)。但是,我在服务器日志中看到,当时处理的请求仅花费了 100-300 毫秒,这对我们来说是正常的。
我们确实看到每分钟的流量高峰,但即便如此,我们也很少花费超过 1000 毫秒的时间。
我们有一位用户似乎特别容易出现超时问题。我要求他在主机文件中设置我们的 IP,以确保这不是 DNS 问题。(尽管我非常有信心这不是 DNS 问题)。
我很乐意听取任何有关可以请这位用户帮我排除故障的微创方法的想法。在我们放弃亚马逊 ELB 之前,超时更为常见(尽管仍然非常罕见),我能够重现几次,我看到非常奇怪的“0ms 超时”错误,好像连接以某种方式立即被拒绝,尽管超时了 10 秒。
我们的 iptables 配置中没有什么特别的,只是阻止端口和坏 IP。Web 服务器堆栈是 nginx-uwsgi
答案1
我们遇到的问题原来是我们的 uwsgi 请求队列已满。为了解决这个问题,我们必须调整 uwsgi 设置和内核设置:https://stackoverflow.com/questions/8516516/stuck-at-100-requests-uwsgi