天天看點

Emule伺服器與設定

大家好,又見面了,我是你們的朋友全棧君。Emule伺服器與設定

2004-02-09 LifeNT lifent.5i6.net 點選: 3614

Emule伺服器與設定

服務氣端下載下傳連結:

http://lugdunum2k.free.fr/kiten.html

donkey.ini檔案的配置

這是核心部分:電驢伺服器的每一個變量都被寫在這個檔案裡。dserver開始運作時會讀這個檔案。如果你改變了什麼東西那麼隻有再次啟動程式的時候才會被發現。非常重要:伺服器軟體沒法接受文法錯誤(書寫時的錯誤)。伺服器不能明白某個指令,它就不會工作,或者它會忽略寫得不對的指令(以及後面的任何東西)。大小寫也是非常重要的。所有單獨條目均不能有注釋。

[server]

這個指令啟動控制程序。它必須被寫在方括号裡。在最後的那個方括号後面沒有空格,這一點非常重要。否則的話這将使伺服器無法了解 ——也許它沒法工作了。接下來的條目隻是例子而已!

name=TheDonkeyNetwork

伺服器的名字,就象你在用戶端看見的那個。你可以用任何你想用的的文字數字組合。

desc=Celeron 366, 320MB RAM, Cable

伺服器描述資訊,跟“name=”格式是一樣的。可以用任何文字。

thisIP=217.74.93.105

請注意大小寫!(IP“217.74.93.105”隻是個例子而已)。這将告訴伺服器你自己的,公開的(!!!)IP。程式開始時,伺服器會把它工作的IP列印出來并發送到其他的伺服器。請注意程式開始時所顯示的IP,它是你目前真正的,公開的IP。大多數的錯誤設定都是由這個設定所引起的。你必須用“thisIP=xxx.xxx.xxx.xxx”這樣的格式寫到檔案裡去。不幸的是,你必須寫數字格式的IP位址,象xyz.dyndns.org這樣的字母格式的條目是不行的,因為伺服器沒法解析DNS。下面有些給動态IP用的腳本,可以自動更新這個條目,這樣你就不必天天都來編輯你的IP了。如果你把這個條目空着不寫,伺服器會嘗試找到它自己的IP,不過大部分情況下都會失敗:是以每次開始運作都檢查一下!

port=4711

在這裡你要指定可以跟伺服器建立聯系的端口号。一般情況下這個端口是TCP:4661,如果你想用4661,那麼這個條目可以空着。如果由于某些技術原因該端口不可用的話,你可以用其他的端口。當然如果是這樣的話你就得給出這個條目了——如果可能的話,就用4661端口,否則話可能會引起混亂。 “port=” 預設是TCP:4661

seedIP=217.74.93.105

注意大小寫!(IP位址“217.74.93.105”隻是個例子而已)

這一項,就象名字示意的那樣,是指伺服器從哪裡連接配接到網絡其他部分,它應該一直代表一個伺服器,這樣你的伺服器才能夠找到它 ——它是你的伺服器首先建立連上的那個伺服器…… 首先,你的伺服器發送自身的IP位址和端口号——然後他就會獲得種子伺服器所知道的所有的IP位址。這些位址被寫到資料庫裡——在關機以後,這個資料庫被寫到硬碟上,名字叫做“serverList.met”。下次啟動的時候,種子IP(seedIP)就不再需要了,因為伺服器已經在它的serverList.met裡面有了很多的伺服器IP了——但是被寫到seedIP條目裡的伺服器在本地伺服器開始運作的時候必須是工作良好的。如果在這個IP下沒有可用的電驢伺服器,你的伺服器就不能工作了。隻能用數字形式的條目,字母形式的諸如“xyz.dyndns.org”這樣的URL是不行的(在目前的開發狀态下)…… 如果你在硬碟相同目錄下有一個很新的“serverList.met”的話你可以把這個條目留為空白。如果你的伺服器在幾天内均處于離線狀态,那麼有可能這時候的serverList.met中的全部伺服器IP都不能用了,結果伺服器就沒法連接配接到網絡了。如果是這種情況,你應該從網上得到一份實際的server.met……

我建議把這個條目留白,取而代之是在伺服器所在檔案夾放一份實際的serverList.met,因為這樣的話你在開始時就有了更多的“可用的”伺服器,這樣比隻知道一個IP保險一些——隻需從上面的連接配接那裡得到一份server.met并把它重命名為serverList.met即可……

seedPort=4711

注意大小寫!

