Linux 来救场:我如何向我的组织介绍 Linux

在一次非常公开的早期失败之后,一所大型大学的 IT 团队发现将其网络注册系统切换到 Linux 后,用户容量几乎增加了三倍。
484 位读者喜欢这篇文章。
Penguins gathered together in the Artic

Opensource.com

1998 年,我在明尼苏达大学为新的网络团队管理服务器管理小组。明尼苏达大学是一个非常庞大的机构,在所有校区拥有超过 60,000 名学生。在此之前,大学在老化的主机系统上管理其学生记录。但这一切即将改变。

主机系统不符合 Y2K 标准,因此我们正在努力建立由 PeopleSoft 交付的新学生记录系统。新系统对大学来说意义重大,不仅因为它使我们的记录系统现代化,还因为它提供了新功能。然而,它缺少一个关键功能:你无法通过网络浏览器注册课程。

按照今天的标准,这可能看起来是一个重大的疏忽,但在 1990 年代后期,万维网仍然非常新。亚马逊成立才几年。eBay 刚刚迎来它的第一个生日。谷歌最近才上线。维基百科那时还不存在。在当时的情况下,1998 年 PeopleSoft 不支持通过网络注册课程并不令人惊讶。但是,作为一所开创性的大学,它起源了 Gopher 网络,并为以前的主机系统创建了功能性的网络界面,我们认为网络注册是新学生记录系统的一项关键功能。

我们网络团队的工作是为 PeopleSoft 构建缺失的网络注册前端。

幸运的是,我们不必孤军奋战。我们与 IBM 签订了合同,在接下来的一年里,我们共同构建了新的网络注册系统。IBM 捐赠了硬件和软件来运行新的网络系统:三台 SP 计算机节点,运行最新版本的 AIX、IBM Java 和 IBM WebSphere,以及一个独立的 IBM 负载均衡器,用于在三个节点之间分配流量。

AIX network diagram

经过一年多的开发和测试,我们终于上线了!不幸的是,这是一个即时的失败。

负载过重

在整个开发过程中,我们无法真实地模拟许多学生同时访问新系统的负载。但这并不是因为我们没有尝试。大学有一个定制的网络负载测试软件包,IBM 也用自己的工具对其进行了补充。但网络仍然非常新,我们没有意识到网络负载测试工具还没有达到要求。

经过数月的两种工具的负载测试,我们已将新的网络注册系统调整到预期的 240 个并发用户负载。

不幸的是,我们的实际使用量几乎是这个数字的两倍。第一天,系统一上线,就有超过 400 名学生同时登录到新的网络注册系统。由于意想不到的负载过重,三台网络服务器崩溃了。我们发现自己不断地重启网络服务器,因为高网络流量持续压垮它们。我们刚重启一台网络服务器,下一台就会宕机。整个为期一个月的注册期都是如此。

由于没有可靠的网络注册课程方式,学生们不得不以老式的方式注册课程:去注册办公室。注册队伍排满了走廊,一直延伸到门外。不久之后,坏消息就登上了当地新闻,标题如“计算机故障迫使学生亲自注册”。

Negative headlines about web registration crashes

在遭遇了一次非常公开的失败之后,我们尽最大努力改进了下一个注册周期(仅在六个月后)的情况。我们疯狂地工作,以提高网络系统的容量。尽管进行了许多代码修复和配置调整,我们仍然无法将系统提升到足以支持更多用户的水平。尽管我们尽了最大努力,但我们肯定会在下一个注册周期面临失败。

正如担心的那样,网络系统在我们的下一次注册中再次惨败。服务器在巨大的负载下一次又一次地崩溃。这一次,新闻标题包括诸如:“网络注册系统毫无价值。”

距离我们的下一次上线还有六个月的时间,我们感到束手无策。没有人能弄清楚为什么系统会在负载下不断崩溃。我们知道它会在下一个注册期再次失败。我们必须做些什么,任何事情,来改进系统。但是该怎么做呢?每一种选择都摆在桌面上。

如果我们更换平台呢?

IBM 最近拥抱了 Linux,发布了 Linux 版本的 Java 和 WebSphere 产品。所有产品都通过了 RHEL(红帽企业 Linux)认证,我们中的几个人已经在我们的桌面系统上运行了 RHEL。我们意识到我们现在拥有在 Linux 上运行网络注册系统的生态系统,作为一个受支持的平台。但是,它在 Linux 上的性能会比在 AIX 上更好吗?

在设置测试服务器并运行初步负载测试后,我们震惊地看到一台 Linux 服务器可以轻松支持三台 AIX 服务器无法支持的工作负载。一台 Linux 服务器运行相同的网络注册代码,使用相同的 IBM Java 和 IBM WebSphere,可以维持 200 多个用户。

我们与注册主任和首席信息官分享了我们的发现,他们批准了我们将网络注册系统迁移到 Linux 的计划。这是我们第一次在明尼苏达大学企业中使用 Linux,但我们没有什么可损失的。AIX 系统反正会再次失败。Linux 是一个孤注一掷的选择,但它是我们唯一的希望。

