Мне поставили задачу ограничить ресурсы (максимальное использование памяти и вес процессора) для Apache2 и nginx по статистике использования, и проверьте это ограничение.
Для ограничения ресурсов я выбрал простой способ - реализовать его через управление ресурсами systemd, запустив apache2 и nginx в настраиваемом ограниченном срезе:
limiter.slice:
[Unit]
Description=Resource limiting test
Before=slices.target
[Slice]
CPUWeight=50
MemoryMax=800M
[Install]
WantedBy=multi-user.target
И, конечно, добавил Slice=limiter.slice
опция для служебных файлов apache2 и nginx.
Теперь nginx и apache2 правильно запускаются в ограниченном срезе (проверено с помощью systemctl status limiter.slice
):
● limiter.slice - Resource limiting test
Loaded: loaded (/etc/systemd/system/limiter.slice; enabled; vendor preset: enabled)
Active: active since Wed 2018-07-18 16:07:59 EEST; 3s ago
Tasks: 58
Memory: 8.1M (max: 800.0M)
CPU: 82ms
CGroup: /limiter.slice
├─apache2.service
│ ├─1823 /usr/sbin/apache2 -k start
│ ├─1841 /usr/sbin/apache2 -k start
│ └─1843 /usr/sbin/apache2 -k start
└─nginx.service
├─1805 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
├─1808 nginx: worker process
└─1811 nginx: worker process
Я считаю, что ограничение ресурса должно работать. Однако у меня нет доступа к каким-либо сильно используемым серверам apache / nginx, поэтому я не могу даже приблизиться к тому, чтобы даже заставить apache2 / nginx использовать такой объем оперативной памяти. И моя задача - шоу что происходит, когда Apache2 / Nginx начинает использовать такой объем памяти, и это должно быть реалистичный, это действительно должно быть столько ОЗУ, и они хотят, чтобы я показал, как эти веб-серверы работают с почти таким же использованием ОЗУ. Вы можете не обращать внимания на вес процессора, так как это не мое основное внимание.
Другими словами, мне нужно как-то увеличить / увеличить объем оперативной памяти этих веб-серверов.
Моя машина имеет 6 ГБ ОЗУ, я могу использовать 2-3 ГБ для тестовых случаев.
Бег Linux Debian 9.4.
Версия Apache2:
Server version: Apache/2.4.25 (Debian)
Версия Nginx:
nginx version: nginx/1.10.3
Примечание: Основное внимание уделяется веб-серверу Apache2, делать то же самое для Nginx не обязательно, это просто бонус для исследования.
Я пытался найти способы проверить использование ОЗУ, но не смог. Имейте в виду, что я делаю это на обычной рабочей станции, поэтому нет простого способа развертывать приложения на веб-серверах и естественным образом генерировать достаточно трафика, чтобы получить такое увеличение использования памяти.
Обновить: Мне удалось заставить apache + nginx потреблять до 400-500 МБ ОЗУ, используя тяжелые ab
тесты все время. Однако я все еще не могу проверить, смогут ли они даже достичь указанного лимита ОЗУ 800 МБ. Мы ценим любые предложения.
Если все, что вы делаете, это HTTP-запросы, обслуживаемые статическим контентом, на самом деле единственный способ взорвать память - это увеличить параллелизм соединений во время тестирования. Я не знаю, каков ваш вариант использования, но если все, что вы пытаетесь сделать, это увеличить использование памяти, вам может потребоваться использовать mod_session, чтобы apache сохранил некоторые данные сеанса на стороне сервера. Это увеличит продолжительность и объем потребляемой памяти на стороне сервера подключения. Однако это может не соответствовать вашему использованию в реальном мире. Использование памяти действительно зависит от того, как используется сервер, и от архитектуры вашего решения в целом. Соответствует ли контент, обслуживаемый при тестировании, контенту, который будет использоваться в производственной среде? В противном случае вы не получите точных результатов, и ваши ограничения могут не подходить для вашей среды. Чтобы получить точные результаты, вам необходимо протестировать типичные сценарии использования существующего решения. Если имеется более одного сервера, вам необходимо принять во внимание возможность сбоев и некоторую часть трафика, которая будет обрабатываться оставшимися серверами. В чем смысл вашего тестирования, кроме как заставить apache съедать оперативную память? Я тестировщик программного обеспечения, поэтому могу помочь вам, но мне нужно больше информации, чтобы дать вам хороший совет о том, что вам следует делать.
Один из способов увеличить использование ресурсов Apache - использовать дополнительные модули. На ум приходит PHP как простой способ увеличить требования к памяти.
Если вы не хотите использовать дополнительные модули, увеличение памяти может, например, быть вызвано POST-отправкой (загрузкой) больших файлов (в зависимости от конфигурации) или сохранением HTTP-запросов в полете (невыполнение запроса, наличие медленных клиентов в режиме прокси, ...).
Это, как правило, непростое тестирование, так как для этого требуются дополнительные ресурсы и скрипты / инструменты для конкретных случаев использования на тестовых клиентах.