FastDFS - 无法获取服务端连接资源:can‘t create connection to/xx.xx.xx.xx:0

2024-05-06 20:36

本文主要是介绍FastDFS - 无法获取服务端连接资源:can‘t create connection to/xx.xx.xx.xx:0,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

问题描述

根据官方文档 安装完FastDFS服务器后, 服务正常启动,但是在 SpringBoot 项目使用 fastdfs-client 客户端报错无法获取服务端连接资源:can't create connection to/xx.xx.xx.xx:0, 一系列排查发现是获取到的 tracker 端口为 0 。

com.luhuiguo.fastdfs.exception.FdfsConnectException: 无法获取服务端连接资源:can't create connection to/xx.xx.xx.xx:0at com.luhuiguo.fastdfs.conn.DefaultConnection.<init>(DefaultConnection.java:52)at com.luhuiguo.fastdfs.conn.PooledConnectionFactory.create(PooledConnectionFactory.java:42)at com.luhuiguo.fastdfs.conn.PooledConnectionFactory.create(PooledConnectionFactory.java:20)at org.apache.commons.pool2.BaseKeyedPooledObjectFactory.makeObject(BaseKeyedPooledObjectFactory.java:60)at org.apache.commons.pool2.impl.GenericKeyedObjectPool.create(GenericKeyedObjectPool.java:1064)at org.apache.commons.pool2.impl.GenericKeyedObjectPool.borrowObject(GenericKeyedObjectPool.java:358)at org.apache.commons.pool2.impl.GenericKeyedObjectPool.borrowObject(GenericKeyedObjectPool.java:281)at com.luhuiguo.fastdfs.conn.ConnectionManager.getConnection(ConnectionManager.java:100)at com.luhuiguo.fastdfs.conn.ConnectionManager.executeFdfsCmd(ConnectionManager.java:56)at com.luhuiguo.fastdfs.service.DefaultFastFileStorageClient.uploadFileAndMetaData(DefaultFastFileStorageClient.java:72)at com.luhuiguo.fastdfs.service.DefaultFastFileStorageClient.uploadFile(DefaultFastFileStorageClient.java:41)

环境

组件版本
JDK1.8
TrackerV6.12.1 (可以通过fdfs_trackerd --version 查询)
StorageV6.12.1 (可以通过fdfs_storaged --version 查询)
fastdfs-client0.4.0

解决方案

有问题首先考虑能不能在官方找到解决方案,去 FastDFS 的Git仓库 看一下有没有相同问题的 issue ,找到一条符合情形的描述。

在这里插入图片描述

我们可以看到作者有在这个issue下回复,要求使用最新的fastdfs-client ,但是去maven仓库一查,发现最新版本只到 1.27.2 并没有作者要求的1.32版本。

在这里插入图片描述

重写 TrackerClient ,设定默认的 Storage 端口 23000, 如果获取到的端口为 0 时,重置为默认端口 23000(治标不治本,如果服务端修改了strage.conf的端口,那么这个修改就失效了)。

//修复新版 FDFS 获取到的 Storage 端口为 0 的问题
@Primary
@Component("customizeTrackerClient")
public class CustomizeTrackerClient extends DefaultTrackerClient {private static final int DEFAULT_PORT = 23000;public CustomizeTrackerClient(TrackerConnectionManager trackerConnectionManager) {super(trackerConnectionManager);}public StorageNode getStoreStorage() {StorageNode res = super.getStoreStorage();res.setPort(getPort(res.getPort()));return res;}public StorageNode getStoreStorage(String groupName) {StorageNode res = super.getStoreStorage(groupName);res.setPort(getPort(res.getPort()));return res;}public StorageNodeInfo getFetchStorage(String groupName, String filename) {StorageNodeInfo res = super.getFetchStorage(groupName, filename);res.setPort(getPort(res.getPort()));return res;}public StorageNodeInfo getUpdateStorage(String groupName, String filename) {StorageNodeInfo res = super.getUpdateStorage(groupName, filename);res.setPort(getPort(res.getPort()));return res;}private int getPort(int port){if(port == 0){return DEFAULT_PORT;}return port;}
}

这篇关于FastDFS - 无法获取服务端连接资源:can‘t create connection to/xx.xx.xx.xx:0的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/965311

