第7回 やっぱり気になるスイッチ・オン! での性能変化


面 和毅
サイオステクノロジー株式会社
OSSテクノロジーセンター
開発支援グループ
グループマネージャー
2008/2/29


 テストケース1:ショッピングサイト運用の場合

 テストケース1では、一般的なショッピングサイトのスクリプトを実行した場合を考えます。今回はCGI検索 夢幻からダウンロードしたショッピングカートのスクリプトをサンプルとして使用しています。

●Apache Bench測定結果

 同時アクセス数(-cオプションで指定)を変更して、SELinux有効と無効でそれぞれApache Benchで負荷をかけました。結果は表1やグラフ1を見て分かるとおり、SELinux有効と無効とでは目立った差異が出ませんでした。

同時アクセス数 SELinuxの状態 完了したリクエスト数 失敗したリクエスト数 1秒当たりのリクエスト処理数 1リクエストの処理時間 転送速度 接続時間(ms) (Total/max)
10 Enforcing
1000
0
158.18
63.22
236.95
6321
30 Enforcing
1000
0
166
180.72
251.83
331
50 Enforcing
1000
0
160.46
311.6
247.91
526
80 Enforcing
1000
0
165.17
484.34
247.43
3253
100 Enforcing
1000
0
162.59
615.04
246
2129
10 Disabled
1000
0
162.96
61.37
244.11
6136
30 Disabled
1000
0
148.48
202.05
225.99
740
50 Disabled
1000
0
159.43
313.62
250.15
862
80 Disabled
1000
0
165.88
482.26
248.5
4995
100 Disabled
1000
0
167
598.8
250.17
1009
表1 テストケース1でのApache Benchの結果

グラフ1 1秒当たりのリクエスト処理数はSELinux有効と無効で目立った差異はない

●JMeter測定結果

 JMeterのクライアント側のスレッド数を変化させて、SELinux有効と無効でそれぞれ負荷をかけました。こちらも結果は、SELinux有効と無効とでは目立った差異が出ませんでした。

スレッド数
SELinuxの状態
サンプル数
平均
中央値
90%
Line
最小
最大
エラー率(%)
スループット(/sec)
Kbytes /sec
10
Enforcing
32000
21
10
40
0
561
6.18
417.3
876.8
30
Enforcing
96000
68
60
130
0
541
5.87
356.3
748.7
50
Enforcing
160000
88
80
160
0
2153
5.72
392.4
824.4
80
Enforcing
256000
163
150
281
0
2043
5.22
289.5
608.4
100
Enforcing
320000
250
161
421
0
11166
5.1
162.2
340.7
10
Disabled
32000
20
10
40
0
391
6.19
425.9
894.9
30
Disabled
96000
106
100
190
0
661
5.74
342.4
719.5
50
Disabled
160000
106
100
190
0
661
5.74
342.4
719.5
80
Disabled
256000
162
150
290
0
1882
5.2
285.9
600.8
100
Disabled
320000
238
160
391
0
3485
5.15
166
348.8
表2 テストケース1でのJMeterの結果

グラフ2 スループット、および処理量ともにSELinux有効と無効で目立った差異はない

 テストケース2:ディスクI/Oを発生させた場合

 テストケース2は、パフォーマンステストのために、PHPスクリプト内でランダムなディレクトリを作成し、その中に空のファイルを2000個作成してからすべて削除するというものになります。

●Apache Bench測定結果

 同時アクセス数(-cオプションで指定)を変更して、SELinux有効と無効でそれぞれApache Benchで負荷をかけました。

 結果は表3のとおりですが、やはりファイルを2000個作成/削除を繰り返すとHDDへのアクセスの負荷が大きいため、Webサーバの処理が追い付いていないようです。処理が追い付いていない場合には、測定結果の数値に関して信頼度が下がってしまうのですが、あえて比較するならSELinux有効では失敗したリクエスト数(Failed Request:この値が大きいほど、Webサーバの処理が追い付いていない)の数がSELinux無効の状態よりも多くなっています。

同時アクセス数 SELinuxの状態 完了したリクエスト数 失敗したリクエスト数 1秒当たりのリクエスト処理数 1リクエストの処理時間 転送速度 接続時間(ms) (Total/max)
10 Enforcing
1000
961
3.64
2746.57
320.78
7474
30 Enforcing
1000
965
3.39
8852.8
298.89
260266
50 Enforcing
1000
960
3.6
13897.27
317.21
203365
80 Enforcing
1000
584
3.48
22964.32
307.27
278228
100 Enforcing
1000
954
3.13
31955.57
276.45
319554
10 Disabled
1000
606
4.07
2454.59
452.01
245458
30 Disabled
1000
572
3.86
7772.18
426.38
255385
50 Disabled
1000
584
3.84
13020.67
425.17
159091
80 Disabled
1000
468
3.92
20408.88
433.85
251676
100 Disabled
1000
599
3.94
25405.93
436.13
240912
表3 テストケース2でのApache Benchの結果

グラフ3 SElinuxが有効であると、失敗したリクエスト数が増加し、処理量も落ちていることが分かる

 また、1秒当たりのリクエスト処理数の値も若干下がっているように見えます。これらから、SELinuxを有効にした際にテストケース2の場合にはパフォーマンスが若干落ちていると考えられます。

●JMeter測定結果

 JMeterのクライアント側のスレッド数を変化させて、SELinux有効と無効でそれぞれ負荷をかけました。結果、SELinux有効と無効とではパフォーマンスに差異が生じ、SELinuxを有効にした際にパフォーマンスが低下するという結果が出ました。

スレッド数
SELinuxの状態
サンプル数
平均
中央値
90%
Line
最小
最大
エラー率(%)
スループット(/sec)
Kbytes /sec
10
Enforcing
9000
1845
2333
3866
0
142605
0
5.3
343.9
30
Enforcing
27000
5858
2984
13058
0
1603396
0
4.9
312.9
50
Enforcing
45000
10793
2974
26838
0
1134041
0
4.5
286.7
80
Enforcing
72000
16742
1623
50593
0
1264458
0
4.5
292.7
100
Enforcing
90000
8854
421
30123
0
395679
0
10.7
688.7
10
Disabled
9000
648
351
1733
0
7771
0
15.1
971.1
30
Disabled
27000
2022
541
5968
0
133792
0
14.5
931.6
50
Disabled
45000
3309
491
10305
0
326149
0
14.5
934.7
80
Disabled
72000
5307
481
17465
0
348671
0
14.5
932.2
100
Disabled
90000
6690
461
22502
0
540947
0
14.3
921.2
表4 テストケース2でのJMeterの結果

グラフ4 SELinuxが有効の場合、スループットが低下していることが分かる

2/3

Index
やっぱり気になるスイッチ・オン! での性能変化
  Page1
「SELinux有効」がパフォーマンスに与えるインパクトとは
測定環境をチェック
Page2
テストケース1:ショッピングサイト運用の場合
テストケース2:ディスクI/Oを発生させた場合
  Page3
このテストから分かること
パフォーマンス劣化が発生する場所を知れば導入は怖くない


スイッチ・オン! SELinux 連載インデックス


Security&Trust フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Security & Trust 記事ランキング

本日 月間