排查Linux下C语言句柄打开太多的问题

简介: 排查Linux下C语言句柄打开太多的问题

报错如下:

LOG save error!LogFd =NULL ,errno 24,reason = Too many open files

上面的错误,使用如下打印的:

printf("LOG save error!LogFd =NULL ,errno %d,reason = %s\n", errno, strerror(errno));

可以看到提示说,打开的太多了,没法再打开了。

排查

执行lsof命令可以查看当前的状态:

lsof

我查到如下:

30569   webs      socket:[185909]
30569   webs      socket:[182108]
30569   webs      socket:[185939]
30569   webs      socket:[185960]
30569   webs      socket:[185982]
30569   webs      socket:[186003]
30569   webs      socket:[186023]
30569   webs      socket:[186039]
30569   webs      socket:[186058]
30569   webs      socket:[186068]
30569   webs      socket:[186090]
30569   webs      socket:[186105]
30569   webs      socket:[186123]
30569   webs      socket:[186142]
30569   webs      socket:[186156]
30569   webs      socket:[186175]
30569   webs      socket:[186194]
30569   webs      socket:[186210]
30569   webs      socket:[187576]
30569   webs      socket:[186236]
30569   webs      socket:[186257]
30569   webs      socket:[187654]
30569   webs      socket:[187678]
30569   webs      socket:[186310]
30569   webs      socket:[186328]
30569   webs      socket:[186339]
30569   webs      socket:[186357]
30569   webs      socket:[189446]
30569   webs      socket:[189462]
30569   webs      socket:[189483]
30569   webs      socket:[189496]
30569   webs      socket:[189513]
30569   webs      socket:[189522]
30569   webs      socket:[189541]
30569   webs      socket:[189560]
30569   webs      socket:[189575]
30569   webs      socket:[190498]
30569   webs      socket:[189600]
30569   webs      socket:[189609]
30569   webs      socket:[189624]
30569   webs      socket:[189641]
30569   webs      socket:[189658]
30569   webs      socket:[189678]
30569   webs      socket:[188315]
30569   webs      socket:[189713]
30569   webs      socket:[190576]
30569   webs      socket:[190604]
30569   webs      socket:[189787]
30569   webs      socket:[190665]
30569   webs      socket:[189832]
30569   webs      socket:[189846]
30569   webs      socket:[189853]
30569   webs      socket:[189873]
30569   webs      socket:[189884]
30569   webs      socket:[189907]
30569   webs      socket:[189921]
30569   webs      socket:[192766]
30569   webs      socket:[189953]
30569   webs      socket:[192803]
30569   webs      socket:[189986]
30569   webs      socket:[190005]
30569   webs      socket:[190021]
30569   webs      socket:[192912]
30569   webs      socket:[190053]
30569   webs      socket:[190072]
30569   webs      socket:[190088]
30569   webs      socket:[193029]
30569   webs      socket:[190121]
30569   webs      socket:[190134]
30569   webs      socket:[193102]
30569   webs      socket:[190162]
30569   webs      socket:[190179]
30569   webs      socket:[190196]
30569   webs      socket:[190213]
30569   webs      socket:[190229]
30569   webs      socket:[190250]
30569   webs      socket:[190271]
30569   webs      socket:[190858]
30569   webs      socket:[190310]
30569   webs      socket:[190329]
30569   webs      socket:[190336]
30569   webs      socket:[190966]
30569   webs      socket:[190365]
30569   webs      socket:[190384]
30569   webs      socket:[190401]
30569   webs      socket:[190420]
30569   webs      socket:[190441]
30569   webs      socket:[190458]
30569   webs      socket:[195597]
30569   webs      socket:[195615]

一直在增加,过几秒增加一次。

经过排查,是socket的问题。

因为每隔几秒,就会使用socket函数获取一下ip造成的。

使用的是close函数关闭的。

又检查了下,是因为close函数没有彻底关闭掉socket导致的一直增加句柄的操作。

目录
相关文章
|
2月前
|
Shell Linux API
C语言在linux环境下执行终端命令
本文介绍了在Linux环境下使用C语言执行终端命令的方法。首先,文章描述了`system()`函数,其可以直接执行shell命令并返回结果。接着介绍了更强大的`popen()`函数,它允许程序与命令行命令交互,并详细说明了如何使用此函数及其配套的`pclose()`函数。此外,还讲解了`fork()`和`exec`系列函数,前者创建新进程,后者替换当前进程执行文件。最后,对比了`system()`与`exec`系列函数的区别,并针对不同场景推荐了合适的函数选择。
|
3月前
|
安全 Linux 文件存储
在Linux中,服务器开不了机怎么解决⼀步步的排查?
在Linux中,服务器开不了机怎么解决⼀步步的排查?
|
3月前
|
运维 监控 网络协议
在Linux中,如何进行网络故障排查?
在Linux中,如何进行网络故障排查?
|
3月前
|
运维 监控 Linux
Linux系统读写硬盘慢,如何排查?四步教你定位问题!
【8月更文挑战第24天】在Linux系统运维中,硬盘读写速度慢是一个常见且影响重大的问题。它不仅会导致服务器性能下降,还会影响用户体验。本文将详细介绍四个步骤,帮助你快速定位并解决Linux系统硬盘读写慢的问题。
574 0
|
3月前
|
安全 Linux Shell
在Linux中,如何修改系统打开最大句柄数?
在Linux中,如何修改系统打开最大句柄数?
|
3月前
|
监控 NoSQL 算法
在Linux中,如何排查死锁问题?
在Linux中,如何排查死锁问题?
|
3月前
|
缓存 监控 安全
在Linux中,如何排查系统崩溃问题?
在Linux中,如何排查系统崩溃问题?
|
3月前
|
监控 Kubernetes Linux
在Linux中,如何排查性能下降问题?
在Linux中,如何排查性能下降问题?
|
3月前
|
运维 Linux
在Linux中,如何排查硬件故障?
在Linux中,如何排查硬件故障?
|
3月前
|
监控 网络协议 Linux
在Linux中,如何排查网络连接问题?
在Linux中,如何排查网络连接问题?