Estou encarregado da tarefa de limitar os recursos (Uso máximo de memória e peso da CPU) para Apache2 e nginx de acordo com as estatísticas de uso, e teste essa limitação.
Para limitações de recursos, escolhi o caminho mais fácil - para implementá-lo através do controle de recursos do systemd, executando apache2 & nginx em uma fatia limitada personalizada:
limiter.slice :
[Unit]
Description=Resource limiting test
Before=slices.target
[Slice]
CPUWeight=50
MemoryMax=800M
[Install]
WantedBy=multi-user.target
E, é claro, adicionamos a opção Slice=limiter.slice
ao apache2 & arquivos de serviço nginx.
Agora, o nginx e o apache2 iniciam corretamente na fatia limitada (verificada com 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
Eu acredito que a limitação de recursos deve funcionar. No entanto, eu não tenho acesso a nenhum servidor apache / nginx muito usado, então não consigo nem chegar perto, até mesmo fazer com que o apache2 / nginx use muita RAM. E a minha tarefa é mostrar o que acontece quando o Apache2 / Nginx começa a usar tanta memória, e tem que ser realista , tem que ter muita RAM, e eles quero que eu mostre esses servidores da Web que funcionam com quase o mesmo uso de RAM. Você pode ignorar o peso da CPU, pois não é meu foco principal.
Então, em outras palavras, eu preciso aumentar / aumentar o uso de RAM desses servidores.
- A maneira como estou tentando limitar o uso de recursos é uma boa prática (via systemd slice resource-control)?
- Como aumentar o Apache & Uso de memória dos servidores Nginx (para cerca de 800M de RAM, se possível ainda maior)?
Minha máquina tem 6G de RAM, estou bem com o uso de 2-3G de RAM para casos de teste.
Executando Linux Debian 9.4 .
Versão do Apache2:
Server version: Apache/2.4.25 (Debian)
Versão Nginx:
nginx version: nginx/1.10.3
Observação: o servidor da web Apache2 é o foco principal, fazer o mesmo para o Nginx não é necessário, é apenas um bônus para pesquisa.
Eu tentei encontrar maneiras de avaliar o uso de RAM, mas falhei. Tenha em mente que estou fazendo isso em uma estação de trabalho normal, portanto, não há uma maneira fácil de implantar aplicativos nos servidores da Web e gerar tráfego suficiente naturalmente para obter um aumento no uso de memória.
Atualizar :
Consegui que o apache + nginx consumisse até 400-500MB de RAM usando benchmarks pesados de ab
o tempo todo. No entanto, ainda não posso testar para ver se eles conseguiriam atingir o limite de 800MB de RAM especificado. Qualquer sugestão seria apreciada.