curl: (56) Recv failure: Connection reset by peer问题汇总和解决方案
這兩天正在學(xué)習(xí)用docker制作tomcat鏡像,有一個問題困擾了我3天,可能大家在學(xué)習(xí)時也會遇到,于是我就單獨發(fā)一篇文章來解決這個問題。
解決辦法我在上一篇文章 Docker進(jìn)階篇之DockerFile制作Tomcat鏡像,教你如何發(fā)布鏡像到DockerHub和阿里云 已經(jīng)詳細(xì)說明了,這里再說明一次。
問題描述:
[root@wyc tomcat]# curl localhost:9090 curl: (56) Recv failure: Connection reset by peercurl: (56) Recv failure: Connection reset by peer ,意思是說訪問失敗,連接被重置,會出現(xiàn)這個錯誤的原因有很多種,我們需要查看日志文件來找出原因。
日志1:無法找到j(luò)dk路徑
[root@1c299e7ab95c logs]# cat catalina.out /usr/local/apache-tomcat-10.1.0/bin/catalina.sh: line 466: /usr/local/jdk1.8.0_301/bin/java: No such file or directory /usr/local/apache-tomcat-10.1.0/bin/catalina.sh: line 466: /usr/local/jdk1.8.0_301/bin/java: No such file or directory /usr/local/apache-tomcat-10.1.0/bin/catalina.sh: line 466: /usr/local/jdk1.8.0_301/bin/java: No such file or directory /usr/local/apache-tomcat-10.1.0/bin/catalina.sh: line 466: /usr/local/jdk1.8.0_301/bin/java: No such file or directory日志1解決辦法:
1、如果單純是dockerfile文件的路徑錯誤,只需要修改文件中的路徑即可,大概率是jdk的路徑寫錯了
ENV JAVA_HOME /usr/local/jdk1.8.0_281 ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.60 ENV CATALINA_BASH /usr/local/apache-tomcat-9.0.60 ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin如上寫法是沒問題的。
2、如果是jdk本身有問題,我的問題就是jdk的壓縮包出問題了,下載jdk壓縮包時要注意區(qū)分這個壓縮包是不是真的是壓縮包,可以用 cat jdk-8u281-linux-x64.tar.gz 查看,如果出現(xiàn)前端代碼就代表這是個網(wǎng)址而不是壓縮包,如果出現(xiàn)亂碼,則是壓縮包;或者用 ls -l 查看壓縮包大小,如果很小則不是壓縮包。解決辦法是重新去官網(wǎng)找jdk的壓縮包。
解決了上述問題后繼續(xù)通過curl查看網(wǎng)絡(luò)請求 curl localhost:9090,發(fā)現(xiàn)還是會報 curl: (56) Recv failure: Connection reset by peer ,繼續(xù)查看日志。
日志2:jdk版本不匹配或jdk版本太高
[root@wyc tomcat]# curl localhost:9090 curl: (56) Recv failure: Connection reset by peer [root@wyc tomcat]# docker logs a23b8ffe533a Tomcat started.at java.net.URLClassLoader.defineClass(URLClassLoader.java:468)at java.net.URLClassLoader.access$100(URLClassLoader.java:74)at java.net.URLClassLoader$1.run(URLClassLoader.java:369)at java.net.URLClassLoader$1.run(URLClassLoader.java:363)at java.security.AccessController.doPrivileged(Native Method)at java.net.URLClassLoader.findClass(URLClassLoader.java:362)at java.lang.ClassLoader.loadClass(ClassLoader.java:418)at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355)at java.lang.ClassLoader.loadClass(ClassLoader.java:351)at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:601) Error: A JNI error has occurred, please check your installation and try again Exception in thread "main" java.lang.UnsupportedClassVersionError: org/apache/catalina/startup/Bootstrap has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0at java.lang.ClassLoader.defineClass1(Native Method)at java.lang.ClassLoader.defineClass(ClassLoader.java:756)at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)at java.net.URLClassLoader.defineClass(URLClassLoader.java:468)at java.net.URLClassLoader.access$100(URLClassLoader.java:74)at java.net.URLClassLoader$1.run(URLClassLoader.java:369)at java.net.URLClassLoader$1.run(URLClassLoader.java:363)at java.security.AccessController.doPrivileged(Native Method)at java.net.URLClassLoader.findClass(URLClassLoader.java:362)at java.lang.ClassLoader.loadClass(ClassLoader.java:418)at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355)at java.lang.ClassLoader.loadClass(ClassLoader.java:351)at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:601)日志2解決辦法:
出現(xiàn)這樣的日志,有兩種可能原因:
1、linux的jdk版本和完成的鏡像中的jdk版本不一致。
解決辦法就是讓兩者的jkd版本一致。當(dāng)時我的tomcat鏡像下載的的jdk版本是 jdk1.8.0_301,而linux的jdk版本是自帶的 jdk1.8.0_262,于是我刪除了linux自帶的jdk下載了301版本的jkd。
2、當(dāng)我解決了jdk不一致的問題后,發(fā)現(xiàn)還是會出現(xiàn)上述日志,此時原因是jdk版本太高。
解決辦法是把已有的jdk刪除后下載低版本的jdk(但是別忘了容器的jdk版本和linux的jdk版本要一致)
我剛開始用的是 jdk1.8.0_301 和 apache-tomcat-10.1.0,發(fā)現(xiàn)問題后改成了 jdk1.8.0_281 和 apache-tomcat-9.0.60,實測可以運行。
上述解決辦法是基于防火墻和安全組等都沒有問題的情況,查看日志文件還是很重要的!
自己遇到的坑,跪著也要填完!
總結(jié)
以上是生活随笔為你收集整理的curl: (56) Recv failure: Connection reset by peer问题汇总和解决方案的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机名ip自动配置文件,机房管理中自动
- 下一篇: XP补丁批量安装