目的
php:fpm-alpineイメージを使ってlaravelを動かしていましたところ、異様にレスポンスが遅かったので調べてみたところこんな話がありました。
https://qiita.com/yoshiken/items/93d170b69d8cb8520bad
どうやらalpineが遅いと。
そこでイメージの選択でどれくらい違いが出るのかを試してみました。
比較対象
- alpine
- debian
- centos
比較方法
laravel new
した直後のプロジェクトをphp artisan serve
で起動し、以下の2パターンで比較してみました。
-
/
(Welcomページ)へリクエスト -
/items
(itemモデルとレコード100件を作って一覧をjsonで返す)へリクエスト
測定にはsiegeを利用しています。
比較結果
$ siege --no-follow -r 10 -c 1 http://localhost:8000
image | response time(s) |
---|---|
debian | 0.31 |
alpine | 0.77 |
centos | 0.81 |
$ siege --no-follow -r 10 -c 1 http://localhost:8000/items
image | response time(s) |
---|---|
debian | 0.19 |
alpine | 1.90 |
centos | 1.67 |
意外とcentosでも遅い結果になりました。
原因は何なのでしょうね?alpineとcentosでは動かすためにインストールしたExtensionが似ていたので、Extensionの違いだったりするんでしょうか。。
参考
Dockerfile
debian
FROM debian
RUN apt-get update
RUN apt-get install -y php
RUN apt-get install -y php-zip
RUN apt-get install -y php-mbstring
RUN apt-get install -y php-dom
RUN apt-get install -y php-mysql
WORKDIR /app
alpine
FROM alpine
RUN apk update
RUN apk add php
RUN apk add php-zip
RUN apk add php-mbstring
RUN apk add php-dom
RUN apk add php-phar
RUN apk add php-json
RUN apk add php-openssl
RUN apk add php-session
RUN apk add php-mysqlnd
RUN apk add php-pdo
RUN apk add php-pdo_mysql
COPY php.ini /etc/php7/php.ini
WORKDIR /app
centos
FROM centos
RUN yum update -y
RUN yum install -y php
RUN yum install -y php-mbstring
RUN yum install -y php-dom
RUN yum install -y php-json
RUN yum install -y php-session
RUN yum install -y php-mysqlnd
RUN yum install -y php-pdo
RUN yum install -y php-pdo_mysql
COPY php.ini /etc/php.ini
WORKDIR /app