大家好,又见面了,我是你们的朋友全栈君。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 ,从代序老大网站上找得,不过一些新特性还要自己琢磨。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/148825.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...