免費(fèi)h5旅游網(wǎng)站模板網(wǎng)紅推廣
目錄
- 前言
- 報(bào)錯(cuò)信息
- 排查
- 1、確認(rèn)redis密碼設(shè)置是否有效
- 2、確認(rèn)程序配置文件,是否配置了正確的redis登錄密碼
- 3、檢測(cè)是否是redis持久化的問(wèn)題
- 4、確認(rèn)程序讀取到的redis密碼沒(méi)有亂碼
- 原因
- 解決
前言
一個(gè)已經(jīng)上線的項(xiàng)目,生產(chǎn)環(huán)境的redis居然沒(méi)有設(shè)置密碼,后來(lái)因?yàn)槁┒磼呙璧臅r(shí)候發(fā)現(xiàn)了該問(wèn)題,需要給redis加上密碼,在密碼加上之后,原本可以正常運(yùn)行的程序在連接redis的時(shí)候出現(xiàn)報(bào)錯(cuò)
報(bào)錯(cuò)信息
redis.clients.jedis.exceptions.JedisException: Could not get a resource from the poolat redis.clients.util.Pool.getResource(Pool.java:51)at redis.clients.jedis.JedisPool.getResource(JedisPool.java:226)at com.xxx.util.JedisUtils.getJedis(JedisUtils.java:85)at com.xxx.itr.thread.JedisConsumeThread.run(JedisConsumeThread.java:76)
Caused by: java.util.NoSuchElementException: Unable to validate objectat org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:506)at org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:363)at redis.clients.util.Pool.getResource(Pool.java:49)... 3 more
排查
1、確認(rèn)redis密碼設(shè)置是否有效
在服務(wù)器連接redis,并使用auth命令輸入登錄密碼,成功登錄
2、確認(rèn)程序配置文件,是否配置了正確的redis登錄密碼
redis密碼與實(shí)際設(shè)置的密碼一致
3、檢測(cè)是否是redis持久化的問(wèn)題
在服務(wù)器連接redis,執(zhí)行ping命令,結(jié)果為:pong,排查持久化的問(wèn)題
4、確認(rèn)程序讀取到的redis密碼沒(méi)有亂碼
在程序上添加日志打印,將讀取到的redis密碼打印到日志文件
新加的日志并沒(méi)有出現(xiàn)在日志文件!!!
再次確認(rèn),已將添加過(guò)日志打印的class文件更新到了tomcat/webapps目錄下所對(duì)應(yīng)的程序上,但日志還是沒(méi)有成功打印出來(lái)!!!
出現(xiàn)以上情況,說(shuō)明當(dāng)前tomcat運(yùn)行的并不是tomcat/webapps下的代碼
檢查tomcat配置,發(fā)現(xiàn)以下配置
原因
因配置原因,導(dǎo)致tomcat實(shí)際的運(yùn)行代碼并不在當(dāng)前tomcat的webapps目錄下,而且指向了其他的tomcat
因?yàn)閞edis設(shè)置了密碼,而在當(dāng)前tomcat程序的配置文件調(diào)整redis的密碼實(shí)際上是沒(méi)有成功讀取到的
redis連接時(shí)需要密碼,但程序啟動(dòng)時(shí)卻沒(méi)有帶上密碼,導(dǎo)致報(bào)錯(cuò)
解決
調(diào)整tomcat的配置文件,指向正確的目錄(或者把指向程序代碼的那項(xiàng)配置去掉,一般情況是不需要對(duì)程序代碼的讀取目錄進(jìn)行配置的)