相关文章

C#实现获取电脑中的端口号和硬件信息

《C#实现获取电脑中的端口号和硬件信息》这篇文章主要为大家详细介绍了C#实现获取电脑中的端口号和硬件信息的相关方法,文中的示例代码讲解详细,有需要的小伙伴可以参考一下... 我们经常在使用一个串口软件的时候,发现软件中的端口号并不是普通的COM1,而是带有硬件信息的。那么如果我们使用C#编写软件时候,如

C#实现WinForm控件焦点的获取与失去

《C#实现WinForm控件焦点的获取与失去》在一个数据输入表单中,当用户从一个文本框切换到另一个文本框时,需要准确地判断焦点的转移,以便进行数据验证、提示信息显示等操作,本文将探讨Winform控件... 目录前言获取焦点改变TabIndex属性值调用Focus方法失去焦点总结最后前言在一个数据输入表单

通过C#获取PDF中指定文本或所有文本的字体信息

《通过C#获取PDF中指定文本或所有文本的字体信息》在设计和出版行业中,字体的选择和使用对最终作品的质量有着重要影响,然而,有时我们可能会遇到包含未知字体的PDF文件,这使得我们无法准确地复制或修改文... 目录引言C# 获取PDF中指定文本的字体信息C# 获取PDF文档中用到的所有字体信息引言在设计和出

python中os.stat().st_size、os.path.getsize()获取文件大小

《python中os.stat().st_size、os.path.getsize()获取文件大小》本文介绍了使用os.stat()和os.path.getsize()函数获取文件大小,文中通过示例代... 目录一、os.stat().st_size二、os.path.getsize()三、函数封装一、os

解决Cron定时任务中Pytest脚本无法发送邮件的问题

《解决Cron定时任务中Pytest脚本无法发送邮件的问题》文章探讨解决在Cron定时任务中运行Pytest脚本时邮件发送失败的问题,先优化环境变量,再检查Pytest邮件配置,接着配置文件确保SMT... 目录引言1. 环境变量优化:确保Cron任务可以正确执行解决方案:1.1. 创建一个脚本1.2. 修

Xshell远程连接失败以及解决方案

《Xshell远程连接失败以及解决方案》本文介绍了在Windows11家庭版和CentOS系统中解决Xshell无法连接远程服务器问题的步骤,在Windows11家庭版中,需要通过设置添加SSH功能并... 目录一.问题描述二.原因分析及解决办法2.1添加ssh功能2.2 在Windows中开启ssh服务2

Redis连接失败:客户端IP不在白名单中的问题分析与解决方案

《Redis连接失败:客户端IP不在白名单中的问题分析与解决方案》在现代分布式系统中,Redis作为一种高性能的内存数据库,被广泛应用于缓存、消息队列、会话存储等场景,然而,在实际使用过程中,我们可能... 目录一、问题背景二、错误分析1. 错误信息解读2. 根本原因三、解决方案1. 将客户端IP添加到Re

python使用watchdog实现文件资源监控

《python使用watchdog实现文件资源监控》watchdog支持跨平台文件资源监控,可以检测指定文件夹下文件及文件夹变动,下面我们来看看Python如何使用watchdog实现文件资源监控吧... python文件监控库watchdogs简介随着Python在各种应用领域中的广泛使用,其生态环境也

element-ui下拉输入框+resetFields无法回显的问题解决

《element-ui下拉输入框+resetFields无法回显的问题解决》本文主要介绍了在使用ElementUI的下拉输入框时,点击重置按钮后输入框无法回显数据的问题,具有一定的参考价值,感兴趣的... 目录描述原因问题重现解决方案方法一方法二总结描述第一次进入页面,不做任何操作,点击重置按钮,再进行下

Mysql 中的多表连接和连接类型详解

《Mysql中的多表连接和连接类型详解》这篇文章详细介绍了MySQL中的多表连接及其各种类型,包括内连接、左连接、右连接、全外连接、自连接和交叉连接,通过这些连接方式,可以将分散在不同表中的相关数据... 目录什么是多表连接?1. 内连接(INNER JOIN)2. 左连接(LEFT JOIN 或 LEFT