1. 程式人生 > >FastDFS(fdfs)遇到的坑之一,本地fastdfs-client-java開發上傳圖片報錯:java.net.SocketTimeoutException: connect timed out

FastDFS(fdfs)遇到的坑之一,本地fastdfs-client-java開發上傳圖片報錯:java.net.SocketTimeoutException: connect timed out

前置:

我在伺服器上配置了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次成功,迴圈的出現的現象