libcurl使用注意

编程入门 行业动态 更新时间:2024-10-06 08:36:50

<a href=https://www.elefans.com/category/jswz/34/1746927.html style=libcurl使用注意"/>

libcurl使用注意

libcurl使用注意:

注意点1:
现象:http短连接超过一定次数后一直返回错误7,即CURLE_COULDNT_CONNECT
过程有打印:Immediate connect fail for 114.116.228.34: Too many open files
使用netstat查看发现有大量的TCP连接保持在CLOSE_WAIT状态:

原因:也就是说,默认情况下libcurl完成一个任务以后,出于重用连接的考虑不会马上关闭
如果没有新的TCP请求来重用这个连接,那么只能等到CLOSE_WAIT超时,这个时间默认在7200秒甚至更高,
太多的CLOSE_WAIT连接会导致性能问题,超过系统限定的文件或socket打开数量限制,出现Too many open files

解决方法:curl_easy_setopt(curl, CURLOPT_FORBID_REUSE, 1);
最好再修改一下TCP参数调低CLOSE_WAIT和TIME_WAIT的超时时间

注意点2:
现象:多线程调用libcurl出现错误

原因:libcurl是多线程安全的,除了这个初始化 curl_global_init(CURL_GLOBAL_ALL); curl_global_cleanup();

解决方法:要在主线程或者程序开始的地方调用curl_global_init(CURL_GLOBAL_ALL);进行初始化,结束前调用curl_global_cleanup();
程序调用libcurl中的任何其他函数之前,必须在程序中至少调用此函数一次(程序是共享内存空间的所有代码)。
它设置的环境对于程序的生命周期是恒定的,并且对于每个程序都是相同的,因此多个调用与一个调用具有相同的效果。
如果没有主动调用此函数,在掉curl_easy_init()时会检测有没调用过curl_global_init,没有则会进行调用

更多推荐

libcurl使用注意

本文发布于:2024-03-08 23:01:45,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1722744.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:libcurl

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!