如果“種子伺服器(Seed-Server)”的端口号不同于預設的TCP:4661,就必須有這個條目。大部分伺服器(90%)使用4661端口——當然如果在你的伺服器有一份實際的serverList.met的話,你可以把該條目留白…… “seedPort”的預設設定是4661

logFile=true/false

注意大小寫!

你可以把日志寫到硬碟裡,而不是把它們顯示出來——這也就是說把顯示輸出關閉掉——這樣的話伺服器不會在螢幕上顯示任何輸出! “true”表示“激活該功能”,“false”表示“關閉該功能”。如果你不想顯示輸出而想用日志檔案的話的話——寫true,否則寫false——請不要寫both(兩者都要),否則你的伺服器會發癫的,或者将引起你的電腦爆炸!! “logFile”的預設設定是“false”——關閉……

verbose=true/false

如果你想看所有的系統顯示的注意資訊,你應該把“verbose”激活(把它設成“true”)——一般來講如果所有的東西你都看看的話是很煩人的,因為“普通的”資訊顯示得太快了。不要感到驚訝:即使是“verbose=false”,伺服器仍然會打出“ERROR: unknown type MetaTag::MakeTag() 72”或者類似的資訊 ——别管它,伺服器會工作的。為什麼會顯示這個資訊呢?我不知道!總之别理它就行了…… “Verbose”預設是設成false——關閉……

public=true/false

這個條目決定了你的伺服器是否把自己的IP發送到其他伺服器去。把這個條目設定為“true”對網絡來講是非常重要的——否則的話沒有人會知道網絡上有你這個伺服器(如果你不把它告訴别人的話)。隻有設定為“public=true”你的伺服器才能夠登陸到網絡上去!

注意:“public”預設是設成“false”的——是以如果你想讓你的伺服器連接配接到其他伺服器的話,必須要有這個條目!

threads=5

這個條目定義能夠同僚處理的任務的數目。多任務作業系統,比如Linux,Windows 2000或者XP可以安排互動的不同的任務以及資源,比如記憶體和處理器時間。這個工作進行得很快,看起來好像任務都是同時進行的一樣。就象所有的“諾曼機器”的情形一樣,因為PC處理指令都是串行的,是以這個同時處理實際上隻是看起來象而已,因為速度很快是以感覺不出來。由于工作的互動進行性,“老”任務的資料必須被寫到緩沖區去,新線程的資料必須從緩沖區(或者更糟糕,從主記憶體中讀)中讀出來,每次任務互動都需要時間。

我的經驗表明,線程數目太高的話會帶來不利。每個線程,即使它并不工作,也需要占用CPU時間以及一定記憶體。如果你的伺服器工作于1000客戶,我建議你把線程(thread)數量設定為5。這個數量決不應該高于“30”(如果你的電腦<1GHz):你的電腦會明顯地慢下來,并毫無意義地失去許多記憶體。為什麼官方站點上的ini文檔說應該設定為5(!)線程/100客戶對我來講是個迷——這就是2000客戶100線程——伺服器永遠不會需要那麼多!如果你有個很快的PC(>1.5GHz),你可以試試能不能運作多于30線程——這樣做也許可以提升性能。

tableSize=3089

注意大小寫!

這裡的table就是包含了檔案名和客戶的資料庫。這一定是一個素數。其技術背景(快速搜尋次序)就不深入探讨了。這個值的大小看起來并沒有什麼太大差別。在預設的ini檔案裡這個值是“3089”——這實際就是一個素數。我試了試用其他的素數,結果沒有任何不同。象我一樣設定它算了:“tablesize=3089”,自己計算浪費時間。伺服器沒有“tableSize”條目也可以工作。

maxClients=1500

注意大小寫!

這裡是多少客戶可以同時連接配接到伺服器的數目。如果“maxClient(最大客戶數目)”——達到了峰值時,用戶端在嘗試連接配接到該伺服器的的時候會出現“Can′t connect to…(無法連接配接到……)”這樣的資訊。

