有一个VPS服务器(ubuntu)和一个带有白色地址的网络摄像机。服务器每 10 分钟向摄像机发出请求以检查新视频。一次检查包括 6 个请求(检查 ip 可用性、获取令牌、设置参数、接收数据、停止令牌、删除令牌)。卷曲请求如下所示:
curl_setopt_array($ch, [CURLOPT_USERPWD => 'admin:admin',
CURLOPT_CONNECTTIMEOUT => 10,
CURLOPT_TIMEOUT => 500,
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_HTTPAUTH=>CURLAUTH_ANY
]);
今天,由于某种未知原因,我开始收到错误“连接在 10001 毫秒后超时”。错误发生在 6 个步骤中的任何一个。为了进行实验,我运行了一个包含 100 个此类查询的循环。其中四十九个有错误。
我把CONNECTTIMEOUT增加到30,但是没有效果。我收到错误“连接在 30001 毫秒后超时”。
linux 标签是因为我假设问题出在服务器端,因为如果我从家用 PC 执行相同的请求,则每 100 个请求有 0 个错误。相机与 PC 不在同一本地网络中。但是,如果我从我的服务器 IP 在我的家庭 PC 上打开 VPN,则会出现相同的错误。所以很明显服务器有问题。
Rostelecom(相机提供商)表示这不是他们的错,而是我的问题。
这是 tcpdump 返回的内容https://pastebin.com/QGsEJDLw我在枪口上运行了 10 次卷曲查询。其中,2 个出现错误(处理时间超过 10 秒)
你能告诉我如何找出长连接的原因吗?