Last Update:29 Nov. 2004 |
■ユーザリソースを制限する方法について |
1.はじめに |
■はじめに Linuxでは、ulimitコマンドなどを使って、ユーザごとに使用可能なシステムリソースを 制限する事が可能です。 ■ulimitコマンドとは ulimitコマンドはシステムリソースの制限を設定するためのコマンドです。 プロセスがメモリやCPUタイム等を多く消費しないようにするために、ユーザごとに制限を 設定することができます。 また、オプション指定により、ハードリミット、ソフトリミットを指定する事ができます。 ここでは ulimit コマンドで使用できるメモリの容量を制限する方法について説明していきます。 |
2.ユーザリソースを制限する方法 |
■全てのリソースの制限の表示 まず、root権限で ulimit コマンドを実行し、現在の設定を確認します。 # ulimit -a core file size (blocks) 0 data seg size (kbytes) unlimited file size (blocks) unlimited max locked memory (kbytes) unlimited max memory size (kbytes) unlimited open files 1024 pipe size (512 bytes) 8 stack size (kbytes) 8192 cpu time (seconds) unlimited max user processes 1024 virtual memory (kbytes) unlimitedなお、ulimit コマンドを実行する場合、ハードリミットを設定したい場合は -H 、 ソフトリミットを設定したい場合は-S のオプションを指定しますが、どちらも指定しないと 両方に制限がかけられる事になります。 また、ソフトリミットを設定する場合は、ハードリミットの範囲内での設定になります。 ■ファイルサイズを制限する方法 ファイルサイズを制限する場合には -f オプションを使用し、制限するサイズをブロック単位で指定します。 ここでは、1ブロック=512KB とし、ファイルサイズを4MBに制限しています。(512KB × 8 = 4MB) # ulimit -f 8 core file size (blocks) 0 data seg size (kbytes) unlimited file size (blocks) 8 : ■メモリの使用量を制限する方法 メモリの使用量を制限する場合には -m オプションを使用し、制限する メモリの使用量をKB単位で指定をします。 ここではユーザ1人辺りのメモリの使用量を256MBに制限します。 (256MBの場合、256×1024=262144(KB)) # ulimit -m 262144 core file size (blocks) 0 data seg size (kbytes) unlimited file size (blocks) unlimited max locked memory (kbytes) unlimited max memory size (kbytes) 262144 open files 1024 pipe size (512 bytes) 8 stack size (kbytes) 8192 cpu time (seconds) unlimited max user processes 1024 virtual memory (kbytes) unlimitedこれで、ユーザ1人辺りのメモリの使用量が256MBに制限されました。 ■プロセスのCPUタイムを制限する方法 各プロセスに使用される時間を制限する場合は、秒数で指定します。 ここでは180と設定しているので各プロセスに使用される時間は3分まで ということになります。 # ulimit -t 180 : cpu time (seconds) 180 max user processes 1024 virtual memory (kbytes) unlimited ■仮想メモリの使用量を制限する方法 仮想メモリの使用量を制限する場合にもメモリを制限する時と同様に KB単位で使用量の設定を行います。 131072KB = 128MB # ulimit -v 131072 : : virtual memory (kbytes) 131072 ■注意事項 ハードリミットを設定すると、一般ユーザはハードリミットの範囲内でしか値を変更する事ができません。 一般ユーザが設定された値より大きな値にシステムリソースの値を変更しようとした場合には、 以下の様なエラーが表示されます。 一度設定したハードリミットをそれより大きな値に変更するためには root 権限が必要になります。 # ulimit -m 131072 core file size (blocks) 0 data seg size (kbytes) unlimited file size (blocks) unlimited max locked memory (kbytes) unlimited max memory size (kbytes) 131072 open files 1024 pipe size (512 bytes) 8 stack size (kbytes) 8192 cpu time (seconds) unlimited max user processes 1024 virtual memory (kbytes) unlimited # su admin $ ulimit -m 262144 bash: ulimit: cannot modify limit: Operation not permitted $なお、ulimitコマンドには以下のようなオプションが用意されています。
|
![]() | ![]() |