Apache2.4の子プロセスの使用メモリ実測方法

Apache2.4の子プロセスのメモリ使用実測方法
Apache2.4の子プロセスのメモリ使用実測方法

Rapsberry Piの空きメモリをどれだけApache2.4に割り当てるかを試算する為、Apache2.4の子プロセスが使用するメモリの実測方法を説明します。

Apache2.4のマルチプロセッシングモジュール (MPM)は、複数の方式が選べるのですが、WordPressはPHPを使用しているので、万が一メモリリークが発生しても安心なPreforkを使用します。

Preforkは、子プロセスを複数個あらかじめ起動しておいて、同時のアクセスに瞬時にレスポンスが返せるようにする仕組みです。だから、大量の同時アクセスが有った時は、多数のプロセスが起動されメモリ不足となってしまいます。そこで、Apach2.4の子プロセスの起動できる最大数を設定します。

最大数を決める為には、空きメモリとApache2.4の子プロセス1個のサイズを知る必要が有ります。そこで、Apache2.4の子プロセス1個のメモリの測り方を説明します。

測定方法

測定方法は、とても簡単で、下記のコマンドを入力するだけです。

$ sudo echo -e "PID\tPPID\tRSS\tSHARED\tPRIVATE";ps -ef|gt"${args[2]}"\t";sudo cat /proc/${args[1]}/smaps|awk 'BEGIN{rss=0;shared=0;}/Rss1024,(rss-shared)/1024);}';done
PID     PPID    RSS     SHARED  PRIVATE
2158    1       31.9    25.0    6.9
2159    2158    9.4     9.3     0.1
2160    2158    9.4     9.3     0.1
2161    2158    9.4     9.3     0.1
2162    2158    9.4     9.3     0.1
2163    2158    9.4     9.3     0.1

青字がApache2.4の親プロセスです。

赤字がApache2.4の子プロセスです。

SHAREDが親プロセスと共有しているメモリのサイズです。親プロセスと子プロセスが共有しているメモリなので、子プロセス毎に加算する必要はありません。

PRIVATEが各子プロセスが使用しているメモリです。

Apache2.4の全子プロセスのPRIVATEのメモリの和を、子プロセス数で割ると平均的な子プロセスの使用メモリとなります。

では、子プロセスの使用メモリがどの程度か、実際に測定して子プロセスの使用メモリを想定します。

サーバの稼働状況から実測

システム起動直後の空きメモリ

下記コマンドで確認したメモリの空き容量は、3,542MBです。

$ free -m
               total        used        free      shared  buff/cache   available
Mem:            3793         176        3316           6         300        3542
Swap:           1023           0        1023

Apache2.4の子プロセスのメモリ実測

2023年1月25日の実測値は下記の通りです。

$ free -m
               total        used        free      shared  buff/cache   available
Mem:            3793        1562        1239         118         990        2036
Swap:           1023           0        1023

