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.5k
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
460
アプリケーションエンジニアな私がホスティング業界に来て感じたあれこれ / ChugokuDB Vol27
kunit
0
560
Google App Engine PHP 7.2 を試してみる #phpstudy / google app engine php 7.2
kunit
1
920
独立したコアレイヤパターンをためしてみる / try independent core layer pattern
kunit
3
930
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
670
Docker for Mac/Winってどうなの? / #fukuokaphp docker for mac and win
kunit
0
200
Other Decks in Technology
See All in Technology
Amazon Kendra GenAI Index 登場でどう変わる? 評価から学ぶ最適なRAG構成
naoki_0531
0
110
Fanstaの1年を大解剖! 一人SREはどこまでできるのか!?
syossan27
2
170
非機能品質を作り込むための実践アーキテクチャ
knih
5
1.5k
KubeCon NA 2024 Recap / Running WebAssembly (Wasm) Workloads Side-by-Side with Container Workloads
z63d
1
250
サイボウズフロントエンドエキスパートチームについて / FrontendExpert Team
cybozuinsideout
PRO
5
38k
MLOps の現場から
asei
6
650
UI State設計とテスト方針
rmakiyama
2
620
サーバレスアプリ開発者向けアップデートをキャッチアップしてきた #AWSreInvent #regrowth_fuk
drumnistnakano
0
200
re:Invent をおうちで楽しんでみた ~CloudWatch のオブザーバビリティ機能がスゴい!/ Enjoyed AWS re:Invent from Home and CloudWatch Observability Feature is Amazing!
yuj1osm
0
130
TSKaigi 2024 の登壇から広がったコミュニティ活動について
tsukuha
0
160
PHPerのための計算量入門/Complexity101 for PHPer
hanhan1978
5
170
podman_update_2024-12
orimanabu
1
280
Featured
See All Featured
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
127
18k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
29
2k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
111
49k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
BBQ
matthewcrist
85
9.4k
4 Signs Your Business is Dying
shpigford
181
21k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
247
1.3M
How STYLIGHT went responsive
nonsquared
95
5.2k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
365
25k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
95
17k
Documentation Writing (for coders)
carmenintech
66
4.5k
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
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 使っていきましょう! ✔日本ではあまりにも知名度が低 いのがあれですが、もっと使わ れていてもおかしくないと思う ので、ぜひ試してみてくださ い!
? 質問あるかたどうぞ