使用 Tooltwist 控制器进行部署时出现 EofException
EofException when doing a deployment using the Tooltwist Controller
我正在使用 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)
解决这个问题的方法是什么?
此错误发生在 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 中的日志文件过大。如果你把它们清理干净,问题应该就会消失。
我正在使用 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)
解决这个问题的方法是什么?
此错误发生在 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 中的日志文件过大。如果你把它们清理干净,问题应该就会消失。