$ sudo echo -e "PID\tPPID\tRSS\tSHARED\tPRIVATE";ps -ef|grep apache2|grep -v grep|while read line;do args=(${line});echo -ne ${args[1]}"\t"${args[2]}"\t";sudo cat /proc/${args[1]}/smaps|awk 'BEGIN{rss=0;shared=0;}/Rss/{rss+=$2;}/Shared/{shared+=$2;}END{printf("%.1f\t%.1f\t%.1f\n",rss/1024,shared/1024,(rss-shared)/1024);}';done
PID     PPID    RSS     SHARED  PRIVATE
434     1       32.3    30.6    1.7
40522   434     105.6   93.1    12.5
40523   434     107.6   93.4    14.1
40524   434     107.0   92.5    14.5
40525   434     87.0    78.4    8.6
40526   434     120.6   105.5   15.0
40529   434     98.1    84.5    13.6
40538   434     112.5   100.4   12.1
40543   434     129.9   103.9   26.0
40777   434     114.8   97.2    17.6
40783   434     96.9    79.3    17.5
40794   434     134.5   110.0   24.5
41764   434     116.0   102.3   13.7
41766   434     91.8    83.3    8.5
41767   434     96.6    87.0    9.6
41769   434     97.9    83.0    14.9
41770   434     86.1    77.6    8.5
41771   434     108.6   88.9    19.8
41772   434     102.9   89.2    13.7
41773   434     72.4    60.6    11.8
41774   434     126.7   107.2   19.5
41775   434     92.2    79.3    12.9
41776   434     100.6   90.9    9.6
41777   434     70.0    59.9    10.2
41778   434     101.6   88.6    13.0
41779   434     131.1   111.6   19.5
41780   434     99.6    85.7    13.9
41781   434     76.7    61.1    15.6
41782   434     62.8    51.1    11.8
41783   434     123.5   104.9   18.6
41784   434     86.8    78.9    7.8
41785   434     69.4    62.4    7.0
41786   434     98.0    83.0    15.0
41787   434     78.4    70.0    8.4
41788   434     78.5    66.4    12.1
41789   434     84.4    72.1    12.3
41790   434     98.5    79.5    19.0
41791   434     112.0   101.6   10.5
41792   434     97.8    84.9    12.9
41793   434     122.6   105.1   17.5
41794   434     96.0    85.6    10.4
41795   434     75.5    63.6    11.9
41796   434     82.0    70.0    12.0
41797   434     77.0    64.8    12.2
41798   434     79.7    66.9    12.8
41799   434     95.9    82.3    13.6
41800   434     127.9   109.2   18.7
41801   434     116.2   100.5   15.7
41802   434     85.1    78.6    6.5
41803   434     80.7    66.9    13.8
41804   434     91.7    82.0    9.7
41805   434     85.8    71.8    14.1
41806   434     66.7    59.7    7.0
41807   434     90.0    77.7    12.3
41808   434     82.3    72.5    9.9
41809   434     94.8    82.2    12.7
41810   434     92.5    82.5    10.0
41811   434     86.1    76.8    9.4
41812   434     87.9    79.3    8.6
41813   434     86.5    78.5    8.0
41814   434     86.5    72.8    13.7
41815   434     96.3    83.7    12.6
41816   434     90.2    77.9    12.3
41817   434     60.7    51.6    9.0
41818   434     99.9    88.6    11.4
41819   434     71.6    60.5    11.1
41820   434     109.7   88.6    21.2
41821   434     89.0    78.0    11.0
41822   434     98.3    83.0    15.2
41823   434     88.9    78.7    10.2
41824   434     61.2    48.7    12.6
41825   434     87.4    79.2    8.2
41826   434     69.9    59.9    10.0
41827   434     99.7    79.3    20.4
41828   434     79.6    64.4    15.2
41829   434     77.8    68.5    9.3
41830   434     91.3    78.9    12.4
41831   434     90.4    79.1    11.3
41832   434     113.3   97.6    15.8
41834   434     78.1    66.9    11.2
41835   434     105.6   91.3    14.3
41836   434     95.6    83.1    12.5
41837   434     84.5    77.9    6.5
41838   434     81.2    67.6    13.6
41839   434     94.8    82.7    12.0
41840   434     106.4   83.9    22.5
41845   434     103.6   83.1    20.5
41846   434     97.6    84.4    13.2
41848   434     107.1   88.0    19.1
41850   434     76.7    68.5    8.3
41852   434     99.5    84.5    15.1
41853   434     100.6   87.5    13.1
41854   434     90.6    77.7    12.8
41855   434     107.5   86.8    20.7
41856   434     82.8    69.9    12.9
41857   434     84.8    79.8    5.0
41858   434     87.0    70.5    16.4
41859   434     96.9    85.9    11.0
41860   434     88.2    79.0    9.2
41861   434     80.4    65.1    15.3
41862   434     86.3    78.3    8.1
  • 空きメモリ 2,036MB  当初3,542MB - 現在2,036MB = 減少メモリ1,506MB
  • apache2の子プロセス100個の使用メモリ
    SHARED約120MB + PRIVATE1,309MB = 1,439MB
  • Apache2の子プロセス一個の平均の使用メモリは約13MBです。

上記の通り減少メモリと子プロセスが使用しているメモリに大きな差異は無いようなので、メモリの実測方法に大きな問題はなさそうです。

ももぶろ
ももぶろ

実測を繰り返し適正なApache2.4の子プロセスのサイズを求めてください。

タイトルとURLをコピーしました