最近在项目中用goroutine下载文件到本地,由于下载使用第三方的库,而且下载之后没有释放文件句柄,只能等待协程执行完毕之后才能释放文件句柄,由于文件数量过多,导致下载过程中,log里出现panic :too many open file。意思是进程中打开了过多的文件句柄。超过了linux的配置上限。
所以查看了下,系统中的open files配置
看了下最大是65535,不太确定是否我的进程超过了这个配置,所以又执行一遍,然后根据进程号查看了一下
首先找到服务的PID,然后用这个命令查看一下 lsof -p PID |wc -l
结果这个数在执行过程中确实达到了65535这个阀值,所以修改了下这个配置
ulimit -n 655350,临时修改一下,问题解决