えびサブレ

変なオタクの備忘録

パソコン

当ブログをコンテナ化しました

投稿日:2018-03-05 更新日:

みんな大好きDocker

当ブログを自宅サーバで運用し始めた2015年10月、私はピカピカの大学生でした。面白いことに2年経った今ではカピカピの社畜です。ebiiim.com(の当ブログを含めた大部分)は学生の特権でインストールしたWindows ServerとIISで運用していました。

当時は新しかった1Windows Server 2012 R2も、今や管理職のおっさんでもシャットダウンくらいはできるレベルにまで普及しました。

つまり、なんかパッとしないOSになったわけです。(しかもshellが使えない)

そこで最近流行しているらしい2IaC(Infrastructure as Code)の考えに則ったイケてる感じの基盤にしようと思いました。都合の良いことに、机の上にはこんな本があり、DockerHubにはWordPressの公式イメージが存在しています。

WordPressの移行

DockerでWordPressのコンテナ(ウェブサーバはApache)とMySQLのコンテナを起動します。データの移行はちょっと悩んだ結果All-in-One WP Migrationプラグインを使いました(IISからApacheに移すのに苦労しそうなので…)。

ついでにURLをhttps://ebiiim.com/blogからhttps://blog.ebiiim.comに変更しました。こちらのほうが今風な感じがします!

運用

バックアップのために、今までは定期的にVMのコピーを作成します(気づいたら1TBくらい使ってたり…)。また、落雷等による自宅リージョンのダウンに対処すべく、記事を書く際にはついでにプラグインによるバックアップを行い、クラウドのオブジェクトストレージに保存しています(300MBくらい)。
今後はVMのコピーを作る代わりにDBdump + wwwディレクトリのバックアップを定期的に行います。これはクラウドに入れても問題ないサイズなので、プラグインによるバックアップは続けるかどうか悩んでいます(というかやってることは同じのはず…)。

OSの管理は不要になりましたが、定期的に最新のDockerイメージにする必要があります。今までは、OS更新時にはVMを複製してブルーグリーンデプロイメントを行っていました。これが結構待ち時間が長くてイライラします。今後はコンテナでやれば良いので楽になるはずです。

パフォーマンス比較

当ブログは私の技量の問題により読み込み時間がクッソ長く、私自身すらイライラするレベルでした。移行後にこれ明らかに読み込み早くね?と感じたので測定しました。

Akamaiの調査によるとユーザは2秒を超えるとキレるらしいです。もともとは体感で5秒くらいなので完全にアウトでした。今はギリギリアウトなくらいまで改善しています。

環境

  • 1: もともとの環境
  • 2: Docker移行後
  • 3: 1を2と同じ物理サーバに移動(1の物理サーバが高負荷っぽいので)

DockerはサービスごとにVMを分けている3ので、2のマシンにはWordPressとMySQLのコンテナのみが稼働しています。

# OS APP CPU MEM DISK
1 WS 2012 R2 (VM) IIS + MySQL Xeon E3-1240 v3 vCPU * 2 4GB SATA SSD
2 Ubuntu 16.04 (VM) Apache + MySQL Xeon E5-2640 v2 vCPU * 2 4GB SATA SSD
3 WS 2012 R2 (VM) IIS + MySQL Xeon E5-2640 v2 vCPU * 2 4GB SATA SSD

Load Impactなるウェブサイトのパフォーマンスを測定するウェブサービスを利用しました。詳しい説明はGoogleに譲りますが、無料枠では対象サーバアクセス元の地域アクセスするユーザ数(50まで)を指定して、月に5回(?)負荷テストができます。今回は東京・50ユーザでやります。

測定結果

図1. (#1) 1ユーザで2s程度; 50ユーザで4.8秒程度; 全体的に不安定


図2. (#2) 1-50ユーザで400ms程度


図3. (#3) 1-50ユーザで2s程度


図1から、もともと当ブログをホストしていたサーバが高負荷らしいと気づき、Dockerと同じサーバに移動してからもう一度検証しました。

図2と図3を比べると、Docker環境のほうが5倍ほど速いとわかります。IISがApacheより遅いのか、Windows Serverのオーバヘッドがすごいのか、どこかのチューニングがひどいのかはわかりません4が、とにかく速くなったことは事実のようです。

MacBook(2016)でFirefoxの開発ツールを見てみます。#1は測定しませんでしたが、図1と図3において1ユーザのときはどちらも2s程度だったので、#3に近い結果になると考えられます。

図4. (#2) / 194ms DOMContentLoaded 1.81s load 6.80s


図5. (#3) / 1836ms DOMContentLoaded 3.36s load 7.09s

DOMContentLoadedが結構違うので、最初のHTMLの転送が問題だとわかります。/ファイルの転送にかかる時間を見ると、#2は194msで、#3は1836msと9倍くらい遅いです。PHPインタープリタの問題?

DOMContentLoaded: 最初のHTMLドキュメントの読み込みと解析が完了した時に発火し、 スタイルシートや画像、サブフレームの読み込みが終わるのを待ちません。
load: loadイベントは、リソースおよびその依存リソースの読み込みが終わると発生します。
Web technology reference – MDN


  1. SIerでは2008 R2が主流 
  2. 会社では取引先含めて一度も聞いたことがないが… 
  3. 安定性・セキュリティのため 
  4. 多分チューニングがひどい。というか、してない。 

-パソコン
-, , ,

執筆者:


comment

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

関連記事

SanDisk SSD PLUS、ご逝去される

既視感のあるタイトルですね…?
2日間ほど止まりました、すみません。

自宅サーバにブログを移転する

サーバにIISとWordPressをインストールし、ブログを移転します。

PRIMERGY TX1330 M2が安い

自宅サーバ民向けの記事です。本体は安いけどいろいろとお金がかかる気がする…買うべきなんだろうか…

Veeam Endpoint Backup でNASにバックアップを取る

NASにパソコンのバックアップデータを突っ込んでいます。NASが壊れた時は諦めます…

自宅シンクライアント化?

中古のWYSE C10LEを買いました。とても便利です。
ユーザが自分だけなので、VDIは使いません。(使えません)

webmaster

icon
webmaster: えびーむ

Google アナリティクスの統計

アーカイブ

最近のコメント