SSIとPHPの負荷比較ベンチマーク。

2018/7/26

確認したいこと

webサイトの各ページにヘッダなどの共通部分を差し込む処理をしたい。 phpでやれば簡単だがapacheには古来よりssiという仕組みがあるらしい。 scriptのphpで書くよりnativeなapacheの仕組みを使ったほうが軽いだろう。 どの程度負荷が軽くなるのかデータがほしい。

比較的最近(2015年)のデータがこちら。

HTML、SSI、PHP はそれぞれサーバをどれくらい重くするか
環境は共有レンタルサーバー。
phpが毎秒30リクエスト
ssiが毎秒200リクエストと1桁軽い。
では2018年現在、vpsだとどうなのか?

計測環境

計測条件と結果

  1. html

    単独のhtml(15kb)。
    ab -n 1000 -c 100 https://test.mydomain.com/test-html.html
    Requests per second:    683.31 [#/sec] (mean)
    
  2. html + ssi

    本体のhtml(13kb)からヘッダ,フッタhtml(各1kb)をinclude。
    ab -n 1000 -c 100 https://test.mydomain.com/test-ssi.html
    Requests per second:    617.85 [#/sec] (mean)
    
  3. php

    単独のphp (15kb)。
    ab -n 1000 -c 100 https://test.mydomain.com/test-php.php
    Requests per second:    668.96 [#/sec] (mean)
    
  4. php + include

    本体のphp (13kb)からヘッダ,フッタhtml(各1kb)をfile_get_contents()。
    ab -n 1000 -c 100 https://test.mydomain.com/test-include.php
    Requests per second:    675.11 [#/sec] (mean)
    
html 683.31 [#/sec]
html + ssi 617.85 [#/sec]
php 668.96 [#/sec]
php + include 675.11 [#/sec]

結果はほぼ同等。phpはssiに遜色ない。 なお 1. html にもinclude検査の時間がかかっているから、 ssi無効化すればその分速くなる。 念のためinclude検査のオーバーヘッドがどの程度か比較する。

Apacheの設定でssiを無効化して同様の計測。

html 716.58 [#/sec]
html + ssi 705.37 [#/sec] ※include部分は欠落。
php 677.89 [#/sec]
php + include 669.12 [#/sec]

逆に遅くなっている。何回か試したがこの傾向は間違いない。 そういう実装なのだろう。Apacheの中身は知る由もない。 ソースのパージング時間などは全体からみれば誤差以下ということだ。

結論

phpで十分に速いのでssiを併用する必要はない。

設定と計測用ファイル。



©