我正在进行服务器测试,并故意尝试使用所有内存来使虚拟 Solaris 服务器崩溃。服务器的 ulimit 为 15 GB(数百 GB 总系统/交换内存)。有没有使用 shell/Perl 脚本直接执行此操作的方法? (这是在一个强化/安全的环境中,所以唯一可访问的工具是 Perl [当然还有 shell])。
背景:实际测试的是将基本进程故障转移到另一台服务器。最近,我们有许多进程“失控”并消耗所有系统资源,从而导致服务器崩溃(单独的问题)。我正在尝试创建一个简单的可重复场景来测试对这种情况的响应。
答案1
jlliagre回答了这个问题。并发布了一个很好答案的链接。相信他,而不是我。
当您写入 /tmp 时,仅在 Solaris 中 - 您正在写入 RAM 而不是磁盘。这就是写入 /tmp 文件速度超快的原因。一旦 RAM 填满,系统就会变得缓慢。如果完全填满/tmp,那么 writews to /tmp 将尝试写入交换区,最终系统崩溃。这种方法绕过了内存的 ulimit。确保您没有指定最大文件大小:
ulimit -a
file(blocks) unlimited