Java 多线程编程:原理、实现与挑战
1. 早期网络服务器面临的问题
在 20 世纪 90 年代初,互联网还没有 Web、HTTP 和图形浏览器,主要使用 Usenet 新闻、FTP 和命令行界面。当时,从热门 FTP 站点下载软件时,经常会遇到服务器繁忙的错误信息,例如:
% ftp eunl.java.sun.com
Connected to eunl.javasoft.com.
220 softwarenl FTP server (wu-2.4.2-academ[BETA - 16]+opie-2.32(1) 981105) ready.
Name (eunl.java.sun.com:elharo): anonymous
530-
530- Server is busy. Please try again later or try one of our other
530- ftp servers at ftp.java.sun.com. Thank you.
530-
530 User anonymous access denied.
Login failed.
这是因为当时的 FTP 服务器(包括大多数 Unix 自带的和第三方的,如 wu - ftpd)为每个连接创建一个新进程。例如,100 个并发用户就意味着要处理 100 个额外的进程。由于进程是比较重量级的,过多的进程会迅速使服务器不堪重负。问题不在于机器性能或网络速度不够,而是 FTP 服务器的实现不佳。如果每个连接不需要创建新进程,就可以服务更多的并发用户。
早期的 Web 服务器也存
超级会员免费看
订阅专栏 解锁全文

1907

被折叠的 条评论
为什么被折叠?



