Linux Webサーバーでアプリケーションが使用できるリソースを制限する方法

Linux Webサーバーでアプリケーションが使用できるリソースを制限する方法

状況はこんな感じです。

いくつかのPDF処理とサムネイル生成を実行するPHP / MySQL Webアプリケーションがあります。これは、サーバーの一部のサードパーティのコマンドラインソフトウェアを使用して行われます。どちらのプロセスも多くのリソースを消費し、サーバー輻輳を引き起こす可能性があります。サーバーが遅すぎることなくユーザーにサービスを提供し続けるように、これらのアプリケーションが使用できるリソースの量を制限したいと思います。これは、一部の重いPDFを処理するときにユーザーが応答を受け取らないためです。

アプリケーションが使用できるRAMとCPUの量を制限できますか?それとも、そのような状況を処理する他の方法はありますか?これは一般的にどうなりますか?

答え1

実行するnice -n 20 ionice -c 3

これにより、残りのCPUサイクルが使用され、他のプロセスで使用されていないI / Oにアクセスできます。

RAMを使用すると、必要以上に使用する場合は、プロセスを終了(ulimitを使用)するだけです。

答え2

PHPで実行できますが、ioniceはrootとして実行する必要があるため、sudoでioniceを実行するか、ioniceで実行されているサーバープロセスでphpスクリプトを実行してください。

fastcgiを使用すると、2つの異なるエンジンを実行し、優先順位の低いエンジンに高いリソース操作を割り当てることができます。

fastcgiなしでApacheを使用している場合は、sudoを使用してコマンドを実行する必要があります。 sudo 権限ができるだけ具体的であることを確認してください。そうしないと、セキュリティの脆弱性が発生する危険があります。

関連情報