admin管理员组文章数量:1642241
在使用socket时,发现在压力测试一阵子后,在accept函数中会报Too many open files errno :24错误
if ((connfd = accept(listenfd, NULL, NULL)) == -1) {
printf("accpet socket error: %s errno :%d", strerror(errno), errno);
continue;
}
通过压力测试此程序,发现此进程很快就达到了最大进程的上限fd限制1024
lsof -n|awk '{print $2}'|sort|uniq -c |sort -nr|more
1023 /usr/sbin/initdaemon
45 /bin/busybox
查看code时发现确实是connfd没有及时关闭导致,添加close就可以解决此问题。
close(connfd);
通过指令查看进程的fd,发现一直稳定在118数量,应该是没有问题了。
# lsof -p 6137 |wc -l
lsof -p 6137 |wc -l
118
# lsof -p 6137 |wc -l
lsof -p 6137 |wc -l
118
# lsof -p 6137 |wc -l
lsof -p 6137 |wc -l
118
# lsof -p 6137 |wc -l
lsof -p 6137 |wc -l
118
# lsof -p 6137 |wc -l
lsof -p 6137 |wc -l
118
版权声明:本文标题:操作socket报Too many open files errno :24错误解决方法 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/xitong/1729333702a1196713.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论