我正在使用FIP将ToolTwist应用程序部署到生产服务器,并且我在传输阶段遇到此错误。
java.net.SocketTimeoutException: Read timed out
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:152)
并在fipserver控制台中
org.eclipse.jetty.io.EofException
at org.eclipse.jetty.http.HttpGenerator.flushBuffer(HttpGenerator.java:892)
at org.eclipse.jetty.http.AbstractGenerator.blockForOutput(AbstractGenerator.java:486)
at org.eclipse.jetty.http.AbstractGenerator.flush(AbstractGenerator.java:424)
at org.eclipse.jetty.server.HttpOutput.flush(HttpOutput.java:78)
at org.eclipse.jetty.server.HttpConnection$Output.flush(HttpConnection.java:1094)
at org.eclipse.jetty.server.HttpOutput.write(HttpOutput.java:159)
at org.eclipse.jetty.server.HttpOutput.write(HttpOutput.java:98)
at tooltwist.fip.jetty.GetFileListServlet.doGet(GetFileListServlet.java:82)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
Caused by: java.io.IOException: Broken pipe
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:94)
这应该是什么解决方案?
答案 0 :(得分:1)
在FIP文件传输的第一阶段发生此错误,其中fipserver创建目标服务器上现有文件的索引。这在GetFileListServlet.doGet()中完成,可以在堆栈跟踪中看到。它也在客户端通过消息...
表示 Indexing source...
Indexing destination...
ERROR: java.net.SocketTimeoutException Read timed out
Exception: tooltwist.fip.FipException: java.net.SocketTimeoutException: Read timed out
此索引过程涉及为目标服务器上的每个文件创建一个哈希值,然后fip客户端将其与源计算机上的文件哈希值进行比较。这样做是为了确定哪些文件不同,因此需要安装。
当客户端等待FIP服务器索引目标计算机上的文件太长时,会发生读取超时。索引通常是一个相当快速的过程,但确实涉及读取目标目录下的所有文件(例如在〜/ server中)。如果该目标目录中存在巨大的巨大文件,则扫描将花费相当长的时间来完成。如果该时间太长,则客户端超时并断开连接,服务器也会看到连接被删除并停止索引。
此错误的最常见原因是〜/ server / tomcat / logs中的日志文件过大。如果你清理它们,问题就会消失。