旧笔记本电脑作为服务器
善于利用资源的人可以使用旧台式机作为某种服务器,但他们也可能有一台旧笔记本电脑闲置积灰。尽管当今的大多数桌面环境软件在这些旧笔记本电脑上运行速度太慢,但您可能还不想扔掉您的旧笔记本电脑。这些被淘汰的设备不仅可以轻松转换为低功耗服务器,还可以转换为移动 VoIP 和 Web 服务器。
让我们从这个角度看看三个 Linux 发行版,并测试两个不同的 Web 服务器。本文中使用的旧笔记本电脑是一台戴尔 Latitude,配备 1.0GHz Intel Pentium III Mobile CPU 和 256MB 内存。请记住,Web 2.0 软件对于这些旧的淘汰设备来说可能太过分了。因此,如果您需要提供最新最炫的内容,最好购买一台新的台式电脑。我在每个 Linux 发行版上使用和测试的服务器配置是 Apache 1.3.34、Lighttpd 1.4.13、PHP 5 和 MySQL Server 5。
Xubuntu 是一个官方的 Ubuntu 发行版,专为旧系统或慢速系统设计。它与 Ubuntu 的主要区别在于 Xubuntu 使用 Xfce 窗口管理器而不是 GNOME。无 X 的 Ubuntu 或 Kubuntu 安装应该具有与无 X 的 Xubuntu 相同的性能结果。在 X 运行的情况下,Xubuntu 至少需要 128MB 内存,但无 X 的 Xubuntu Alternate CD 的最低要求是 64MB 内存。它使用 Ubuntu 存储库,其中充满了几乎可以满足每个系统管理员需求的程序。我使用以下命令安装了 Apache 1.3 和 Lighttpd 1.4、MySQL Server 5 和 PHP 5:apt-get install apache lighttpd和apt-get install mysql-server-5.0 php5。由于某种原因,我必须安装 Apache 2.0(及其所有依赖项)才能使 PHP 与 Apache 1.3 一起工作。在使其工作后,我卸载了 Apache 2.0。
在配置 Apache 和 Lighttpd 之后,我通过 100Mb 以太网连接,使用 Siege(一种基准测试和 HTTP 回归测试实用程序)对 Web 服务器进行了压力测试。它旨在让 Web 开发人员衡量其代码和服务器的性能,以了解服务器在 Internet 上高负载下的运行情况。Siege 支持基本身份验证、HTTP 和 HTTPS 协议,甚至 cookie。此实用程序允许系统管理员使用并发且可配置数量的模拟用户来冲击其 Web 服务器。
我使用 dd 生成了一个 5KB 文件,并使用以下命令运行了压力测试:siege 192.168.1.179/5kb -c10 -r10在一台相当新的计算机上,模拟十个客户端每秒刷新十次(相当重的负载)。为了提高结果,我关闭了所有不需要的服务,包括 Xorg、Samba、FTP 服务器和 IRC 服务器。如果您使用 -b 命令行参数运行 Siege,它将在没有任何延迟的情况下运行测试以进行吞吐量基准测试。这意味着服务器一次接收所有点击(但这并不是一个非常现实的场景)。如果没有 -b 标志,Siege 将以至少一秒的延迟调用每个模拟用户。表 1 显示了 Apache 1.3 和 Lighttpd 1.4.13 之间的性能差异。
表 1. Xubuntu 上 Apache 1.3 和 Lighttpd 1.4.13 在 5KB 文件下的性能差异
十个客户端,每秒十次点击,5KB 文件 | Apache 1.3 | Lighttpd 1.4.13 |
---|---|---|
经过时间 | 9 秒 | 8 秒 |
数据传输 | 0.2MB | 0.35MB |
服务器响应时间 | 0.06 秒 | 0.00 秒 |
事务率 | 11.00 事务/秒 | 12.5 事务/秒 |
吞吐量 | 0.02MB/秒 | 0.04MB/秒 |
并发 | 0.7 | 0.02 |
最长事务 | 3.00 秒 | 0.04 秒 |
最短事务 | 0.00 秒 | 0.00 秒 |
在 Xubuntu 7.04 上执行的测试(表 1)表明,事务率很高,最短传输时间约为一毫秒或更短。(Siege 无法计算低于一毫秒的任何值。)这主要是因为我的网络仅由 20 英尺的电缆组成。根据您的连接,通过 Internet 进行测试将显示比本地网络更大的延迟。根据 Siege 手册页,并发是同时连接的平均数。当数量增加时,服务器性能会下降,尤其是在较慢的硬件上。
表 2. Xubuntu 上 Apache 1.3 和 Lighttpd 1.4.13 在 1MB 文件下的性能差异
十个客户端,每秒十次点击,1MB 文件 | Apache 1.3 | Lighttpd 1.4.13 |
---|---|---|
经过时间 | 12 秒 | 12 秒 |
数据传输 | 108.41MB | 108.40MB |
服务器响应时间 | 0.5 秒 | 0.4 秒 |
事务率 | 8.3 事务/秒 | 8.2 事务/秒 |
吞吐量 | 9.0MB/秒 | 8.9MB/秒 |
并发 | 4.3 | 3.5 |
最长事务 | 1.30 秒 | 0.75 秒 |
最短事务 | 0.1 秒 | 0.1 秒 |
在 1MB 文件上执行的测试(表 2)表明,在高负载下,Lighttpd 1.4.13 在处理较小的文件(例如没有任何图片的博客文章)时性能最佳。但是,性能仍然高于 Apache 处理 5KB 文件时的性能。有趣的是,负载越重,Apache 的性能越好。对 5MB 文件在 50 个客户端,每秒十个连接的非常重负载下进行的测试结果显示,响应时间比 Lighttpd 高 0.1 秒,吞吐量比 Lighttpd 高 0.1MB/秒。尽管如此,Lighttpd 的事务时间仍然比 Apache 短四秒。
在 Xubuntu 上,Lighttpd 是静态文档性能最快的服务器,尽管 Apache 紧随其后。为了在 Xubuntu 中获得最佳结果,请关闭所有不需要的服务,这样如果服务器负载很重,它将有更多资源来提高速度。我发现 Xubuntu 非常快速且易于运行,但还有其他发行版需要考虑,例如 Vector Linux。
Vector Linux 是另一个针对较慢系统优化的发行版。它基于 Slackware 11,但与 Slackware 不同,Vector 致力于保留非常旧硬件的旧版驱动程序。它的论坛积极支持被认为过时的设备用户。即使该发行版的重点是桌面环境,它也用于软件开发和 Web 服务。
Vector Linux 默认带有 Slapt-get,这是一种用于基于 Slackware 系统的类似 apt 的软件包管理器。它与 linuxpackages.net 上的大多数 Slackware 软件包非常兼容,因此安装 Web 服务器软件非常简单。我无法从 Linux Packages 获取软件包列表(在撰写本文时),因此我放弃了并从头开始编译了 Apache、Lighttpd、PHP 和 MySQL。我从 Xubuntu 复制了 Apache 和 Lighttpd 配置文件,并确保一切正常运行。然后,我启动了 Siege 并对其进行了压力测试。
表 3. Vector Linux 上 Apache 1.3 和 Lighttpd 1.4.13 在 5KB 文件下的性能差异
十个客户端,每秒十次点击,5KB 文件 | Apache 1.3 | Lighttpd 1.4.13 |
---|---|---|
经过时间 | 9 秒 | 7 秒 |
数据传输 | 0.49MB | 0.49MB |
服务器响应时间 | 0.09 秒 | 0.00 秒 |
事务率 | 11 事务/秒 | 14.2 事务/秒 |
吞吐量 | 0.05MB/秒 | 0.07MB/秒 |
并发 | 1.00 | 0.02 |
最长事务 | 3.00 秒 | 0.01 秒 |
最短事务 | 0.00 秒 | 0.00 秒 |
与 Xubuntu 的结果类似,Lighttpd 在 Vector Linux 上也是速度的明显领先者(表 3)。在 Vector Linux 上,Lighttpd 的事务率明显高于 Apache,并且 Apache 的最长事务实际上比 Lighttpd 慢了三秒!Lighttpd 的吞吐量仅比 Apache 略高,并且并发性低得惊人。当 Lighttpd 处理 1MB 文件时,这种速度差距会缩小。就像使用 Xubuntu 一样,您应该关闭 Vector Linux 中所有不需要的服务,甚至包括 cron 作业,以获得最佳性能。
表 4. Vector Linux 上 Apache 1.3 和 Lighttpd 1.4.13 在 1MB 文件下的性能差异
十个客户端,每秒十次点击,1MB 文件 | Apache 1.3 | Lighttpd 1.4.13 |
---|---|---|
经过时间 | 11 秒 | 10 秒 |
数据传输 | 97.67MB | 97.67MB |
服务器响应时间 | 0.4 秒 | 0.3 秒 |
事务率 | 9.1 事务/秒 | 10 事务/秒 |
吞吐量 | 8.9MB/秒 | 9.7MB/秒 |
并发 | 3.59 | 3.21 |
最长事务 | 0.63 秒 | 0.65 秒 |
最短事务 | 0.08 秒 | 0.08 秒 |
Vector Linux 上的 Lighttpd 是静态文档性能最快的服务器(表 4)。Apache 的结果也不错。对 5MB 文件在 50 个客户端,每秒十个连接的相当重负载下进行的测试结果也表明,Apache 的平均响应时间比 Lighttpd 快约 150 毫秒。Lighttpd 和 Apache 的事务率和吞吐量几乎相同,但 Lighttpd 的并发性高于 Apache。有趣的是,Lighttpd 的最长事务时间比 Apache 短了整整十秒!
Slackware 通常以其几乎传奇般的服务器质量而闻名,而 Vector Linux 似乎也达到了这个水平。但是,当您进一步缩小尺寸时会发生什么呢?例如,小到 50MB 的 Damn Small Linux?
Damn Small Linux (DSL) 以其体积小巧和在较慢系统上运行良好而闻名。它还具有 apt 软件包管理器。使用正确的 apt 存储库,您实际上可以将 DSL 变成一个成熟的发行版!它旨在在非常旧的硬件上运行,包括 386、486、奔腾、奔腾 II、奔腾 III 和较旧的 AMD 同等产品等处理器。与 Vector Linux 和 Xubuntu 不同,DSL 使用“经典”的 2.4 Linux 内核和 BusyBox,而不是 2.6 内核和 GNU 实用程序。与 Knoppix 一样,它旨在从 Live CD(或 USB 拇指驱动器)运行,但它也可以作为出色的桌面操作系统—如果您不介意使用常用软件的旧版本。
DSL 在 Web 浏览和音乐播放之外的任何方面都有些受限。要将 DSL 用作服务器操作系统,您需要通过在“系统”菜单中选择“应用程序”→“工具”→“升级到 GNU 实用程序”来安装 GNU 实用程序。这将使 DSL 系统更完全兼容 GNU。如果您计划使用 apt,您需要单击“系统”菜单中的“应用程序”→“工具”→“启用 Apt”。现在 GNU 实用程序已安装,您可以安装 Apache 或 Lighttpd。我建议从头开始编译所有内容—PHP、MySQL 和 http 服务器。尽管这需要一些时间和精力,但它远不如尝试通过 apt 或 MyDSL(Damn Small Linux 自己的简陋软件包系统)使一切正常工作复杂。通过从源代码编译 Web 软件,您还可以完全控制功能。
对于那些不需要或不想要 Apache 1.3 的人,XAMPP 项目有一个完全配置和工作正常的独立 Apache 2、MySQL 和 PHP 二进制软件包,可以安装在系统上的任何位置。
表 5. DSL 上 Apache 1.3 和 Lighttpd 1.4.13 在 5KB 文件下的性能差异
十个客户端,每秒十次点击,5KB 文件 | Apache 1.3 | Lighttpd 1.4.13 |
---|---|---|
经过时间 | 7 秒 | 10 秒 |
数据传输 | 0.49MB | 0.49MB |
服务器响应时间 | 0.00 秒 | 0.09 秒 |
事务率 | 14.2 事务/秒 | 10 事务/秒 |
吞吐量 | 0.07MB/秒 | 0.05MB/秒 |
并发 | 0.02 | 0.90 |
最长事务 | 0.01 秒 | 3.00 秒 |
最短事务 | 0.00 秒 | 0.00 秒 |
Apache 和 Lighttpd 之间的速度差异非常明显(表 5);Apache 显然是两者中速度较快的。不过,我使用了 MyDSL 软件包管理器中的 Apache 软件包,该软件包可以针对旧系统进行优化。有趣的是,Apache 的事务率高于 Lighttpd。它的并发性也很低。尽管 Apache 明显比 Lighttpd 快,但笔记本电脑的硬件限制使任何 Web 服务器在处理高负载下的小文件时都很糟糕。但是,它可以在中等负载下为小型博客或 PHP、Perl、Ruby 和 Python 脚本提供服务,而不会过度负载。
尽管 Lighttpd 在第一次测试中看起来有些懈怠,但当它必须拉动负载时,它会有效地完成任务。
表 6. DSL 上 Apache 1.3 和 Lighttpd 1.4.13 在 1MB 文件下的性能差异
十个客户端,每秒十次点击,1MB 文件 | Apache 1.3 | Lighttpd 1.4.13 |
---|---|---|
经过时间 | 11.7 秒 | 10.8 秒 |
数据传输 | 97.66MB | 97.66MB |
服务器响应时间 | 0.34 秒 | 0.35 秒 |
事务率 | 8.5 事务/秒 | 9.3 事务/秒 |
吞吐量 | 8.3MB/秒 | 9MB/秒 |
并发 | 2.9 | 3.3 |
最长事务 | 0.70 秒 | 0.65 秒 |
最短事务 | 0.08 秒 | 0.08 秒 |
测试结果表明(表 6),Lighttpd 迅速恢复了其相对于 Apache 的惯常速度。Lighttpd 的平均响应时间仅比 Apache 快一小部分,但事务率几乎比 Apache 高一兆字节/秒。但是,Lighttpd 的并发性更高,但这在我运行 50 个客户端每秒连接十次的测试时并没有造成问题,因为 Lighttpd 仍然更快。在 5MB 文件上运行此测试返回了非常令人失望的结果。Apache 的最长事务时间最短,但在吞吐量和事务率方面与 Lighttpd 相同。
总的来说,DSL 是本文测试的三个发行版中最小的。当使用 Apache/Lighttpd、GNU 和其他服务器实用程序进行扩展时,使用的磁盘空间小于 100MB。总的来说,Damn Small Linux 上的 Lighttpd 和 Apache 在几乎所有方面都打成平手。您会注意到在关闭 X 的情况下速度会略有提高,尽管提升不大,但您可能仍然希望关闭所有不需要的服务。在宽带普及的今天,即使四分之一秒也可能太慢。Damn Small Linux 似乎是一个用作服务器操作系统的奇怪发行版,但实际上没有理由不能将其用作服务器操作系统—它只是少数几个积极开发的,使用 2.4 Linux 的发行版之一。与所有发行版一样,DSL 也需要进行调整,以便您可以充分利用它。
配置是服务器的一切。为了从您的服务器中榨取更多速度,您需要根据您的需求对其进行配置。关闭所有您不打算使用的服务器模块。Apache 将一次可以连接到服务器的用户数限制为大约 5,000 个客户端。对于像本文中使用的笔记本电脑这样容量有限的笔记本电脑,您很可能希望将其降低到 500–1,000 个客户端,具体取决于您将要提供的内容类型。为了获得最佳结果,如果有必要,请通过从源代码重新编译来消除 SQL Server 和 PHP、Python、Ruby 或 Perl 等语言中不需要的功能。
SQL 服务器可能是资源消耗大户,因此如果您想从计算机中提取最快的速度,则应根据您的需求配置 SQL Server。PostgreSQL 和 MySQL 在其网站上都有关于速度优化的页面(请参阅“资源”)。除了用作 Web 服务器外,旧笔记本电脑也是出色的 Voice-over-IP 服务器。
TeamSpeak 是一种专有的 VoIP 软件,其工作方式类似于电话会议。与 IRC 类似,用户连接到 TeamSpeak 服务器并加入不同的聊天频道。它的主要目标受众是游戏玩家,但它也可用于会议和讨论或只是聊天。与 Asterisk 不同,TeamSpeak 专为联网计算机到计算机的语音通话而设计,它不与 SIP 协议或任何类型的电话交互。它与 IRC 有相似之处,例如频道管理员、受保护的频道和语音频道。TeamSpeak 可以为客户端提供各种能力和权限,范围从控制服务器或频道运行方式的服务器管理员到没有任何权限且只能聊天的匿名用户。
TeamSpeak 网站解释说,当前的游戏通信服务(例如 Roger Wilco 或 Microsoft 的 GameVoice)未能满足创建者的需求。这些服务的一些主要问题是缺乏 Linux 兼容性以及高带宽利用率和路由器的问题。但是,TeamSpeak 服务器的系统要求出奇地低—最低 32MB 内存和 100MHz CPU。通过在笔记本电脑上使用 TeamSpeak,您可以举办 LAN 派对,并在房屋之间移动以改善团队沟通,同时玩 Warsow、Tremulous 甚至控制台游戏等游戏。另一种可能性是在某人家中与几个人会面,并通过 Internet 与地球上其他几个人举行会议。
在 Xubuntu、Vector Linux 和 DSL 上安装 TeamSpeak 非常容易。我从其网站下载了服务器,但遇到了一些依赖性问题。然后,我在该网站上偶然发现了一个操作指南,该指南为我提供了一个 FTP 站点上版本的链接,并包含依赖项。
在开源世界中,存在无数选择。本文中执行的测试涵盖了在三个不同的 Linux 发行版上运行的两个不同 Web 服务器上的不同文件大小。
1MB 文件测试的获胜者是 Vector Linux 上的 Lighttpd。事务率平均为每秒十个事务,吞吐量为每秒 9.7MB。Damn Small Linux 位居第二,平均每秒 9.3 个事务,吞吐量为每秒 9MB。
5KB 文件的竞争导致 DSL 上的 Apache 和 Vector Linux 上的 Lighttpd 之间打成平手。Lighttpd 和 Apache 在 Vector Linux 和 DSL 上分别具有平均每秒 14.2 个事务的事务率。DSL 上的 Apache 的吞吐量与 Vector Linux 上的 Lighttpd 的吞吐量相同,均为每秒 0.07MB。
因此,考虑到所有不同的选项和服务器,做出选择归结为三个标准:您的机器、您的需求和您的能力。当谈到服务器时,Apache 是一只 800 磅重的大猩猩,几乎可以做任何事情。它通过各种模块进行扩展的能力使其成为市场上最常见的 Web 服务器。如果您不希望在笔记本电脑上为 Web 开发人员运行托管服务,那么 Lighttpd 的更小尺寸和简单性可能会满足您的需求。当谈到 Linux 发行版时,需要考虑的三个因素是大小、简单性和速度。如果您追求速度,请探索 Vector Linux。如果易用性和简单性是您的首要任务,请尝试 Xubuntu。如果空间是一个问题,请考虑 Damn Small Linux。
如果您想要最快的 Web 服务器,而且还是移动的,请将 TeamSpeak 与 Vector Linux 上的 Lighttpd 结合使用。如果您想显示 LAN 派对得分结果,或者在与世界任何地方的队友保持通信的同时提供图片和短视频,或者如果您想与全球各地的一些人建立一个中央会议场所和 wiki 或内容管理系统,那么 Lighttpd、TeamSpeak 和 Vector Linux 非常适合这项工作。
即使它们的硬件速度较慢,旧笔记本电脑绝对可以代替台式机使用—只要您不期望非常重的负载即可。确定您在发行版中对速度、简单性和大小的优先级;然后在服务器中确定简单性或速度的优先级;最后,在 VoIP 中确定简单性、经济性和速度的优先级。复活您的旧笔记本电脑,吹掉灰尘,赋予它新的生命意义。
资源
JoeDog 的 Siege: www.joedog.org/JoeDog/Siege
“PostreSQL 性能 5 分钟入门”: www.westnet.com/~gsmith/content/postgresql/pg-5minute.htm
优化 MySQL 服务器: dev.mysql.com/doc/refman/5.0/en/optimizing-the-server.html
使用源发行版安装 MySQL: dev.mysql.com/doc/refman/5.0/en/installing-source.html
构建 LAMP 服务器,作者:Bruce Timberlake: lamphowto.com
Ubuntu 团队 Wiki: https://wiki.ubuntu.com
Apache HTTP 服务器版本 1.3: httpd.apache.org/docs/1.3
Lighttpd: trac.lighttpd.net/trac/wiki/Docs
XAMPP: www.apachefriends.org/en/xampp.html
教程:在 Linux 上设置 TeamSpeak 2 服务器: www.teamspeak.com/index.php?page=tutorial_b
Joseph Quigley 是一名 Linux 用户,已有三年时间。他喜欢摆弄不同的 Linux 发行版并探索新的编程语言。