0

我正在使用 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)

这应该是什么解决方案?

4

1 回答 1

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 中的日志文件过大。如果你清理这些,问题应该会消失。

于 2016-04-22T04:04:20.133 回答