「広告」

phpの実装方式による違い。Apache(Event) + php 7.4.x

「広告」
記事内に広告が含まれています。
「広告」

phpの実装方式

php7_module
FPM/FastCGI
CGI/FastCGI

のどれがいいのか・・・

「広告」

php実装、チェック項目

●https://(FQDN1)/
●https://(FQDN2)/
●https://(FQDN3)/
●https://(FQDN4)/

の、4つのワードプレスのサイトに関して、

php7_module(すべて同じユーザ権限)
FPM/FastCGI(すべて同じユーザ権限)
FPM/FastCGI(サイト毎に違うユーザ権限)
CGI/FastCGI(サイト毎に違うユーザ権限)

の4つの比較。

・httpd / MySQL / 全体 のメモリ使用量
・読み込み速度
・処理能力

をチェックしてみた。

httpd / MySQL / 全体 のメモリ使用量

は、htopの「PERCENT_MEM (MEM%)」の値

読み込み速度

は、「PageSpeed Insights」による指標

処理能力

は、ad(ApacheBench)コマンドによる「Requests per second」の値

# ab -n 100 -c 100 https://(FQDN)/
This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking (FQDN) (be patient).....done


Server Software:        Apache/2.4.46
Server Hostname:        (FQDN)
Server Port:            443
SSL/TLS Protocol:       TLSv1.2,ECDHE-RSA-AES256-GCM-SHA384,2048,256

Document Path:          /
Document Length:        48023 bytes

Concurrency Level:      100
Time taken for tests:   6.640 seconds
Complete requests:      100
Failed requests:        0
Write errors:           0
Total transferred:      4844700 bytes
HTML transferred:       4802300 bytes
Requests per second:    15.06 [#/sec] (mean)
Time per request:       6640.226 [ms] (mean)
Time per request:       66.402 [ms] (mean, across all concurrent requests)
Transfer rate:          712.50 [Kbytes/sec] received

の「Requests per second」の数字を拾ってみました。

「広告」

ad(ApacheBench)によるチェック方法

サーバー再起動後、

# ab -n 100 -c 100 (FQDN1)
# ab -n 100 -c 100 (FQDN2)
# ab -n 100 -c 100 (FQDN3)
# ab -n 100 -c 100 (FQDN4)

と行い、

2回目、

# ab -n 100 -c 100 (FQDN1)
# ab -n 100 -c 100 (FQDN2)
# ab -n 100 -c 100 (FQDN3)
# ab -n 100 -c 100 (FQDN4)

のそれぞれの実施後に、「htop」測定、「PageSpeed Insights」でのチェック、
「ad(ApacheBench)」の結果をまとめた。

測定値は、4つのサイトの平均を求めている。

「広告」

サーバー

Conoha VPS
Centos7 3core/2G
Apache/2.4.46
php 7.4.19



「広告」

測定結果

メモリ

httpd
メモリ使用率
MySQL
メモリ使用率
全体
メモリ使用率
php7_module
(すべて同じユーザ権限)
50.75%14.13%64.70%
FPM/FastCGI
(すべて同じユーザ権限)
0.55%12.30%25.76%
FPM/FastCGI
(サイト毎に違うユーザ権限)
0.53%12.25%42.08%
CGI/FastCGI
(サイト毎に違うユーザ権限)
0.48%5.05%76.66%

(横にスクロールできます)

↑ php7_moduleは、apache(httpd)に組み込まれているので、apache(httpd)のメモリ使用率が大きくなる。

FPM/FastCGIは、apache(httpd)のメモリ利用率は、少なく、全体でも、メモリ利用率は、少ない。あらかじめ、php-fpmが、起動しているが、大幅にメモリを占有はしていない。

CGI/FastCGIは、FPM/FastCGIと、同様に、apache(httpd)のメモリ使用率は少ない。全体のメモリ使用率が大きく、このことから、phpに対して、メモリは使われている。

言い換えると、アクセスが増えると、

php7_moduleとFPM/FastCGIは、メモリの変動は少ないが、
CGI/FastCGIは、複数のphpプロセスが誕生/終了するので、メモリ使用量の変動が激しい。

反応速度

SEOにも重要な要素である、「反応速度」。
開いた瞬間にコンテンツが出てくると、見ていても気持ちがいい。

今回、「PageSpeed Insights」でチェックをしたが、phpの実装方法による差異は、見られなかった。
この改善は、キャッシュ、反応速度を除外する要素の排除などで、地道にやっていくのがいいのであろう。

処理能力

Requests per second
php7_module
(すべて同じユーザ権限)
6.2
FPM/FastCGI
(すべて同じユーザ権限)
12.41
FPM/FastCGI
(サイト毎に違うユーザ権限)
12.62
CGI/FastCGI
(サイト毎に違うユーザ権限)
7.7

(横にスクロールできます)

abコマンドによる「Requests per second」の数字を拾ってみた。
数字が大きい方が処理能力が高い。

FPM/FastCGI > CGI/FastCGI > php7_module
の順番であった。

「広告」

その他比較項目

違うバージョン同居php.ini指定
php7_module
(すべて同じユーザ権限)
FPM/FastCGI
(すべて同じユーザ権限)
FPM/FastCGI
(サイト毎に違うユーザ権限)
CGI/FastCGI
(サイト毎に違うユーザ権限)

(横にスクロールできます)

違うバージョンの同居

php7_module
FPM/FastCGI
CGI/FastCGI

どの方式でも、違うバージョンの同居は可能である。

php.iniの指定

php7_module
FPM/FastCGI
上記は、特定の変数は変更可能である。

CGI/FastCGI
は、php.ini自体を指定ができる。

「広告」

php実装方法、まとめ

メモリ処理能力異なる
バージョン
php.ini
指定
ユーザ権限
実行
php7_module
(すべて同じユーザ権限)
FPM/FastCGI
(すべて同じユーザ権限)
FPM/FastCGI
(サイト毎に違うユーザ権限)
CGI/FastCGI
(サイト毎に違うユーザ権限)

(横にスクロールできます)

phpだけの事を考えると・・・

php.iniを個別設定するという共有サーバー的なものなら、CGI/FastCGI
そうでなかったら、FPM/FastCGIがいいのではないでしょうか。

(細かなカスタマイズ(設定)で、測定値が変わる可能性があります)

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