- 論壇徽章:
- 4
|
本帖最后由 happy_fish100 于 2022-03-29 17:26 編輯
定位問(wèn)題首先要看日志文件。出現(xiàn)問(wèn)題時(shí),先檢查返回的錯(cuò)誤號(hào)和錯(cuò)誤信息。然后查看服務(wù)器端日志,相信可以定位到問(wèn)題所在。
1. FastDFS適用的場(chǎng)景以及不適用的場(chǎng)景?
FastDFS是為互聯(lián)網(wǎng)應(yīng)用量身定做的一套分布式文件存儲(chǔ)系統(tǒng),非常適合用來(lái)存儲(chǔ)用戶圖片、視頻、文檔等文件。對(duì)于互聯(lián)網(wǎng)應(yīng)用,和其他分布式文件系統(tǒng)相比,優(yōu)勢(shì)非常明顯。具體情況大家可以看相關(guān)的介紹文檔,包括FastDFS介紹PPT等等。
出于簡(jiǎn)潔考慮,F(xiàn)astDFS沒有對(duì)文件做分塊存儲(chǔ),因此不太適合分布式計(jì)算場(chǎng)景。
2. FastDFS需要的編譯和運(yùn)行環(huán)境是怎樣的?
FastDFS Server僅支持unix系統(tǒng),在Linux和FreeBSD測(cè)試通過(guò)。在Solaris系統(tǒng)下網(wǎng)絡(luò)通信方面有些問(wèn)題。
編譯需要的其他庫(kù)文件有pthread,V5.0以前的版本依賴libevent;V5.0以后,不再依賴libevent。
v5.04開始依賴libfastcommon,github地址:https://github.com/happyfish100/libfastcommon
v5版本從v5.05開始才是穩(wěn)定版本,請(qǐng)使用v5版本的同學(xué)盡快升級(jí)到v5.05或更新的版本,建議升級(jí)到v5.08。
pthread使用系統(tǒng)自帶的即可。
對(duì)libevent的版本要求為1.4.x,建議使用最新的stable版本,如1.4.14b。
注意,千萬(wàn)不要使用libevent 2.0非stable版本。
測(cè)試了一下,libevent 2.0.10是可以正常工作的。
在64位系統(tǒng)下,可能需要自己在/usr/lib64下創(chuàng)建libevent.so的符號(hào)鏈接。比如:
ln -s /usr/lib/libevent.so /usr/lib64/libevent.so
在ubuntu 11及后續(xù)版本,可能會(huì)出現(xiàn)找不到動(dòng)態(tài)庫(kù)pthread庫(kù),解決方法參見:http://72891.cn/thread-2324388-1-2.html
若出現(xiàn)libfastcommon版本不匹配問(wèn)題,請(qǐng)執(zhí)行如下命令:/bin/rm -rf /usr/local/lib/libfastcommon.so /usr/local/include/fastcommon
3. 有人在生產(chǎn)環(huán)境中使用FastDFS嗎?
答案是肯定的。據(jù)我所知,截止2012年底至少有25家公司在使用FastDFS,其中有好幾家是做網(wǎng)盤的公司。
其中存儲(chǔ)量最大的一家,集群中存儲(chǔ)group數(shù)有400個(gè),存儲(chǔ)服務(wù)器超過(guò)800臺(tái),存儲(chǔ)容量達(dá)到6PB,文件數(shù)超過(guò)1億,Group持續(xù)增長(zhǎng)中。。。
以下是使用FastDFS的用戶列表:
某大型網(wǎng)盤(因?qū)Ψ揭髮?duì)公司名保密,就不提供名字了。有400個(gè)group,存儲(chǔ)容量達(dá)到了6PB,文件數(shù)超過(guò)1億)
UC (http://www.uc.cn/,存儲(chǔ)容量超過(guò)10TB)
支付寶(http://www.alipay.com/)
京東商城(http://www.360buy.com/)
淘淘搜(http://www.taotaosou.com/)
飛信(http://feixin.1008**/)
趕集網(wǎng)(http://www.ganji.com/)
淘米網(wǎng)(http://www.61.com/)
迅雷(http://www.xunlei.com/)
螞蜂窩(http://www.mafengwo.cn/)
丫丫網(wǎng)(http://www.iyaya.com/)
虹網(wǎng)(http://3g.ahong.com)
5173(http://www.5173.com/)
華夏原創(chuàng)網(wǎng)(http://www.yuanchuang.com/)
華師京城教育云平臺(tái)(http://www.hsjdy.com.cn/)
視友網(wǎng)(http://www.cuctv.com/)
搜道網(wǎng)(http://www.sodao.com/)
58同城(http://www.58.com/)
商務(wù)聯(lián)盟網(wǎng)(http://www.biz72.com/)
中青網(wǎng)(http://www.youth.cn/)
繽麗網(wǎng) (http://www.binliy.com/)
飛視云視頻(http://www.freeovp.com/)
夢(mèng)芭莎(http://www.moonbasa.com/)
活動(dòng)幫(www.eventsboom.com)
51CTO(http://www.51cto.com/)
搜房網(wǎng)(http://www.soufun.com/)
4. 啟動(dòng)storage server時(shí),一直處于僵死狀態(tài)。
A:?jiǎn)?dòng)storage server,storage將連接tracker server,如果連不上,將一直重試。直到連接成功,啟動(dòng)才算真正完成。
出現(xiàn)這樣情況,請(qǐng)檢查連接不上tracker server的原因。
友情提示:從V2.03以后,多tracker server在啟動(dòng)時(shí)會(huì)做時(shí)間上的檢測(cè),判斷是否需要從別的tracker server同步4個(gè)系統(tǒng)文件。
觸發(fā)時(shí)機(jī)是第一個(gè)storage server連接上tracker server后,并發(fā)起join請(qǐng)求。
如果集群中有2臺(tái)tracker server,而其中一臺(tái)tracker沒有啟動(dòng),可能會(huì)導(dǎo)致storage server一直處于僵死狀態(tài)。
注:這個(gè)問(wèn)題v5.07解決了。
5. 執(zhí)行fdfs_test或fdfs_test1上傳文件時(shí),服務(wù)器返回錯(cuò)誤號(hào)2
錯(cuò)誤號(hào)表示沒有ACTIVE狀態(tài)的storage server。可以執(zhí)行fdfs_monitor查看服務(wù)器狀態(tài)。
6. 如何讓server進(jìn)程退出運(yùn)行?
直接kill即可讓server進(jìn)程正常退出,可以使用killall命令,例如:
killall fdfs_trackerd
killall fdfs_storaged
也可以使用如下命令:
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf stop
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf stop
千萬(wàn)不要使用-9參數(shù)強(qiáng)殺,否則可能會(huì)導(dǎo)致binlog數(shù)據(jù)丟失的問(wèn)題。
7. 如何重啟server進(jìn)程?
直接使用:
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart
8. 跨運(yùn)營(yíng)商通信異常問(wèn)題
比如電信和網(wǎng)通機(jī)房相互通信,可能會(huì)存在異常,有兩種表現(xiàn):
1)不能建立連接,這個(gè)比較直接,肯定是網(wǎng)絡(luò)連接的問(wèn)題
2)可以正常建立連接,但接收和發(fā)送數(shù)據(jù)失敗,這個(gè)問(wèn)題比較隱蔽,正常網(wǎng)絡(luò)環(huán)境下,不應(yīng)該出現(xiàn)此類問(wèn)題。
還有人碰到過(guò)從一個(gè)方向建立連接可以正常通信,但從另外一個(gè)方向就不能正常通信的情況。
解決辦法:
嘗試將服務(wù)端口改小,建議將端口修改為1024以下。比如將storage服務(wù)端口由23000修改為873等,也可以試試修改為8080
如果問(wèn)題還不能解決,請(qǐng)聯(lián)系你的網(wǎng)絡(luò)(機(jī)房)服務(wù)商。
9. fdfs_test和fdfs_test1是做什么用的?
這兩個(gè)是FastDFS自帶的測(cè)試程序,會(huì)對(duì)一個(gè)文件上傳兩次,分別作為主文件和從文件。返回的文件ID也是兩個(gè)。
并且會(huì)上傳文件附加屬性,storage server上會(huì)生成4個(gè)文件。
這兩個(gè)程序僅用于測(cè)試目的,請(qǐng)不要用作實(shí)際用途。
V2.05提供了比較正式的三個(gè)小工具:
上傳文件:/usr/bin/fdfs_upload_file <config_file> <local_filename>
下載文件:/usr/bin/fdfs_download_file <config_file> <file_id> [local_filename]
刪除文件:/usr/bin/fdfs_delete_file <config_file> <file_id>
10. 什么是主從文件?
主從文件是指文件ID有關(guān)聯(lián)的文件,一個(gè)主文件可以對(duì)應(yīng)多個(gè)從文件。
主文件ID = 主文件名 + 主文件擴(kuò)展名
從文件ID = 主文件名 + 從文件后綴名 + 從文件擴(kuò)展名
使用主從文件的一個(gè)典型例子:以圖片為例,主文件為原始圖片,從文件為該圖片的一張或多張縮略圖。
FastDFS中的主從文件只是在文件ID上有聯(lián)系。FastDFS server端沒有記錄主從文件對(duì)應(yīng)關(guān)系,因此刪除主文件,F(xiàn)astDFS不會(huì)自動(dòng)刪除從文件。
刪除主文件后,從文件的級(jí)聯(lián)刪除,需要由應(yīng)用端來(lái)實(shí)現(xiàn)。
主文件及其從文件均存放到同一個(gè)group中。
主從文件的生成順序:
1)先上傳主文件(如原文件),得到主文件ID
2)然后上傳從文件(如縮略圖),指定主文件ID和從文件后綴名(當(dāng)然還可以同時(shí)指定從文件擴(kuò)展名),得到從文件ID。
11. 如何刪除無(wú)效的storage server?
可以使用fdfs_monitor來(lái)刪除。命令行如下:
/usr/bin/fdfs_monitor <config_filename> delete <group_name> <storage_id>
例如:
/usr/bin/fdfs_monitor /etc/fdfs/client.conf delete group1 192.168.0.100
注意:如果被刪除的storage server的狀態(tài)是ACTIVE,也就是該storage server還在線上服務(wù)的情況下,是無(wú)法刪除掉的。
storage_id參數(shù):如果使用默認(rèn)的ip方式,填寫storage server IP地址,否則使用對(duì)應(yīng)的server id。
12. FastDFS擴(kuò)展模塊升級(jí)到V1.06及以上版本的注意事項(xiàng)
apache和nginx擴(kuò)展模塊版本v1.06及以上版本,需要在配置文件/etc/fdfs/fastdfs_mod.conf中設(shè)置storage server的存儲(chǔ)路徑信息。
一個(gè)示例如下所示:
store_path_count=1
store_path0=/home/yuqing/fastdfs
store_path_count和store_path#均需要正確設(shè)置,必須和storage.conf中的相應(yīng)配置完全一致,否則將導(dǎo)致文件不能正確下載!
13. nginx和apache擴(kuò)展模塊與FastDFS server版本對(duì)應(yīng)關(guān)系
擴(kuò)展模塊1.05: 針對(duì)FastDFs server v2.x,要求server版本大于等于v2.09
擴(kuò)展模塊1.07及以上版本: 針對(duì)FastDFs server v3.x
具體的版本匹配情況,參閱擴(kuò)展模塊源碼下的HISTORY文件
14. FastDFS有QQ技術(shù)交流群?jiǎn)幔?br />
有的。群號(hào):212801927,歡迎大家加入交流。
15. 上傳文件失敗,返回錯(cuò)誤碼28,這是怎么回事?
返回錯(cuò)誤碼28,表示磁盤空間不足。注意FastDFS中有預(yù)留空間的概念,在tracker.conf中設(shè)置,配置項(xiàng)為:reserved_storage_space,缺省值為4GB,即預(yù)留4GB的空間。
請(qǐng)酌情設(shè)置reserved_storage_space這個(gè)參數(shù),比如可以設(shè)置為磁盤總空間的20%左右。
16. fdfs_trackerd或者fdfs_storaged的日志中出現(xiàn):malloc task buff failed字樣的錯(cuò)誤,這是怎么回事?
出現(xiàn)此類信息表示已經(jīng)達(dá)到最大連接數(shù)。server端支持的最大連接數(shù)可以通過(guò)max_connections這個(gè)參數(shù)來(lái)設(shè)置。
出現(xiàn)這樣的問(wèn)題,需要排查一下是否客戶端使用不當(dāng)導(dǎo)致的,比如客戶端沒有及時(shí)關(guān)閉無(wú)用的連接。
17. FastDFS的文件ID中可以反解出哪些字段?
文件ID中除了包含group name和存儲(chǔ)路徑外,文件名中可以反解出如下幾個(gè)字段:
1)文件創(chuàng)建時(shí)間(unix時(shí)間戳,32位整數(shù))
2)文件大小
3)上傳到的源storage server IP地址(32位整數(shù))
4)文件crc32校驗(yàn)碼
5)隨機(jī)數(shù)(這個(gè)字段用來(lái)避免文件重名)
18. 為什么生成的token驗(yàn)證無(wú)法通過(guò)?
出現(xiàn)這樣的問(wèn)題,請(qǐng)進(jìn)行如下兩項(xiàng)檢查:
1)確認(rèn)調(diào)用token生成函數(shù),傳遞的文件ID中沒有包含group name。傳遞的文件ID格式形如:M00/00/1B/wKgnVE84utyOG9hEAAATz5-S0SI99.java
2)確認(rèn)服務(wù)器時(shí)間基本是一致的,注意服務(wù)器時(shí)間不能相差太多,不要相差到分鐘級(jí)別。
19. 最新程序包的下載地址是什么?
直接在github下載最新tag即可。github地址:https://github.com/happyfish100/fastdfs
20. FastDFS支持?jǐn)帱c(diǎn)續(xù)傳嗎?
可以支持。先上傳appender類型的文件,然后使用apend函數(shù)。
如果要實(shí)現(xiàn)多線程并發(fā)上傳同一個(gè)大文件,可以先上傳一個(gè)內(nèi)容為空的appender類型文件,然后調(diào)用 truncate設(shè)置文件大小,在多線程中調(diào)用 modify上傳文件內(nèi)容。
21. 客戶端連接為什么被踢掉了?
tracker server或storage server出現(xiàn)類似錯(cuò)誤:
[2017-08-21 15:47:24] ERROR - file: tracker_nio.c, line: 213, client ip: 192.168.1.168, recv timeout, recv offset: 0, expect length: 0
表示客戶端和sever建立連接后沒有發(fā)送任何請(qǐng)求,idle時(shí)間超過(guò)network timeout該連接就會(huì)被踢掉。
|
|