日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

curl: (56) Recv failure: Connection reset by peer问题汇总和解决方案

發布時間:2023/12/29 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 curl: (56) Recv failure: Connection reset by peer问题汇总和解决方案 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這兩天正在學習用docker制作tomcat鏡像,有一個問題困擾了我3天,可能大家在學習時也會遇到,于是我就單獨發一篇文章來解決這個問題。
解決辦法我在上一篇文章 Docker進階篇之DockerFile制作Tomcat鏡像,教你如何發布鏡像到DockerHub和阿里云 已經詳細說明了,這里再說明一次。

問題描述:

[root@wyc tomcat]# curl localhost:9090 curl: (56) Recv failure: Connection reset by peer

curl: (56) Recv failure: Connection reset by peer ,意思是說訪問失敗,連接被重置,會出現這個錯誤的原因有很多種,我們需要查看日志文件來找出原因。

日志1:無法找到jdk路徑

[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壓縮包時要注意區分這個壓縮包是不是真的是壓縮包,可以用 cat jdk-8u281-linux-x64.tar.gz 查看,如果出現前端代碼就代表這是個網址而不是壓縮包,如果出現亂碼,則是壓縮包;或者用 ls -l 查看壓縮包大小,如果很小則不是壓縮包。解決辦法是重新去官網找jdk的壓縮包。

解決了上述問題后繼續通過curl查看網絡請求 curl localhost:9090,發現還是會報 curl: (56) Recv failure: Connection reset by peer ,繼續查看日志。

日志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解決辦法:

出現這樣的日志,有兩種可能原因:

1、linux的jdk版本和完成的鏡像中的jdk版本不一致。
解決辦法就是讓兩者的jkd版本一致。當時我的tomcat鏡像下載的的jdk版本是 jdk1.8.0_301,而linux的jdk版本是自帶的 jdk1.8.0_262,于是我刪除了linux自帶的jdk下載了301版本的jkd。

2、當我解決了jdk不一致的問題后,發現還是會出現上述日志,此時原因是jdk版本太高。
解決辦法是把已有的jdk刪除后下載低版本的jdk(但是別忘了容器的jdk版本和linux的jdk版本要一致)
我剛開始用的是 jdk1.8.0_301 和 apache-tomcat-10.1.0,發現問題后改成了 jdk1.8.0_281 和 apache-tomcat-9.0.60,實測可以運行。

上述解決辦法是基于防火墻和安全組等都沒有問題的情況,查看日志文件還是很重要的!
自己遇到的坑,跪著也要填完!

總結

以上是生活随笔為你收集整理的curl: (56) Recv failure: Connection reset by peer问题汇总和解决方案的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。