记一次too many open files的错误解决方法
在linux中跑java代码的过程中,发现日志报too many openfiles 的错误。
查了两天都没发现问题,感觉自己把该关闭的资源都关闭了。后来在网上查找解决方法,用:
lsof -n|awk ‘{print $2}’ |sort|uniq -c|sort -nr|more
lsof | grep pid
的命令,找到了问题所在。
解决办法是java代码里用okhttp3的addHeader,加上.addHeader(“Connection”,“close”)。之前没有加上这个,okhttp3默认的tcp连接方式是keep-alive,所以tcp会一直保持连接,就会报“too many open files”的错误。