我们java.net.SocketException: Connection reset在日志中看到频繁但间歇性的 错误.我们不确定Connection reset错误实际来自何处,以及如何进行调试.
该问题似乎与我们尝试发送的邮件无关.请注意,消息不是 connection reset by peer.
有关此异常的典型原因可能是什么的建议,以及我们如何进行?
这是一个代表性的堆栈跟踪(com.companyname.mtix.sms是我们的组件):
java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:168)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
at java.io.BufferedInputStream.read(BufferedInputStream.java:235)
at org.apache.commons.httpclient.HttpParser.readRawLine(HttpParser.java:77)
at org.apache.commons.httpclient.HttpParser.readLine(HttpParser.java:105)
at org.apache.commons.httpclient.HttpConnection.readLine(HttpConnection.java:1115)
at org.apache.commons.httpclient.HttpMethodBase.readStatusLine(HttpMethodBase.java:1832)
at org.apache.commons.httpclient.HttpMethodBase.readResponse(HttpMethodBase.java:1590)
at org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:995)
at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:397)
at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:170)
at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:396)
at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:324)
at com.companyname.mtix.sms.services.impl.message.SendTextMessage.sendTextMessage(SendTextMessage.java:127)
at com.companyname.mtix.sms.services.MessageServiceImpl.sendTextMessage(MessageServiceImpl.java:125)
at com.companyname.mtix.sms.services.remote.MessageServiceRemoteImpl.sendTextMessage(MessageServiceRemoteImpl.java:43)
at sun.reflect.GeneratedMethodAccessor203.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.apache.axis.providers.java.RPCProvider.invokeMethod(RPCProvider.java:397)
at org.apache.axis.providers.java.RPCProvider.processMessage(RPCProvider.java:186)
at org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java:323)
at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
at org.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java:453)
at org.apache.axis.server.AxisServer.invoke(AxisServer.java:281)
at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:699) … 我有Vagrant/VirtualBox运行Ubuntu 12.04 LTS OS.我已将Vagrant配置为将来宾端口8000转发到我的主机端口8888.
[default] Preparing network interfaces based on configuration...
[default] Forwarding ports...
[default] -- 22 => 2222 (adapter 1)
[default] -- 8000 => 8888 (adapter 1)
[default] Booting VM...
[default] Waiting for VM to boot. This can take a few minutes.
[default] VM booted and ready for use!
Run Code Online (Sandbox Code Playgroud)
当虚拟机启动时,我在端口8000上启动Django dev服务器.
Development server is running at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
Run Code Online (Sandbox Code Playgroud)
好的,我可以把它放在后台,我甚curl localhost:8000至可以从服务器获得一些输出
<div id="explanation">
<p>
You're seeing this message because you have <code>DEBUG = True</code> …Run Code Online (Sandbox Code Playgroud) 昨天晚上,我离开了办公室,运行了一个由我编写的Java程序.它应该使用JDBC连接将大量记录插入到我们的公司数据库(Oracle)中.今天早上当我回来工作时,我看到了这个错误(由try-catch捕获):
java.sql.SQLRecoverableException: I/O Exception: Connection reset
Run Code Online (Sandbox Code Playgroud)
在得到这个问题之前,该程序几乎写了所有记录,但如果它发生得很早(我晚上离开办公室几分钟后)怎么办?我无法理解发生了什么,我联系了我的数据库管理员,他说数据库没有特别的问题.
关于发生了什么以及我可以做些什么来避免它的任何想法?
从数据库列中检索文件对象时,我经常收到以下错误.我该如何解决这个问题?
May 8, 2009 3:18:14 PM org.apache.catalina.core.StandardHostValve status
WARNING: Exception Processing ErrorPage[errorCode=404, location=/error.jsp]
ClientAbortException: java.net.SocketException: Connection reset by peer: socket write error
at org.apache.catalina.connector.OutputBuffer.doFlush(OutputBuffer.java:327)
at org.apache.catalina.connector.OutputBuffer.flush(OutputBuffer.java:293)
at org.apache.catalina.connector.Response.flushBuffer(Response.java:537)
at org.apache.catalina.core.StandardHostValve.status(StandardHostValve.java:286)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:136)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Unknown Source)
Caused by: java.net.SocketException: Connection reset by peer: socket write error
at java.net.SocketOutputStream.socketWrite0(Native Method)
at java.net.SocketOutputStream.socketWrite(Unknown Source)
at java.net.SocketOutputStream.write(Unknown Source)
at org.apache.coyote.http11.InternalOutputBuffer.realWriteBytes(InternalOutputBuffer.java:746)
at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:433)
at org.apache.coyote.http11.InternalOutputBuffer.flush(InternalOutputBuffer.java:304)
at org.apache.coyote.http11.Http11Processor.action(Http11Processor.java:991)
at org.apache.coyote.Response.action(Response.java:182) …Run Code Online (Sandbox Code Playgroud) 以下函数打破了我在$ pattern变量中提供的正则表达式.如果我改变正则表达式我很好,所以我认为这是问题所在.但是,我没有看到这个问题,即使它们已经打开,我也没有收到标准的PHP错误.
function parseAPIResults($results){
//Takes results from getAPIResults, returns array.
$pattern = '/\[(.|\n)+\]/';
$resultsArray = preg_match($pattern, $results, $matches);
}
Run Code Online (Sandbox Code Playgroud)
Firefox 6:连接已重置
Chrome 14:错误101(net :: ERR_CONNECTION_RESET):连接已重置.
IE 8:Internet Explorer无法显示网页
更新:
Apache/PHP可能崩溃.这是我运行脚本时的Apache错误日志:
[2011年10月1日星期六11:41:40] [通知]父:子进程退出状态255 - 重新启动.
[2011年10月1日星期六11:41:40] [通知]配置Apache/2.2.11(Win32)PHP/5.3.0 - 恢复正常运行
在Windows 7上运行WAMP 2.0.
尝试连接 LDAP 时出现套接字异常。这是我的示例代码。我在 java 8 中看到了这个问题。我从未在早期的 java 版本中观察到这个问题。
public static DirContext getDirectoryContext() throws NamingException {
Properties env = new Properties();
env.put(Context.INITIAL_CONTEXT_FACTORY,
Common.getProperty("ldap.context.factory"));
env.put(Context.PROVIDER_URL,
Common.getProperty("ldap.provider.url"));
env.put(Context.SECURITY_AUTHENTICATION,
Common.getProperty("ldap.security.authentication"));
env.put(Context.SECURITY_PRINCIPAL,
Common.getProperty("ldap.security.principal"));
env.put(Context.SECURITY_CREDENTIALS,
Common.getProperty("ldap.security.credential"));
context = new InitialDirContext(env);
log.debug("NamingContext Initialized");
return context;
}
context = getDirectoryContext();
Run Code Online (Sandbox Code Playgroud)
我对所有 LDAP 调用使用相同的上下文。
private NamingEnumeration getResultsFromLdap(String searchFilter) {
NamingEnumeration results = null;
try {
// Getting the list from LDAP matching the given filter
SearchControls sControls = new SearchControls();
sControls.setSearchScope(SearchControls.SUBTREE_SCOPE);
String baseContext = Common.getProperty("ldap.base.context");
results = context.search(baseContext, searchFilter, …Run Code Online (Sandbox Code Playgroud) 我们最近从Coldfusion 9升级到CF10,我现在收到一个零星的错误,我正在使用cfcontent来提供文档(pdf,doc等)我正在使用cfcontent来控制对文件的访问,如有些仅供内部使用.使用CF9(两者都是标准版)时没有发生这种情况,我认为这可能与Tomcat的更改有关.
我无法重新创建错误,但它每天发生200次左右:
coldfusion.tagext.OutputException:此输出异常的原因是:ClientAbortException:java.net.SocketException:通过对等方重置连接:套接字写入错误
尝试按照Microsoft Azure的"事件中心入门"示例(http://azure.microsoft.com/en-us/documentation/articles/service-bus-event-hubs-csharp-ephcs-getstarted/#介绍),当我尝试运行或者接收或发送程序规定在那里,我得到以下异常:"现有的连接被强行关闭远程主机."
由于这是在尝试连接到Azure时,并且在Azure门户中,所有内容似乎都已到位(按照上面提到的示例),我被卡住了.
我在西欧的位置使用我的活动中心.
我正在尝试创建一个简单的程序,以纯文本形式向套接字发送消息。发件人是使用 websocket 的 javascript 网页,服务器是 C 程序。我对 C 代码没有任何控制权,但代码所有者向我保证,我可以使用简单的 javascript 来发送消息。我的代码如下:
<!DOCTYPE HTML>
<html>
<head>
<script type="text/javascript">
//initialize the websocket ws
var ws;
//Open the socket connection
function openSock() {
//test for Websocket compatibility in the browser
if ("WebSocket" in window) {
// log socket attempt
console.log("Attempting to open socket!");
//open web socket ws
ws = new WebSocket("ws://192.168.6.222:11000/echo");
} else { // else the browser doesn't support WebSocket
//Websocket is not supported
alert("APS NOT supported by your Browser!");
}
} …Run Code Online (Sandbox Code Playgroud) 我有一台服务器,日志中打印了以下内容
Caused by: java.io.IOException: Connection reset by peer
at sun.nio.ch.FileDispatcherImpl.write0(Native Method)
at sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:47)
at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:93)
at sun.nio.ch.IOUtil.write(IOUtil.java:65)
at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:471)
at org.apache.tomcat.util.net.NioChannel.write(NioChannel.java:134)
at org.apache.tomcat.util.net.NioBlockingSelector.write(NioBlockingSelector.java:101)
at org.apache.tomcat.util.net.NioSelectorPool.write(NioSelectorPool.java:157)
at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.doWrite(NioEndpoint.java:1238)
at org.apache.tomcat.util.net.SocketWrapperBase.doWrite(SocketWrapperBase.java:670)
at org.apache.tomcat.util.net.SocketWrapperBase.flushBlocking(SocketWrapperBase.java:607)
at org.apache.tomcat.util.net.SocketWrapperBase.flush(SocketWrapperBase.java:597)
at org.apache.coyote.http11.Http11OutputBuffer.flushBuffer(Http11OutputBuffer.java:519)
at org.apache.coyote.http11.Http11OutputBuffer.flush(Http11OutputBuffer.java:260)
at org.apache.coyote.http11.Http11Processor.flush(Http11Processor.java:1494)
at org.apache.coyote.AbstractProcessor.action(AbstractProcessor.java:279)
at org.apache.coyote.Response.action(Response.java:168)
at org.apache.catalina.connector.OutputBuffer.doFlush(OutputBuffer.java:317)
Run Code Online (Sandbox Code Playgroud)
我知道客户端由于某种原因关闭了连接,但服务器仍在写入数据。而此时客户端会返回复位标志“RST”,服务器的日志会得到Connection reset by peer
为了复制它,我让服务器休眠几秒钟,并创建了一个客户端,如下所示:
private void executePostMethod() throws IOException, InterruptedException {
Map<String, String> responseMap = new HashMap<>();
String data = "{\"id\":\"XYZ123\",\"name\":\"John Doe\",\"accountNumber\":\"ABC123\"}";
URL urlObject = new URL("\"http://localhost/v1/name/validate\"");
System.out.println("Creating Connection");
Socket socket = new …Run Code Online (Sandbox Code Playgroud) connection-reset ×10
java ×4
tomcat ×2
apache ×1
azure ×1
coldfusion ×1
django ×1
ioexception ×1
java-8 ×1
javascript ×1
ldap ×1
oracle ×1
php ×1
regex ×1
sockets ×1
spring-boot ×1
ubuntu-12.04 ×1
vagrant ×1
wamp ×1
websocket ×1