FastDFS问题汇总
FastDFS问题汇总
错误信息:找不到节点或文件
问题
使用 FastDFS的java客户端上传图片报错
1 | com.github.tobato.fastdfs.exception.FdfsServerException: 错误码:2,错误信息:找不到节点或文件 |
排错过程
尝试重启 tracker和storage
重启后仍出现该错误
检查tracker.conf和storage.conf中的配置
检查各个配置文件的ip和端口是否设置正确,检查后发现配置文件没有问题
检查应用的配置是否有问题,检查后重启服务
检查配置没有问题,重启服务后仍报错
查看tracker和storage的日志
查看tracker的日志时发现日志中报错:
1
ERROR - file: tracker_service.c, line: 2152, client ip: 192.168.10.70, sync src server: 47.105.70.191 not exists
我的设置中并没有
47.105.70.191
,问题找到了。
解决
进入storage的数据目录
1
2我配置的数据目录位置为:/home/fastdfs/storage
cd /home/fastdfs/storage/data查看隐藏文件
.data_init_flag
1
2
3
4
5
6
7
8
9
10
11
12
13
14列出所有文件
ls -al
查看隐藏文件
cat .data_init_flag
发现问题IP
storage_join_time=1636447416
sync_old_done=1
sync_src_server=47.105.70.191
sync_until_timestamp=0
last_ip_addr=192.168.10.70
last_server_port=23000
last_http_port=8888
current_trunk_file_id=0
trunk_last_compress_time=0删除
.data_init_flag
文件,重启tracker和storage服务1
2
3
4
5删除文件
rm -rf .data_init_flag
重启服务
sudo service fdfs_trackerd restart
sudo service fdfs_storaged restart再次测试,文件正确上传
文件正确上传却访问不到
问题
文件正确上传到FastDFS,但是通过配置的Nginx却访问不了图片
排错过程
检查端口是否对外开放
检查Nginx是否正常启动
检查Nginx配置是否正常
主要检查Nginx配置的FastDFS访问规则
FastDFS安装运行是否使用的是root账号
如果安装运行使用的是root账号,Nginx需要指明用户组为root
解决
【情况1】开放端口
1
2
3
4
5方式一:关闭防火墙
systemctl stop firewalld
方式二:开放指定端口
firewall-cmd --zone=public --add-port=19090/tcp --permanent
firewall-cmd --reload【情况2】查看nginx的进程是否启动或查看日志
1
2
3
4
5查看nginx进程
netstat -neplt | grep 'nginx'
查看日志, 日志的位置在nginx的安装目录中, 我这里的安装目录为: /opt/nginx
cat /opt/nginx/logs/error.log
cat /opt/nginx/logs/access.log
【情况3】使用FastDFS的nginx模块,nginx配置如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19server {
listen 19090;
server_name xxx.xxx.com;
location ~/group([0-9])/ {
ngx_fastdfs_module;
}
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}【情况4】我遇到的就是这种情况,需要修改nginx的用户组
默认的nginx配置的第一行不会指明任何用户组,如下:
打开user的注释并修改其值为
root
,修改后如下:修改后重启nginx,即可