Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Apache から LiteSpeed に乗り換えてみませんか? / php-conferen...
Search
TAKAHASHI Kunihiko
December 01, 2019
Technology
1
1.4k
Apache から LiteSpeed に乗り換えてみませんか? / php-conference-japan-2019-track5-hello-litespeed
2019/12/01 に行われた PHPカンファレンス2019の Track 5 で発表した「Apache から LiteSpeed に乗り換えてみませんか?」の登壇資料です。
TAKAHASHI Kunihiko
December 01, 2019
Tweet
Share
More Decks by TAKAHASHI Kunihiko
See All by TAKAHASHI Kunihiko
Webアプリケーションエンジニアだった私がホスティング事業に興味を持った理由 / Fukuoka UIJ Turn gmo pepabo
kunit
0
450
アプリケーションエンジニアな私がホスティング業界に来て感じたあれこれ / ChugokuDB Vol27
kunit
0
550
Google App Engine PHP 7.2 を試してみる #phpstudy / google app engine php 7.2
kunit
1
900
独立したコアレイヤパターンをためしてみる / try independent core layer pattern
kunit
3
900
CircleCI 2.0 を使い倒そう / phpcon kansai 2018 circlci docker
kunit
7
2.6k
PHPのバージョンアップについてあれこれ / luncers lunch study 3 php version up
kunit
0
2.1k
CircleCI の歩き方 / CircleCI #phpstudy
kunit
2
250
CircleCI 2.0 をつかってみよう / CircleCI #phpcondo2017
kunit
0
650
Docker for Mac/Winってどうなの? / #fukuokaphp docker for mac and win
kunit
0
190
Other Decks in Technology
See All in Technology
KubeVirt Networking ONIC 2024
orimanabu
4
650
Low Latency Join Method for Distributed DBMS
yugabytejapan
0
180
ADRを運用して3年経った僕らの現在地
onk
PRO
13
5.8k
エムスリー全チーム紹介資料 / Introduction of M3 All Teams
m3_engineering
1
320
Vespaを利用したテクいベクトル検索
szdr
2
190
Kubernetes Meetup Tokyo #67 - KEP-3619: Fine-grained SupplementalGroups Control / k8sjp67-kep-3619
everpeace
0
160
WSUSが非推奨に!? Windowsの更新管理を改めて勉強する!
ebibibi
0
270
テストを楽に書きたい
tomorrowkey
1
200
組織デバイスのための効率的なアプリケーション更新戦略
kenchan0130
0
320
これはPerl? それともRuby? クイズ〜〜〜〜〜!!!- Perl or Ruby Quiz
moznion
2
1.9k
AWS Lambdaで実現するスケーラブルで低コストなWebサービス構築/YAPC::Hakodate2024
fujiwara3
7
3.7k
O'Reilly Superstream: Building a RAG App to Chat with Your Data
pamelafox
0
120
Featured
See All Featured
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
25
660
Imperfection Machines: The Place of Print at Facebook
scottboms
264
13k
Faster Mobile Websites
deanohume
304
30k
Bash Introduction
62gerente
608
210k
The Art of Programming - Codeland 2020
erikaheidi
51
13k
Designing on Purpose - Digital PM Summit 2013
jponch
114
6.9k
How to Think Like a Performance Engineer
csswizardry
16
1k
Designing the Hi-DPI Web
ddemaree
280
34k
Designing Experiences People Love
moore
138
23k
Facilitating Awesome Meetings
lara
49
6k
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
We Have a Design System, Now What?
morganepeng
50
7.2k
Transcript
Apacheから LiteSpeedに 乗り換えて みませんか? (デモ内容補足版) 2019-12-01 PHP Conference Japan 2019
GMO Pepabo, Inc @kunit
自己紹介 ✔高橋邦彦 ✔@kunit ✔GMOペパボ株式会社 ✔ホスティング事業部所属 ✔2018年11月に東京から福岡 に移住
「みんなのPHP」でるぞー ✔ 技術評論社さんからでます ✔ 電子版は本日発売 ✔ 物理本は12/6発売 ✔ 執筆者、総勢18名!! ✔
私は1章担当しました ✔ みなさん、買ってね!
GMOペパボ株式会社 ✔ 一緒に働く仲間を募集中です! ✔ ご興味のある方はぜひお声がけください
GMOペパボ株式会社 ✔ロリポップ! ✔ムームードメイン ✔カラーミーショップ ✔SUZURI ✔minne ✔その他にも多数のサービスをして ます!
ロリポップ! 9月に新プラン追加 ✔ハイスピードプラン ✔LiteSpeed を採用しています
こんな方はいらっしゃいませんか? ✔ずっとApacheを使っていて、nginx + php-fpm に移行したいなと思ったが ✔長年熟成に熟成を重ねてきた数百行の秘 伝の mod_rewrite ルールが存在して いて
✔泣く泣くApacheを使い続けているとい う ✔あなたに特に本日の発表をおすすめしま す!
LiteSpeed とは ✔LiteSpeed Technologies が開発している Webサーバー ✔第4のWebサーバーと言われて いる ✔Apache ✔nginx
✔第3は?
LiteSpeed とは ✔有償版とオープンソース版がある ✔有償版はホスティング事業者が 嬉しい機能が満載 ✔オープンソース版は有償版に比べ て一部機能が使えない ✔ロリポップ!ハイスピードプラン では有償版を利用しています
LiteSpeed の特徴 ✔Apache 互換 ✔イベントドリブンアーキテクチャ ✔HTTP/2、QUIC、HTTP/3 ✔DoS/DDoS 対策 ✔WordPress に対するキャッ
シュ、攻撃対策
Apache 互換! ✔有償版はApacheの httpd.conf がそのままつかえる ✔有償版は .htaccess がそのままつ かえる ✔既存のApacheから5分で乗り換え
れると公式は言っている ✔オープンソース版は mod_rewrite ルールを解釈してくれる
LiteSpeed 上での PHP ✔ LiteSpeed SAPI というのが準備さ れている ✔ PHP
のコアにきちんとあるんです
Apache + mod_php ✔Apache 本体のプロセスにPHPインタプリタ がそのままロードされる ✔静的コンテンツとPHP処理プロセスは同じもの で処理される ✔静的コンテンツを大量にさばきたくても、プロ セスを増やすとPHP側も増えてしまい、DB接
続数やメモリ使用量等で問題になる ✔Apache は prefork で動作(C10K問題) ✔PHPのバージョンは全プロセス同じものとなる ✔php.ini は全プロセスで同じものとなる
nginx + php-fpm ✔nginx とは別に php-fpm を起動しておい て、リクエストを転送する ✔それぞれ別管理、別起動 ✔静的コンテンツは
nginx、PHPは php-fpm で処理できるので効率的 ✔イベントドリブン(C10K問題に強い) ✔バーチャルホストごとにPHPのバージョンを変 更可能 ✔バーチャルホストごとに php.ini 指定可能 ✔.htaccess は使えない
LiteSpeed ✔LiteSpeed WebサーバーにPHPを利用するア クセスが来た際に、PHPの処理プロセスを起動さ せることが可能 ✔もちろん、予め処理プロセスを起動しておくこと も可能だが、これもLiteSpeed Webサーバー が管理してくれる ✔イベントドリブン(C10K問題に強い)
✔一定時間処理がないPHP処理プロセスは自動的に 落としてくれる ✔LiteSpeed Webサーバー本体で静的コンテン ツを、PHPは別プロセスで処理するので効率的
LiteSpeed ✔有償版は httpd.conf/.htaccess 使用可 ✔オープンソース版は .htaccess から rewrite ルールの読み込みが可能 ✔バーチャルホストごとに細かい制御が可能(秒間
リクエスト数や帯域幅等) ✔バーチャルホストごとに php.ini 指定可能 ✔外部アプリケーションという考え方があ り、PHPの処理はこれを利用する ✔外部アプリケーションをサーバー全体もしくは バーチャルホストごとに設定可能
LiteSpeed 外部アプリケーション ✔外部アプリケーションごとにPHPのバージョ ン指定できる ✔外部アプリケーションごとに実行ユーザを変 更できる(suEXEC) ✔メモリ使用量、プロセス数を制御可能 ✔外部アプリケーションは拡張子に対して指定 する ✔つまり、同じバーチャルホストで
も、.php73 と .php72 でバージョンを変 えるというエグいこともできる
LiteSpeed ✔有償版には WordPress の wp- login.php や xmlrpc.php に対す る
Brute Force Attack Protection という機能がある ✔一定時間内に決まった回数アクセスが あるとそのIPを弾くとかが可能 ✔LiteSpeed Cache Plugin という WordPress Plugin をオフィシャ ルで提供している
LiteSpeed PHPのインストール ✔LiteSpeed 公式リポジトリからインス トール可能 ✔PHP 5.2 から 7.3 まで準備されている
✔2019/11/30 現在は 7.4 は準備され てなかった(残念) ✔yum install lsphp73 lsphp73- devel ... ✔apt-get install lsphp73 lsphp73- devel ...
説明だけだとあれなので ✔実際に動いているところを見て いただきましょう
ここから、補足ページです ✔ここ以降は当日行ったデモの内容のダイ ジェストを補足します ✔当日、デモ内容が文字が小さくて見れな かった方、本当にすみませんでした ✔アーカイブ動画もチェックしましたが、 見づらい部分もあったのでそれも含めて 補足します ✔当日時間がなくて、本来やりたかった内 容も追加しています
当日デモの環境 ✔Vagrant + VirtualBox で 作った CentOS7 環境 ✔Apache 2.4.6(CentOS)
✔nginx 1.17.6 ✔Apacheおよびnginx向け に、remi から php 7.3 をイ ンストール
当日デモの環境 ✔OpenLiteSpeed 1.6.4 ✔LiteSpeed の公式リポジトリ から 5.6/7.0/7.1/7.2/7.3 のPHPをインストール
OpenLiteSpeed の管理ツール ✔Webインターフェースの管理ツールが 付属する ✔通常は 7080 ポートでアクセスでき る(もちろん変更可能) ✔OpenLiteSpeed では英語のみでは
なく、日本語/中国語での表示が可能 ✔ちなみに、有償版の管理ツールは英語 のみ
OpenLiteSpeed の管理ツール ✔ ログイン画面
OpenLiteSpeed の管理ツール ✔ ダッシュボード(英語表示)
OpenLiteSpeed の管理ツール ✔ ダッシュボード(日本語表示)
OpenLiteSpeed の管理ツール ✔ バーチャルホスト一覧
OpenLiteSpeed の管理ツール ✔ バーチャルホスト詳細
OpenLiteSpeed の管理ツール ✔ 外部アプリケーション(バーチャルホスト単位)
OpenLiteSpeed の管理ツール ✔ 外部アプリケーションと拡張子の関連付け
OpenLiteSpeed の管理ツール ✔ 公開バーチャルホストの一覧(リスナー設定)
OpenLiteSpeed の管理ツール ✔ バーチャルホストとドメインとの関連付け(リスナー設定)
OpenLiteSpeed のPHP 7.3 ✔ OpenLiteSpeed + PHP7.3 でとった phpinfo ✔
Server API は 「LiteSpeed V 7.6」
OpenLiteSpeed のPHP 7.2 ✔ OpenLiteSpeed + PHP7.2 でとった phpinfo ✔
Server API は 「LiteSpeed V 7.6」
OpenLiteSpeed のPHP 7.1 ✔ OpenLiteSpeed + PHP7.1 でとった phpinfo ✔
Server API は 「LiteSpeed V 7.6」
OpenLiteSpeed のPHP 7.0 ✔ OpenLiteSpeed + PHP7.0 でとった phpinfo ✔
Server API は 「LiteSpeed V 7.6」
OpenLiteSpeed のPHP 5.6 ✔ OpenLiteSpeed + PHP5.6 でとった phpinfo ✔
Server API は 「LiteSpeed V 7.6」
OpenLiteSpeed のプロセス ✔ OpenLiteSpeed を起動した直後のプロセス状態 ✔ PHPにまだアクセスしてないので PHP のプロセスはいない
OpenLiteSpeed のプロセス ✔ PHP 7.3 の phpinfo にアクセスした状態 ✔ OpenLiteSpeed
の lscgid からPHPプロセス lsphp が 生成されている ✔ WebサーバーのプロセスとPHPのプロセスが親子関係になる のがなかなかおもしろい
OpenLiteSpeed のプロセス ✔ PHP 7.3/7.2/7.1 のバーチャルホストの phpinfo にアクセスした状態 ✔ OpenLiteSpeed
の lscgid からPHPプロセス lsphp が複数生成されてい る ✔ lscgid の直接の子供の lsphp が外部アプリケーションごとに生成されるもの で、それぞれの外部アプリケーション毎のプロセスは今は1つだけ子供のプロセ スをもっているが、アクセスが増えると子供のプロセスを増やしていく ✔ つまり実際のリクエストを処理しているのは一番子供の lsphp ✔ 各バーチャルホスト毎の外部アプリケーションが別々のアカウント (phpcon73/phpcon72/php71)で処理されていることもわかる
OpenLiteSpeed のプロセス ✔ OpenLiteSpeedの管理ツールをアクセスした後、 PHP 7.3/7.2/7.1 のバーチャルホストの phpinfo にアクセスした状態 ✔
OpenLiteSpeed の lscgid から各バーチャルホ スト毎の外部アプリケーション用の lsphp だけでは なくて、管理ツール用の admin_php も生成され ている
Apache httpd のPHP 7.3 ✔ Apache httpd + PHP7.3 でとった
phpinfo ✔ Server API は 「Apache 2.0 Handler」
Apache httpd のプロセス ✔ Apache httpd を起動し、PHP 7.3 の phpinfo
にアクセスした状態 ✔ httpd のプロセスが複数起動し、どのプロセ スでも静的コンテンツおよびPHPを処理する
nginx + php-fpm のPHP 7.3 ✔ nginx + php-fpm(7.3) でとった
phpinfo ✔ Server API は 「FPM/FastCGI」
nginx + php-fpm のプロセス ✔ nginx と php-fpm をそれぞれ起動し、PHP 7.3
の phpinfo にアクセスした状態 ✔ nginx のプロセスと php-fpm のプロセスは 完全に独立して存在し、静的コンテンツは nginx、PHPの処理は php-fpm 側に転送さ れて処理が行われる
当日行ったベンチマークの注意事項 ✔ ここまで説明したような Apache + mod_php、 nginx + php-fpm、OpenLiteSpeed のそれ
ぞれの 7.3 環境に対して、WordPress 5.3 をイ ンストールして、インストール直後のトップページ に対して、ベンチマークをとってみた ✔ ベンチマークで使ったのは、当日デモしていたノー トPCであり、3つのWebサーバーに対して特に チューニングは行っていないので、あくまでも参考 値 ✔ 環境がもっとリッチなもので、それぞれに対して、 もっとチューニングすれば差異がでてくるものだと 思ってください。
当日行ったベンチマークの注意事項 ✔ WordPress はこんなページ
当日行ったベンチマーク ✔ ベンチマークには ab を利用 ✔ ab -n 1000 -c
100 [URL] という形で実 施 ✔ https ではなく http アクセスでのテスト (httpsにしておいて h2load で HTTP/2 でのテストをするのも面白いかもしれないが 準備が間に合わなかった...) ✔ 当日会場で行った結果は、Apache + mod_php/nginx + php-fpm/OpenLiteSpeed ともに 45 reqs/sec 前後の値で速さは変わらなかった
当日行えなかった比較 ✔ 当日は ab -n 1500 -c 1000 [URL] というもの
を OpenLiteSpeed でのみ行った ✔ OpenLiteSpeed はチューニングなしの状態で 1000並列リクエストを reqs/sec を落とすことな く完了できる ✔ 同一環境で Apache+mod_php と nginx+php- fpm は素の状態だと途中で落ちる(ファイルのオープ ン数の上限に引っかかる等の理由で) ✔ もちろん、Apacheおよびnginx環境でもパラメー ターチューニングを行うことにより処理できるように なるが、LiteSpeedが高負荷状態にもともと強いも のとして設計されているということを説明したかった のでこの説明を当日入れた
ここまでが当日の補足 ✔ あらためて、当日プロジェクターで写したプ ロセスリスト等の結果が見づらかったことを お詫びします ✔ アーカイブ動画ではかろうじて見れるようで すので、この資料とともに見ていただけると 幸いです
LiteSpeed 使っていきましょう! ✔日本ではあまりにも知名度が低 いのがあれですが、もっと使わ れていてもおかしくないと思う ので、ぜひ試してみてくださ い!
? 質問あるかたどうぞ