先到官網下載伺服器主程式. 依照你自己的系統選擇. 以下以Win XP為範例. 下載eserver-17.10.i686-win32.exe 解壓縮到任意資料夾. 自己建立一個檔名為 donkey.ini 的檔案. 內容如下: [server] verbose=false name=Uason's Test Server desc=P4 2.4G 2G RAM 18G HDD XDSL public=false thisIP=xxx.xxx.xxx.xxx (你的IP位址) port=3210 seedIP=xxx.xxx.xxx.xxx (你的IP位址) seedPort=3210 maxClients=50 minVersion=60 maxVersion=61 tableSize=2333 threads=10 type=substring logFile=true keywordSearch=true welcome[0]=歡迎登入測試伺服器 [server] 這個啟動控制程序。它必須被寫在方括號裡。在最後的那個方括號後面沒有空格,這一點非常重要。沒設的話這將使伺服器無法動作 ! name=TheDonkeyNetwork 伺服器的名字,就像你在客戶端看見的那個。你可以用任何你想用的的文字數字組合。 desc=P4 2.4G 1G RAM, 512 ADSL 伺服器描述信息,跟「name=」格式是一樣的。可以用任何文字。 thisIP=xxx.xxx.xxx.xxx (你的IP位址) 請注意大小寫!(IP「xxx.xxx.xxx.xxx」只是個例子而已)。這將告訴伺服器你自己的公開的IP。啟動伺服器後會把它工作的IP顯示出來並發送到其他的伺服器。請注意程序開始時所顯示的IP,它必須是你真正的實際的IP(如不知自己IP多少可參考我的簽名檔)。大多數的錯誤設置都是由這個設置所引起的。你必須用「thisIP=xxx.xxx.xxx.xxx」這樣的格式寫到文件裡去。你必須寫數字格式的IP地址,像xyz.dyndns.org這樣的網址格式是不行的,因為伺服器沒法解析DNS。 port=4661 在這裡你要指定可以跟伺服器建立聯繫的port。預設值是TCP:4661,如果你想用其他 port 可以自行設定。 seedIP=xxx.xxx.xxx.xxx (你的IP位址) 注意大小寫!(IP地址「xxx.xxx.xxx.xxx」只是個例子而已) 這一項,就像名字示意的那樣,是指伺服器從哪裡連接到網絡其他部分,它應該一直代表一個伺服器,這樣你的伺服器才能夠找到它 ——它是你的伺服器首先建立連上的那個服務器…… 首先,你的伺服器發送自身的IP和port——然後他就會獲得種子伺服器所知道的所有的IP。這些IP被寫到數據裡——在關機以後,這個數據會寫到「serverList.met」。 seedPort=4661 注意大小寫! 如果「種子伺服器(Seed-Server)」的port不同於預設的TCP:4661,這裡就必須指定。大部分服務器(90%)使用4661端口——當然如果在你的服務器有一份實際的serverList.met的話,你可以把該項修改…… 「seedPort」的預設值是4661 logFile=true/false 注意大小寫! 你可以把日誌寫到Log紀錄檔裡,而不是把它們顯示出來——這也就是說把顯示輸出關閉掉——這樣的話伺服器不會在銀幕上顯示任何輸出! 「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」預設值「false」——為不公開的伺服器. (如果你不把它告訴別人的話會沒有人知道.不過好像較安全) threads=5 這個項目定義能夠同事處理的任務的數目。多任務操作系統,比如Linux,Windows 2000或者XP可以安排交互的不同的任務以及資源,比如內存和處理器時間。這個工作進行得很快,看起來好像任務都是同時進行的一樣。就像所有的「諾曼機器」的情形一樣,因為PC處理命令都是串行的,所以這個同時處理實際上只是看起來像而已,因為速度很快所以感覺不出來。由於工作的交互進行性,「老」任務的數據必須被寫到緩衝區去,新線程的數據必須從緩衝區或從主記憶體中讀取出來,每次任務交互都需要時間。 我的經驗表明,線程數目太高的話會帶來不利。每個線程,即使它並不工作,也需要佔用CPU時間以及一定內存。如果你的伺服器工作於1000客戶,我建議你把線程(thread)數量設置為5。這個數量決不應該高於「30」(如果你的電腦<1GHz):你的電腦會明顯地慢下來,並浪費許多記憶體。為什麼官方站點上的ini文檔說應該設置為5(!)線程/100客戶對我來講是個迷——這就是2000客戶100線程——伺服器永遠不會需要那麼多!如果你有個很快的PC,你可以試試能不能運行多於30線程——這樣做也許可以提升性能。 tableSize=2333 注意大小寫! 這裡的table就是包含了文件名和客戶的數據庫。這一定是一個素數。其技術背景(快速搜索次序)就不深入探討了。在預設的ini文件裡這個值是「2333」——這實際就是一個素數。我試了試用其他的素數,結果沒有任何不同。像我一樣設置它算了:「tablesize=2333」,自己計算浪費時間。伺服器沒有「tableSize」條目也可以工作。 maxClients=1500 注意大小寫! 這裡是多少客戶可以同時連接到伺服器的數目。如果「maxClient(最大客戶數目)」——達到了峰值時,客戶端在嘗試連接到該伺服器的的時候會出現「Can´t connect to...(無法連接到……)」這樣的信息。 你必須試試才能知道你的伺服器的最佳值——如果太低了,那麼你就浪費了資源,如果太高則可能會發生丟包現象,伺服器的反應變得非常遲鈍,甚至根本不響應客戶請求。其次,ping的時間會變得很高,搜索請求會變得很高,記憶體會被回寫到硬碟上(使用虛擬記憶體)等等。你可以通過在客戶端——服務端狀態窗口裡比較不同服務器之間的ping值來檢查這一點。你還要計算出為峰值情況做的足夠的資源保留應該是多少,當有許多很消耗資源的請求(比如說,在週末的時候,用戶感覺無聊,所以就隨便亂按幾下他們客戶端上的按鈕;-))以及許多數據被寫到索引表時——數據的大小對所需的內存有著直接的影響。如果你的機器開始「swap(交換)」——把數據寫到硬碟上去,這個動作會使電腦發出硬碟寫入的聲音——你應該考慮減小最大用戶數量。當然你的網絡連接必須足夠可靠。你應該把「maxClient(最大用戶數)」 設到一個不會使平均CPU使用率超過50%的位置——如果你使用「type=key」,你可以使之達到70%。 如果你的服務器滿載,並且你注意到在「vs」(View Servers,察看服務器)上的可用服務器數目在減少時,你已經有了大量的丟包情況。這使得你的服務器幾乎變得完全沒有價值。客戶在跟你連接的時候只能得到少數幾個服務器的IP,因為他們找不到文件,而搜索請求花的時間又很長。 如果是這種情況,你應該檢查一下,你的伺服器是否有足夠的記憶體,CPU是否太慢,可用頻寬是否太小了一點。關於這個參數的所有問題,最好是用的監視工具,來監視CPU和記憶體使用量。 type=key/substring (key 或者 substring) 注意大小寫! 在普通模式下平均CPU使用率達到50%的時候,會有性能峰值出現,這樣的情況可使機器在數秒鐘(甚至數分鐘)內 100%被佔用。這樣的峰值會導致上面所述的那種丟包情況出現。你可以通過啟用設置「type=key」來避免這一點。現在你可以把「maxClient」設置到這樣一個值:當伺服器滿載時,平均CPU使用率大約是70%。此項預設值為「key」,也就是快速模式。 console=true/false 「console=true」這個值決定伺服器是否顯示畫面(命令行提示符)狀態下。 「console=false」當伺服器開始啟用並且你不想使用銀幕畫面的時候,可以這樣設置。 minVersion=60 注意大小寫! 這定義低於v.60的版本不能連接到伺服器。當有客戶端軟體的更新版本出現時,改改這個值是有用的,如果沒有設置「minVersion」值的話,所有版本的客戶端都會被服務器接受。 maxVersion=61 注意大小寫! 這定義了伺服器可接受的最大版本號。測試版的客戶端程序往往有一個很高的值(比如1060)——因此這個值應該留為空白,否則的話你得常常更新這個值並且很容易忘記——正在測試新客戶端的用戶就被請出去了…… 如果「maxVersion」沒有被設置的話,任何高於「minVersion」的版本均會被接受。 welcome[0]=Welcome to TheDonkeyNetwork welcome[1]=share your Files and your upload Bandwith 這是歡迎信息,在登陸到服務器時被顯示出來。你要注意,這裡面的數字是變化的。歡迎信息不用設太長,否則的話它將浪費一些頻寬——每個字母1字節!當出現1000客戶時,平均每分鐘會有5-50個連接…… 一個完整的沒問題的donkey.ini文件看起來像這樣: [server] verbose=false name=Uason's Test Server desc=P4 2.4G 2G RAM 18G HDD XDSL public=false thisIP=xxx.xxx.xxx.xxx (你的IP位址) port=3210 seedIP=xxx.xxx.xxx.xxx (你的IP位址) seedPort=3210 maxClients=50 minVersion=60 maxVersion=61 tableSize=2333 threads=10 type=substring logFile=true keywordSearch=true welcome[0]=歡迎登入測試伺服器 ====================================================================== 加入ipfilter.dat 及 ip-to-country.csv過濾IP 放到伺服器同依各資料夾內. 新版Ipfilter_fakes/ipfilter.dat下載 新版ip-to-country.csv下載 如有相關問題請一並在此發問. [uason 在 2006-8-10 04:59 PM 作了最後編輯]