作者u39132003 (欢迎学妹发问。)
标题[转录]Re: [讨论] PTT七万人了....@@
时间Mon Jun 4 02:35:58 2007
※ [本文转录自 u39132003 信箱]
作者: MichaelHsin (BBS之虫) 站内: Gossiping
标题: Re: [讨论] PTT七万人了....@@
时间: Mon Jun 4 02:27:31 2007
※ 引述《tonyhome (运功疗伤OGC)》之铭言:
: 理想来说
: 一个server最多只有65536个port
: 也就是说最多只能开放65536个人连线到ptt
: 很好奇ptt是怎麽容纳这麽多人的???
: 难道ptt有两个server???
: 还是有其他技术???
没有,因为一个 port 23 就可以服务很多人...
在 TCP spec 来看,理论上一个 port 可以接的 connection 是无上限,
但事实上每多接一个 connection,kernel 就得多吃掉一些资源来 maintain,
然後还有 userland 这边会吃掉的资源,所以实际上当然会有上限,但这个限制不是
TCP spec 给的。
: → tonyhome:只要是TCP 就会有一个listening port等待client的request 06/03 23:09
: → tonyhome:并且指派另外一个connection port维持server和client的 06/03 23:10
: → tonyhome:连线状态 偶臭了吗???偶臭了吗???偶臭了吗???偶臭了吗??? 06/03 23:10
错了,listening 到 accept 接起来的 port 当然都不会变。
我想你是跟 socket lib 的 socket descriptor 搞混了吧。
用 socket() 建出来的 fd,bind(), listen() 之後,accept() 接下一个 connection
时的确会给你一个新的 fd 代表这一个 connection,原本的 fd 继续拿去 accept()。
但这是 socket lib 的机制,fd 变了,connection 连的 port 还是一样。
复习一下 TCP connection establishment(也就是 three-way handshaking)吧。
---
怎麽办,这篇好像会被乡民说没八卦耶。
那来个八卦:
在很久很久以前,大约 1998 年或更早的时候,很多比较大的 BBS 站都遇到了总注册
人数(不是同时上线人数喔)到了三万多就上不去的问题,只好靠着砍很久没上站的人
或乾脆停止注册撑着,
原因是,这些站都遇到一个限制:子目录数的上限 32767。
在发生这件事之前,每注册一个使用者,系统都会开一个目录 ~bbs/home/username 来
放那个使用者的信件、签名档, etc.,但是一般档案系统的子目录数是有上限的。
(接下来这段看不懂就跳过吧)
我们都知道(真的吗? XD)vfs 里面每个 inode 都有个 link count,当它减为零时
代表可以被真正删除把空间释放出来,而每个目录刚建立时 link count 就是 2(上层
指向它一个,它里面的 . 又一个),在它里面多建一个子目录又会加一(因为它的子
目录里有一个 .. 指向它),所以有 n 个子目录 link count 就是 n+1(. 也当作子
目录)。而 FreeBSD UFS/FFS 的 link count 栏位只有 15 个 bit,也就是最大值只
能到 32767。
而目录里的档案并不会有 link 指回上层,所以理论上是无上限的。
当然,一个目录里的档案或子目录太多时,存取时间就会上升,所以一般(没有
directory hash 的时候)放了几万个档案你就会受不了了。
(技术细节结束)
怎麽解决呢?
很简单,就多开一层,~bbs/home/A/ 放 A 开头的使用者,~/bbs/home/B/ 放 B 开头
的,依此类推。
但是说的简单,当初 BBS 的 code 里面直接写死 access user home dir 的 code 到
处散布,bbs 主程式里面可能就有好几个地方要改,utils 里面又各写各的,於是苦命
的站长们就只好一一去翻出来改好 XD
就这样,大家又可以继续注册过着幸福(?)快乐(?)的日子了。
--
我覆盖一张好人卡,结束这个回合
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.30.55
1F:推 Assyla:不过注册问题其实都没啥在关心了吧,真正大的站就那几个 06/04 02:31
2F:→ Assyla:小站的人数不断流失,加上很多年轻人比较喜欢网页介面 06/04 02:32
3F:→ MichaelHsin:我说的是 1998 年以前的事了啊 XD 06/04 02:33
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.224.47.171