1. 自從點(diǎn)擊追蹤系統(tǒng)是用redis連接池后,幾乎沒(méi)有出過(guò)什么問(wèn)題了——即使在點(diǎn)擊量增長(zhǎng)到兩千萬(wàn)每天的時(shí)候。
2. 然而奇怪的是,UI的后臺(tái)和渠道的后臺(tái),最早就在用連接池,并且并發(fā)量很低,卻動(dòng)不動(dòng)就redis連接報(bào)錯(cuò),返回null對(duì)象。
之前實(shí)在是沒(méi)想過(guò)代碼是不是有問(wèn)題。一直通過(guò)腳本重啟項(xiàng)目。
3. 然后就有人抱怨你們這個(gè)系統(tǒng)有問(wèn)題,要把redis改了!
4. 我簡(jiǎn)單和UI后臺(tái)那邊說(shuō)了兩句,點(diǎn)擊追蹤系統(tǒng)如此大的量都從未報(bào)錯(cuò),UI使用頻率夠低了,為何頻繁報(bào)錯(cuò)?你是不是有代碼沒(méi)有關(guān)閉連接池???
5. 人家檢查了下項(xiàng)目后指出來(lái)有一個(gè)地方當(dāng)時(shí)是沒(méi)有關(guān)閉的。修改完線上版本后,我感覺(jué)必須確認(rèn)是否還有別的地方了。
6. 于是想起了 grep 遞歸目錄查找文件內(nèi)容了。于是有了下面的方式:
[root@mc-arch-nginx-172-17-0-3@/home/arch/n_backend-v1/n_mc_project@12:39:36]
2009 $ grep -r "MCRedisInstance.getInstance" * > closejedis.txt
[root@mc-arch-nginx-172-17-0-3@/home/arch/n_backend-v1/n_mc_project@12:40:25]
2010 $ vi closejedis.txt
[root@mc-arch-nginx-172-17-0-3@/home/arch/n_backend-v1/n_mc_project@12:40:34]
2011 $ grep -r "jedis.close()" * > closejedis_close.txt
[root@mc-arch-nginx-172-17-0-3@/home/arch/n_backend-v1/n_mc_project@12:40:56]
2012 $ vimdiff closejedis.txt closejedis_close.txt
7. 同樣,在/home/arch/mc_project_v7執(zhí)行上述命令,
一目了然看到只有 closejedis.txt 里有下面的代碼,卻沒(méi)有關(guān)閉連接池。

8. 最后發(fā)現(xiàn)兩個(gè)項(xiàng)目里都是與報(bào)表相關(guān)的部分沒(méi)有關(guān)閉連接池。報(bào)表又是使用頻率最高的部分,難怪項(xiàng)目一直不穩(wěn)定了!
9. 趕緊使用最新版項(xiàng)目修改問(wèn)題,趕緊上線吧!