Como restringir os recursos que um aplicativo pode usar em um servidor web linux

2

Esta é a situação:

Eu tenho um aplicativo da web PHP / MySQL que faz algum processamento de PDF e criação de miniaturas. Isso é feito usando algum software de linha de comando de terceiros no servidor. Ambos os tipos de processamento consomem muitos recursos, a ponto de sufocar o servidor. Eu gostaria de limitar a quantidade de recursos que esses aplicativos podem usar para permitir que o servidor continue servindo os usuários sem muito atraso, porque agora, quando algum PDF pesado é processado, meus usuários não recebem nenhuma resposta.

É possível restringir a quantidade de RAM e CPU que um aplicativo pode usar (todos os processos combinados)? Ou existe outra maneira de lidar com esse tipo de situação? Como isso geralmente é feito?

    
por Asciiom 29.08.2012 / 12:49

2 respostas

4

Execute com nice -n 20 ionice -c 3

Isso fará com que use os ciclos restantes da CPU e o acesso a E / S não utilizados por outros processos.

Para RAM, tudo o que você pode fazer é matar o processo quando ele usa mais do que a quantidade que você quer usar (usando ulimit).

    
por 29.08.2012 / 13:07
0

Você pode executá-lo a partir do php, mas o ionice precisa ser executado como root, portanto, use o sudo para executar o ionice ou executar esse (s) script (s) php sob um processo do servidor que foi executado com ionice.

Se você usar o fastcgi, você poderá ter dois mecanismos diferentes em execução e fornecer os recursos altos para a prioridade mais baixa.

Se você usar o Apache sem o fastcgi, você terá que usar o sudo para executar o comando, certifique-se de tornar a permissão sudo o mais específica possível, caso contrário, você estará arriscando uma violação de segurança.

    
por 29.08.2012 / 14:57