版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/tongwensenyouxiang/article/details/87917634
上图所示:来至服务器的错误信息,Too many open files 直译过来就是打开的文件太多,也就是说这个错误主要是服务器打开的文件太多,再详细看下错误日志中提供的其他信息关键词 其中我们一眼就能看到有:
JedisConnectionException: Could not get a resource from the pool] with root cause、
Socket、
BinaryJedis、
JedisPool、
JedisConnectionFactory
由此就可以判断主要错误造成原因来至jedis。
整理下我们的语言:jedis导致文件打开文件太多。
服务器信息:ulimit -a
我服务器打开文件数:65535
由于不知道怎么查看最多文件数的那个进程,只好查下项目的所有进程了
查看java进程:ps aux|grep java
进程id打开文件数:lsof -p 32446
服务器中该进程打开文件数。。。。很多 多到滚屏都展示不全
不用再想了就是这个服务了
找到这个服务中代码的jedis吧我想他用的是JedisConnectionFactory,搜索之。
就是这样这个接口的请求还挺高,有三个接口这样操作,然后代码嘛jedis的就这些,就这些,没了。。。。。
然后:划重点
直接连接redis的方式,即每次连接都创建新的连接,不关闭,就一直加啊加+++++
来至:一个已经离职的同事
线上不能用了呀,改吧。
destroy啥玩意?
我们看下最权威的文档:
英语文档看不懂?百度翻译走一走?
懂了没?就是他不关闭你怎么办呀?销他丫的。。。
注:只是有时间写东西看东西,记一次生产事故,赶个时髦弄个博客,搞了七八年的开发的老菜鸟,大家可以指导哈,但是不行喷我,喷我?,生死看淡,不服就干