Fastdfs 一次上传文件失败的问题分析
1.问题现象
上传文件失败,返回错误码28
上传文件包 connection reset by peer.
2. 问题分析
- 连接被重置是因为tcp的三次握手出现问题,第三次握手的时候ack指令未返回(详细问题请自行百度),简单点就是tcp请求还没返回消息,连接就已被关闭。
- 这就感觉很神奇,然后分析出是文件上传的时候产生问题的,由于文件上传是到fastdfs 的,那我就在想是不是fastdfs的问题导致连接异常中断的呢?
- 带着这种思路,我就开始检查fastdfs 的一些配置,然后又检查一下服务器的内存以及磁盘,发现挂载的磁盘消耗了90%,感觉这样没啥,不是还有10%(30G)的空间,最后才发现这种想法很有问题。
- 然后在百度发现一个问题,fastdfs是有一个系统磁盘的预留空间的,小于这个值,fastdfs就会出现问题。
3. 问题解决
注意FastDFS中有预留空间的概念,在tracker.conf中设置,配置项为:reserved_storage_space,缺省值为4GB,即预留4GB的空间。请酌情设置reserved_storage_space这个参数,比如可以设置为磁盘总空间的20%左右。我的服务器上配置的预留空间是10%,正好命中了,最后就得清理磁盘了。然后问题解决了。