fastdfs简介
FastDFS是用c语言编写的一款开源的分布式文件系统。FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。
问题现象
- 发现图片、附件无法上传,重启fastdfs后解决
- 项目的4个应用用一个fastdfs的同一个group,发现某一个应用的用户无法上传,但同时其他应用的用户可以,过一段时间后又可以了,重启fastdfs服务或应用服务可以立刻解决
解决
- 一开始以为是fastdfs的问题,因为重启fastdfs后问题解决
- 此问题偶现,在集约化之前,用户数较少,很少出现此问题。集约化之后,各个项目,基本上每个应用对应一个fastdfs,出现问题的频次也极少,每次都是运维重启fastdfs解决,重启只需1秒,就没深究
- 用户较多时,而且4个应用用的同一个fastdfs。导致出现问题的次数增多,而且问题现象较明显。偶发,间歇性,即使不处理也会恢复正常
- 初步认定为fastdfs服务与java服务的客户端连接有问题,无法上传时,是报的超时错误。怀疑没有足够的连接数使用,怀疑有连接未释放,后查看代码发现所有的连接都会在使用后关闭。
- 后排查确认为连接数问题,默认连接数256,当连接数全部被占用后,后续连接就会在等待中超时
- 需要修改fastdfs服务的配置文件
storage.conf
和tracker.conf
max_connections=256
改大一点,重启fastdfs- 注意,可以使用
ps -ef|grep fdfs
查看下进程,有可能使用的不是conf下的配置文件