workerman频繁调用curl 导致curl超时

0

在workerman里面调用curl。长时间运行(大概十几天)curl变慢。超时、但是目标服务器访问正常。响应都是毫秒级的。重启workerman后正常。请问下是什么原因导致的。如何解决呢

已邀请:

blogdaren - 常年游走于 Linux、PHP、C、VIM 之间【http://www.phpcreeper.com】

赞同来自:

关于curl发起的http请求超时有两个要注意:
1、连接超时
2、数据超时
这两个超时都要设置合理的超时时间,否则可能会由于外部接口不稳定造成长时间阻塞并较长时间占用资源描述符,最终导致占用大量系统资源而无法得到及时释放,所以这会经常引起运行速度缓慢或者不可预知的错误。


所以从这个地方试着排查下,另外当缓慢的时候,不要重启workerman,运行: php start.php status 看看状态报告,一般也会有很多有价值的参考数据。

朕震惊了

赞同来自:

搞个简单的脚本,试下是不是curl的问题。


<?php
while(1) {
$time_start = microtime(true);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);

file_put_contents('/tmp/curl.log', (microtime(true)-$time_start)."\n", FILE_APPEND);
sleep(1);
}

要回复问题请先登录注册