你必須試試才能知道你的伺服器的最佳值——如果太低了,那麼你就浪費了資源,如果太高則可能會發生丢包現象,伺服器的反應變得非常遲鈍,甚至根本不響應客戶請求。其次,ping的時間會變得很高,搜尋請求會變得很高,記憶體會被擴充到硬碟上(使用虛拟記憶體)等等。你可以通過在用戶端——服務端狀态視窗裡比較不同伺服器之間的ping值來檢查這一點。你還要計算出為峰值情況做的足夠的資源保留應該是多少,當有許多很消耗資源的請求(比如說,在周末的時候,使用者感覺無聊,是以就随便亂按幾下他們用戶端上的按鈕;-))以及許多資料被寫到索引表時——資料的大小對所需的記憶體有着直接的影響。如果你的機器開始“swap(交換)”——把資料寫到硬碟上去,這個動作會使電腦發出隆隆的聲音——你應該考慮減小最大使用者數量。當然你的網絡連接配接必須足夠可靠。你應該把“maxClient(最大使用者數)” 設到一個不會使平均CPU使用率超過50%的位置——如果你使用“type=key”,你可以使之達到70%。

如果你的伺服器滿載,并且你注意到在“vs”(View Servers,察看伺服器)上的可用伺服器數目在減少時,你已經有了大量的丢包情況。這使得你的伺服器幾乎變得完全沒有價值。客戶在跟你連接配接的時候隻能得到少數幾個伺服器的IP,因為他們找不到檔案,而搜尋請求花的時間又很長。

如果是這種情況,你應該檢查一下,你的伺服器是否有足夠的記憶體,CPU是否太慢,可用帶寬是否太小了一點。關于這個參數的所有問題,有一些有用的監視工具,甚至在linux-bash下也有的(比如說,“TOP”可以監視CPU和記憶體使用量,“IPTRAF”可以監視帶寬使用情況)。一個借鑒:“Little Red Corvette(小紅巡洋艦)”這個伺服器有一個AMD K6 III 400MHz CPU(66MHz FSB, Intel TX),運作Linux,256MB記憶體,T-DSL(128/768kbit/s), .ini檔案設定是“type=key”。當有1000個客戶連接配接的時候CPU使用率達到20%-50%,記憶體使用量是180MB(在bash上,沒有KDE或者類似的東西)。 1300客戶的時候CPU使用率達到40%-100%,并且記憶體幾乎全部用完:230MB。不能夠正常負荷1500使用者,因為這時候CPU和記憶體使用量都已接近 100%,并且機器部分被阻塞。在另一方面,T-DSL在保證上傳資料流不擁擠的情況下,也沒法快到能給1300以上的使用者使用。我設定的是“maxClients=1000”,工作良好。

type=key/substring (key 或者 substring)

注意大小寫!

在詳細考慮之後,你可以轉換到v.38版本的搜尋程式。在普通模式下平均CPU使用率達到50%的時候,會有性能峰值出現,這樣的情況可使機器在數秒鐘(甚至數分鐘)内 100%被占用。這樣的峰值會導緻上面所述的那種丢包情況出現。你可以通過激活“type=key”來避免這一點。現在你可以把“maxClient”設定到這樣一個值:當伺服器滿載時,平均CPU使用率大約是70%。這時你将看到,峰值情況出現的很少,而且時間也短一些。“Little Red Corvette” 已經工作在“type=substring”,最多900使用者的情況下好多個月了,當設定成“type=key”時,它達到最大使用者。同樣的硬體,變成了1300使用者! “type”預設被設定成“key”,也就是快速模式。

console=true/false

這個值決定伺服器是否工作在控制台(指令行提示符)狀态下。當伺服器自動開始運作并且你不想使用“螢幕”指令的時候,這樣做還是有用的。

如果“console=true”的話,你就必須在控制台下運作伺服器,如果“console=false”則不必非要如此,但這時就不能用鍵盤給出任何指令了,并且不能顯示任何東西。嗯,其實這兩樣都不是必需的,但是我喜歡時不時察看一下它在幹什麼并加以控制,以及看看它知道多少可用的伺服器(敲“vs”)。 “console”預設是設定成“true”

minVersion=57

注意大小寫!

這定義低于v.57的版本不能連接配接到伺服器。當有用戶端軟體的更新版本出現時,改改這個值是有用的,但請注意當時的形勢,比如說,由于一個安全方面的bug,新版本v.61沒法支援ed2k-links,是以沒有很多使用者更新到它,還有linux的版本可能比windows版本老很多……

如果沒有設定“minVersion”值的話,所有版本的用戶端都會被伺服器接受。

maxVersion=58

注意大小寫!

