程序異常:Connection reset by peer

一、前言

最近項目上線遇到一個bug,說一下背景,項目分爲開發、測試、預生產和生產,要連接的oracle數據庫地址也就不同了,jar包運行的環境也不同,開發和測試環境都是在本地進行的,所以連接的數據庫也沒問題。但是程序移植到預生產和生產環境的時候就出現問題了,就是在程序啓動的時候連接oracle的時候,預生產環境會在第一次連接失敗,然後等到有請求進來的時候,重新去創建連接就可以連接成功。生產環境權限比較高,所以不能直接將程序跑起來測試生產環境是否可以連接生產oracle數據庫,只能是寫一個簡單的demo去測試連接,其他的什麼都不能幹。生產環境測試連接生產oracle數據庫,一直報異常Connection reset by peer,一開始以爲是權限問題,後來弄來了有權限的用戶名和密碼,demo依然報上面的異常。還有一點是生產環境是Linux系統,這和這個問題起因有關。

二、解決辦法(先上解決辦法)

修改程序運行系統中安裝的jdk文件,找到你安裝jdk的安裝目錄,自己安哪就找哪,然後修改 JAVA_HOME/jre/lib/security/java.security 文件,JAVA_HOME代表你的***JDK***安裝目錄,看好是***JDK***。
打開後(如果打不開,下載個notepad++)找到文件中的 dev/random 修改爲 dev/urandom 這個文件挺長的,就不貼了。
修改完成後上傳demo就能夠正常訪問數據庫了。

三、其他情況

像數據庫斷斷續續連不上,或者達成war包放到tomcat裏面,執行 startup.sh老是卡住了等情況。這個問題貌似也可以修改oracle的配置,但是生產的數據庫已經運行了好幾年了,是沒有權利去修改的。。。
四、 其他博客和java.security.SecureRandom源碼分析鏈接
1)tomcat的https://www.cnblogs.com/greys/p/10722950.html
2)外文的 https://answers.splunk.com/answers/710452/db-connect-javasqlsqlrecoverableexception-io-error.html
3)阿里雲棲的:https://yq.aliyun.com/articles/714374
4)源碼分析:https://blog.51cto.com/leo01/1795447

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章