Linux 웹 서버에서 애플리케이션이 사용할 수 있는 리소스를 제한하는 방법

Linux 웹 서버에서 애플리케이션이 사용할 수 있는 리소스를 제한하는 방법

상황은 이렇습니다.

일부 PDF 처리 및 썸네일 생성을 수행하는 PHP/MySQL 웹 애플리케이션이 있습니다. 이는 서버의 일부 타사 명령줄 소프트웨어를 사용하여 수행됩니다. 두 프로세스 모두 많은 리소스를 소비하며 서버 정체를 유발할 수도 있습니다. 서버가 너무 많은 지연을 초래하지 않고 사용자에게 계속 서비스를 제공할 수 있도록 이러한 응용 프로그램이 사용할 수 있는 리소스의 양을 제한하고 싶습니다. 이제 일부 무거운 PDF를 처리할 때 사용자가 어떤 응답도 받지 못하기 때문입니다.

애플리케이션이 사용할 수 있는 RAM 및 CPU의 양을 제한할 수 있습니까(모든 프로세스 결합)? 아니면 그러한 상황을 처리할 수 있는 다른 방법이 있습니까? 이것은 일반적으로 어떻게 이루어 집니까?

답변1

실행해nice -n 20 ionice -c 3

이로 인해 남은 CPU 주기를 사용하고 다른 프로세스에서 사용하지 않는 I/O에 액세스하게 됩니다.

RAM을 사용하면 원하는 것보다 더 많이 사용하는 경우 프로세스를 종료(ulimit 사용)하는 것뿐입니다.

답변2

PHP에서 실행할 수 있지만 ionice는 루트로 실행해야 하므로 sudo로 ionice를 실행하거나 ionice로 실행되는 서버 프로세스에서 php 스크립트를 실행하세요.

fastcgi를 사용하면 두 개의 서로 다른 엔진을 실행하고 우선 순위가 낮은 엔진에 높은 리소스 작업을 할당할 수 있습니다.

fastcgi 없이 Apache를 사용하는 경우 sudo를 사용하여 명령을 실행해야 합니다. sudo 권한이 최대한 구체적인지 확인하십시오. 그렇지 않으면 보안 취약점이 발생할 위험이 있습니다.

관련 정보