FastDFS使用中的幾個常見問題解答

1. FastDFS適用的場景以及不適用的場景

? ? FastDFS是為互聯(lián)網(wǎng)應(yīng)用量身定做的一套分布式文件存儲系統(tǒng),非常適合用來存儲圖片、音頻、視頻、文檔等文件。對于互聯(lián)網(wǎng)應(yīng)用,簡潔高效的FastDFS和其他分布式文件系統(tǒng)相比,優(yōu)勢非常明顯。具體情況大家可以查閱相關(guān)介紹文檔,如:FastDFS架構(gòu)設(shè)計文檔等等。

? ? 出于簡潔考慮,F(xiàn)astDFS沒有對文件做分塊存儲,因此不太適合分布式計算場景。

2. 服務(wù)器時間必須保持一致

? ? 因?yàn)镕astDFS的精巧設(shè)計不需要存儲文件索引,F(xiàn)astDFS通過比較時間戳來判斷文件是否同步完成。因此集群內(nèi)的服務(wù)器時間要保持一致,各臺服務(wù)器的時間差值不要超過1秒。建議采用NTP對時服務(wù)。

3. too many open files錯誤的解決方法

?? 日志中報打開文件過多的錯誤,是因?yàn)橄到y(tǒng)允許一個進(jìn)程打開的文件數(shù)設(shè)置太小了。Linux環(huán)境下的解決辦法,修改文件/etc/security/limits.conf,在文件尾部添加如下代碼(如果已經(jīng)存在則修改相應(yīng)數(shù)值):

root soft nofile 65535

root hard nofile 65535

?* soft nofile 65535

?* hard nofile 65535

? ? 注:只配置最后兩行不就可以了嗎,為啥還要單獨(dú)為root用戶配置呢?查了網(wǎng)上資料,說是*這樣的通配符對root用戶無效,所以root需要單獨(dú)配置(嗯,阿里云ECS就配置了上面這4行)。

4. FastDFS服務(wù)啟停

? ? FastDFS server程序自帶start、stop和restart指令,命令行示例如下:

/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf? [start | stop | restart]

/usr/bin/fdfs_storaged /etc/fdfs/storage.conf? [start | stop |?restart]

? ? 可以使用kill或者killall正常殺掉 fdfs_trackerd 和?fdfs_storaged 進(jìn)程,但

千萬不要加上-9參數(shù)強(qiáng)殺,否則可能會導(dǎo)致binlog數(shù)據(jù)丟失等問題。

5. FastDFS支持?jǐn)帱c(diǎn)續(xù)傳嗎?

? ? 上傳和下載文件均可支持。

? ? 對于文件上傳,需要先上傳appender類型的文件,然后使用append方法。

? ? 如果要上傳超過1GB的大文件,建議采用append方式分多次上傳,比如每次上傳64MB。需要先創(chuàng)建appender類型的文件,可以創(chuàng)建空的appender文件。

? ? ?對于超大文件,如果想支持多線程上傳以加快上傳速度,可以采用如下4個步驟實(shí)現(xiàn):

? ? ? 1)上傳appender類型的文件,上傳內(nèi)容可以為空;

? ? ? 2)? 調(diào)用truncate方法將該appender文件設(shè)置為最終文件大??;

? ? ? 3)調(diào)用modify方法并發(fā)上傳文件分片,直至上傳完成;

? ? ? 4)【可選】如果以后不再對該文件進(jìn)行modify和append,可以調(diào)用regenerate_appender_filename方法生成normal類型的文件。

? ? 對于文件下載,F(xiàn)astDFS可以指定文件偏移量和獲取的文件內(nèi)容大小。利用這個特性,文件下載可以實(shí)現(xiàn)斷點(diǎn)續(xù)傳以及多線程下載。

6. Java SDK非線程安全

? ?FastDFS提供的Java SDK是非線程安全的,有人已經(jīng)踩過這個坑了。包括負(fù)責(zé)與tracker server交互的TrackerClient、與storage server直接通信的StorageClient 和?StorageClient1 這三個類均是非線程安全的。

? ?為啥會出現(xiàn)兩個StorageClient字樣的類名呢?二者實(shí)現(xiàn)功能完全一樣,StorageClient是group和filename分離的用法,StorageClient1是group和filename合體用法(文件ID)。通常使用StorageClient1就好。

? ? 大家在部署和使用FastDFS的過程中有任何疑問,歡迎在FastCFS 技術(shù)交流群或微信公眾號交流。我可以根據(jù)大家的反饋和交流結(jié)果,繼續(xù)整理FastDFS常見問題。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容