FastDFS(fdfs)遇到的坑之一,本地fastdfs-client-java開發上傳圖片報錯:java.net.SocketTimeoutException: connect timed out
阿新 • • 發佈:2019-01-31
前置:
我在伺服器上配置了FDFS服務, 伺服器上上傳等測試都通過了,沒問題,後來到本地開發, 用fastdfs-client-java-1.27.jar開發包來連結伺服器,上傳圖片報錯:
java.net.SocketTimeoutException: connect timed out at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) at java.net.Socket.connect(Socket.java:589) at org.csource.fastdfs.TrackerGroup.getConnection(TrackerGroup.java:46) at org.csource.fastdfs.TrackerGroup.getConnection(TrackerGroup.java:68) at org.csource.fastdfs.TrackerClient.getConnection(TrackerClient.java:57) at com.example.demo.entity.FastDFSClient.<init>(FastDFSClient.java:29) at com.example.demo.contoller.Controller_FastDFS.uploadFile2(Controller_FastDFS.java:31) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:209) at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136) at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:102) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:877) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:783) at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:991) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:925) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:974) at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:866) ......
java配置檔案:
fastdfs.tracker_servers = 伺服器公網IP:22122
後來才發現,這裡的
fastdfs.tracker_servers不是寫伺服器的IP地址,這個要與
/etc/fdfs/storage.conf 中的
8 # tracker_server can ocur more than once, and tracker_server format is
119 # "host:port", host can be hostname or ip address
120 tracker_server=11.1.1.31:22122
tracker_server 的IP地址保持一致,但是我在伺服器上用的內網IP
因此,將其改為伺服器公網IP地址就可以了
# 與java專案中的fastdfs.tracker_servers 保持一致
tracker_server = 伺服器公網IP:22122
注意:可能你跟我一樣,想同時加入
racker_server = 伺服器公網IP:22122
racker_server = 伺服器內網IP:22122
這種方法我測試過,如果專案部署到伺服器上是沒問題的,但是到本地開發的時候,你會發現,會出現1次失敗,1次成功,迴圈的出現的現象