Назад | Перейти на главную страницу

справиться с вилкой-бомбой в виртуализированной среде XenServer / «FreeBSD jails»

Я привык работать с тюрьмами FreeBSD, но я хотел попробовать XenServer 5.5 / Vmware ESXI 5, надеясь, что он действительно может ограничить ресурсы для каждой виртуальной машины, после установки пары виртуальных машин я попытался выполнить на одной небольшой виртуальной машине (512RAM , 1 VCPU), (сервер имеет 8 ГБ оперативной памяти 2 процессора) следующий код:

$ cat > fork.c    
#include <stdio.h> 
int main() { while(1) fork(); }
$ gcc fork.c -o bomb
$ ./bomb

На сервере FreeBSD без виртуализации (без Xenserver / Vmware) этот код убьет машину, и потребуется выполнить полную перезагрузку, но я был удивлен, что на XenServer поведение «почти» похоже, вызывая некоторый ущерб.

XenServer начал использовать весь доступный процессор, а другая виртуальная машина FreeBSD стала иметь низкую производительность.

С другой стороны, при использовании последней версии Vmware Exi бомба затронула только виртуальную машину, которая запустила вилочную бомбу, ЦП для всего сервера не начал потреблять все ресурсы, а только примерно 40% их в определенный момент. что это позволяет мне создать вторую виртуальную машину и запустить на ней вторую бомбу, не замечая производительности на остальной части виртуальной машины. При одновременной работе двух бомб общее использование ЦП составляло 90%.

В моем случае я просто использую FreeBSD, но до сих пор не нашел, как предотвратить бомбу вилки, которая может убить хост-сервер, использование XenServer не сильно помогло. Vmware выглядит многообещающе, но не может быть и речи из-за стоимости.

Итак, есть идеи, как настроить Xenserver или Freebsd для работы со стрелами вилки?

Вы можете эффективно предотвратить взрывы вилки даже на физической машине с ограничениями пользователя. В FreeBSD это можно настроить одним из способов. /etc/login.conf, с maxproc параметр.

Для получения дополнительной информации обратитесь к документации. Вот.

Изменить: если этого недостаточно, вы должны иметь возможность поддерживать хотя бы работу XenServer с ограничением времени процессора, которое может получить любая виртуальная машина. См. Разделы о параметрах VCPU в документации Xen CLI. Вот.

Ограничение VCPU помогло, но теперь я столкнулся с другой проблемой:

как принудительно остановить / удалить VirtualMachine под XenServer (возможная ошибка)

Я не могу удалить / остановить / перезапустить экземпляры, которые содержат настроенное ядро ​​FreeBSD (параметры xen), так как XenServer при загрузке этого ядра теряет контроль над экземпляром.

Обновить

Это устранило проблему: rctl - отображение и обновление базы данных ограничений ресурсов