我们立即加速生产新的 Linux 服务器。另一个团队的同事将几台英特尔服务器转移到我们的工作中,我们在这些服务器上安装了 RHEL 和 IBM 组件。我们在新系统上进行了无数次负载测试,寻找薄弱环节,结果却发现 Linux 服务器运行平稳。

经过两个月不安的等待,我们终于上线了。这是一个巨大的成功!网络注册系统在 Linux 上完美运行,尽管使用量很大。在注册期间的峰值时段,Linux 服务器管理了超过 600 个并发用户,几乎没有出现任何问题。Linux 拯救了明尼苏达大学的网络注册。

成功的经验教训

当我回顾那次大规模的救援行动时,我发现了一些主题,你可以用它们在自己的组织中介绍 Linux

  1. 解决问题,而不是满足虚荣心。

当我们提议在企业中运行 Linux 时,我们这样做并不是因为我们认为 Linux 很酷。当然,我们是 Linux 粉丝,我们已经在桌面和家庭上运行 Linux,但我们是为了解决问题。我们的注册主任和其他利益相关者赞赏 Linux 是一个问题的解决方案,而不仅仅是我们想做的事情,因为 Linux 很酷。

  1. 尽可能少地改变。

我们的成功取决于 IBM 最终发布了 Linux 版本的 Java 和 WebSphere 产品这一事实。这使我们能够在从 AIX 迁移到 Linux 时最大限度地减少对系统的更改。将 AIX 配置与 Linux 配置进行比较,只有硬件和操作系统发生了变化。系统上的每个其他组件都保持不变。正是这种“已知”的数量增强了进行更改的信心。

AIX cost diagram

 

Linux cost diagram

  1. 诚实地说明风险和收益。

我们的问题是显而易见的:网络注册在我们之前的两个注册周期中都失败了,并且很可能会再次失败。当我们向我们的利益相关者提出我们的想法,建议我们将 AIX 网络服务器替换为 Linux 时,我们公开了预期的风险和收益。底线是,如果我们什么都不改变,我们就会失败。如果我们尝试 Linux,我们可能会失败,也可能不会失败。我们分享了我们从初步负载测试中获得的发现,这些发现表明 Linux 比失败更有可能成功。

但即使 Linux 失败了,我们也可以轻松地将旧的 AIX 服务器重新投入生产。“后备”准备让注册主任放心,我们已经适当地衡量了收益和风险,并为意外情况做好了准备。

  1. 广泛沟通。

在向 Linux 迁移的提案中,我们撒了一张大网。我们撰写了一份执行概要白皮书,清楚地传达了我们计划做什么以及为什么我们认为它会奏效。这份白皮书成功的关键在于其简洁性。高管们不想阅读关于技术想法的“小说”,也不想陷入技术细节。我们有意为高管级别撰写了白皮书,用概括的方式描述了我们的提案。

当我们用 Linux 替换系统时,我们提供定期更新,告知我们的利益相关者我们构建新 Linux 系统的进展情况。在我们最终上线 Linux 网络注册系统后,我们每天发布更新,报告有多少学生在新系统上注册了课程,以及我们是否发现了任何问题。

尽管距离我们早期使用 AIX 的失败以及非常成功的 Linux 实验已经过去了近二十年,但所有这些经验教训仍然适用。当然,Linux 在这里做了繁重的工作,但我们的总体成功归功于将人们聚集在一起,本着解决共同问题的精神。而且我认为这是一个你可以应用于几乎任何你面临的情况的教训。

photo of Jim Hall
Jim Hall 是一位开源软件倡导者和开发者,以在 GNOME 中进行可用性测试以及作为 FreeDOS 的创始人兼项目协调员而闻名。

4 条评论

考虑到 AIX 被誉为性能、可靠、稳健、可扩展的企业级 UNIX 之王;在原始性能方面比 Linux 高出 5% 到 10% 左右,并且拥有 99.999% 的可用性,尽管缺少 Linux 用户喜欢的所有花哨的命令,但这是一个非常有趣的故事。

我想知道真正导致问题的原因是什么,以及 Linux 到底有什么解决了这个问题。

事后我们了解到,AIX 内核在高负载下导致 IBM Java 垃圾回收器出现问题。(我相信现在已经修复了 - 那是 1999 年。)但这个问题并没有发生在 Linux 和 IBM Java 上。

我们将 AIX 服务器重新用于运行数据库。

是的,过度的 JVM 内存使用在 2016 年仍然是一个问题。最近在 MS Windows 上的 Jenkins CI 中看到了。这可能是开发人员没有将引用置为空。比常规 valgrind memcheck 等更难调试

诸如增加 RAM 和重启机器之类的解决方法远非理想。

更好的是为每个连接启动一个单独的进程,然后在该进程完成并回收资源时退出。

很棒的文章,Jim!你不仅讲述了一个关于如何在现实世界环境中使 Linux 变得实用的精彩故事,而且还提供了一些关于如何在其他地方实现它的好技巧。当我们在九月份重新开始时,我将与亚洲企鹅分享这个故事。如果您愿意来访,无论是您来这里还是我们去那里,请告诉我。

© . All rights reserved.