這定義了伺服器可接受的最大版本号。測試版的用戶端程式往往有一個很高的值(比如1060)——是以這個值應該留為空白,否則的話你得常常更新這個值并且很容易忘記——正在測試新用戶端的使用者就被請出去了……:-(

如果“maxVersion”沒有被設定的話,任何高于“minVersion”的版本均會被接受。

welcome[0]=Welcome to TheDonkeyNetwork

welcome[1]=share your Files and your upload Bandwith

這是歡迎資訊,在登陸到伺服器時被顯示出來。你要注意,這裡面的數字是變化的。歡迎資訊不應該太長,否則的話它們将需要許多帶寬——每個字母1位元組!當出現1000客戶時,平均每分鐘會有5-50個連接配接……

一個完整的沒問題的donkey.ini檔案看起來像這樣(隻包含要求的東西——在伺服器所在檔案夾中有一個serverList.met,是以不需要seedIP條目):

[server]

name=TheDonkeyNetwork

desc=Celeron 366, 320MB RAM, Cable

thisIP=213.47.54.71

port=2000

verbose=false

public=true

threads=3

type=key

tableSize=3089

maxClients=500

keywordSearch=true

welcome[0]=Welcome on TheDonkeyNetwork

welcome[1]=***************************

welcome[2]=- Edonkey..Server –

welcome[3]=- share your Files and your upload Bandwith

當所有的條目都正确時,donkey.ini檔案會被儲存在伺服器所在檔案夾中,然後伺服器就可以啟動了。當然你必須連接配接到網際網路。3秒鐘後你可以試試敲“vs”來看看在serverList.met中列出的伺服器——如果在“WORKING”後面沒有IP則有些地方出了問題。

伺服器指令

Debugging

大多數情況下,剛開始的時候它不會如你所料地順利運作。有了這個文檔,希望将來情況可以好一點。如果在15秒後敲入“vs”沒有伺服器出現,試試這個:

1.donkey.ini檔案中有沒有文法上的拼寫錯誤(指令的拼寫)?注意大小寫。在linux下,你應該注意,donkey.ini必須用小寫書寫!

2.你用IP請求器(IP-Requester)核實的IP跟程式運作時出現的顯示的IP是否一緻?如果不同:把正确的IP敲到donkey.ini檔案中去——這是最常見的錯誤之一!

3.“seedIP”條目是否真的是一個電驢伺服器?試試用用戶端連接配接到這個IP。注意伺服器端口号是否一緻(如果相應的伺服器被選中的話,該端口号顯示在用戶端左下角的小視窗裡)

4.是否有具備網絡位址翻譯器(NAT/Masquerading)功能的路由器?如果有的話:把路由器的端口映射設定到TCP端口:4661,4662,4663和 UDP端口:4665!如果沒有UDP協定的話,伺服器無法工作。

在Windows XP下:注意,在預設狀态下端口過濾器是被設成關閉狀态的(點開始->設定->網絡——在寬帶接入或者叫做别的什麼名字的那裡輕按兩下——右鍵點選internet服務(PPoE協定)->特性->附加 ->設定,在“服務”下點選“添加”——在“端口”下激活4661,4662和4663的“TCP”端口,激活4665的“UDP”端口——重新啟動——完成(如果按鈕的對應名字的不正确的話,我感到抱歉,我不知道英文版本的XP是怎麼樣的——是以你在這裡得靠直覺 ;-))(譯注:本文原作者是德國人,在使用德文版winXP。國人也得靠直覺了:))。

5.在網際網路和伺服器之間是否有防火牆?如果是這種情況,跟上面一樣處理——命名的端口必須清除掉!(比如說,在“ZoneAlarm”中,“security”下,把兩個開關都設定到“Low”,但最好是重新安裝一下ZoneAlarm……)。

6.如果在Linux中用1015版本以下的用戶端連接配接到伺服器,不考慮可用資源,試一試“filedescriptor-command(檔案描述符指令)”: “ulimit -n 32000”。有了這個,也許可以容納多于5000使用者——如果你的機器可以支援這麼多人的話……;-) 這個指令必須在跟伺服器相同的控制台下使用,否則的話沒用!

7.如果在Win9x/ME下,使用者少于100人的話不要感到驚奇——這些作業系統不能支援更多人了! 8.如果在有100個客戶同時連接配接到伺服器的情況下,Win9x/ME無法打開任何網站,那是因為已經連接配接已經被占用完了——使用注則表更新檔,另外一個作業系統或者把“maxClients”減小一點吧……:-(

責任編輯: dash

DASH老大起家的玩意啊 :D ,從代序老大網站上找得,不過一些新特性還要自己琢磨。

釋出者:全棧程式員棧長,轉載請注明出處:https://javaforall.cn/148825.html原文連結:https://javaforall.cn