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
こまけぇこたぁいいんだよ!! PHPWebアプリケーションを早くする、それだけだ / ...
Search
shiro seike
PRO
February 11, 2024
Programming
0
100
こまけぇこたぁいいんだよ!! PHPWebアプリケーションを早くする、それだけだ / It doesn't matter how small it is! Make PHPWeb applications faster, that's all!
PHPカンファレンス関西2024
shiro seike
PRO
February 11, 2024
Tweet
Share
More Decks by shiro seike
See All by shiro seike
なぜ適用するか、移行して理解するClean Architecture 〜構造を超えて設計を継承する〜 / Why Apply, Migrate and Understand Clean Architecture - Inherit Design Beyond Structure
seike460
PRO
3
880
生成AIコーディングとの向き合い方、AIと共創するという考え方 / How to deal with generative AI coding and the concept of co-creating with AI
seike460
PRO
1
440
地方のPHPerもクラウドを使う理由 ~コストの最適化とチームに向き合う~ / Why even local PHPers use the cloud ~optimize costs and face the team
seike460
PRO
0
74
OpenTelemetryで始めるベンダーフリーなobservability / Vendor-free observability starting with OpenTelemetry
seike460
PRO
0
210
AIコーディングの本質は“コード“ではなく“構造“だった / The essence of AI coding is not “code” but "structure
seike460
PRO
2
1.2k
OpenTelemetryを活用したObservability入門 / Introduction to Observability with OpenTelemetry
seike460
PRO
1
820
Amazon Q Developer Proで効率化するAPI開発入門
seike460
PRO
0
420
実行委員長が振り返るBacklogWorldの裏側と運営Backlog術 / The chairperson of the executive committee looks back on the backstage of BacklogWorld and the art of managing Backlog.
seike460
PRO
0
15
Amazon Aurora DSQLパフォーマンスチェック / Amazon Aurora DSQL Performance Check
seike460
PRO
0
31
Other Decks in Programming
See All in Programming
All About Angular's New Signal Forms
manfredsteyer
PRO
0
200
コード生成なしでモック処理を実現!ovechkin-dm/mockioで学ぶメタプログラミング
qualiarts
0
230
3年ぶりにコードを書いた元CTOが Claude Codeと30分でMVPを作った話
maikokojima
0
610
Devvox Belgium - Agentic AI Patterns
kdubois
1
130
実践Claude Code:20の失敗から学ぶAIペアプログラミング
takedatakashi
16
6.4k
AI Coding Meetup #3 - 導入セッション / ai-coding-meetup-3
izumin5210
0
3.4k
いま中途半端なSwift 6対応をするより、Default ActorやApproachable Concurrencyを有効にしてからでいいんじゃない?
yimajo
2
450
CSC305 Lecture 08
javiergs
PRO
0
270
なぜGoのジェネリクスはこの形なのか? - Featherweight Goが明かす設計の核心
qualiarts
0
220
Building, Deploying, and Monitoring Ruby Web Applications with Falcon (Kaigi on Rails 2025)
ioquatix
4
2.4k
AI駆動で0→1をやって見えた光と伸びしろ
passion0102
1
730
Developer Joy - The New Paradigm
hollycummins
1
320
Featured
See All Featured
4 Signs Your Business is Dying
shpigford
185
22k
A Modern Web Designer's Workflow
chriscoyier
697
190k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Six Lessons from altMBA
skipperchong
29
4k
Raft: Consensus for Rubyists
vanstee
140
7.2k
Large-scale JavaScript Application Architecture
addyosmani
514
110k
Building Flexible Design Systems
yeseniaperezcruz
329
39k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Stop Working from a Prison Cell
hatefulcrawdad
271
21k
Making the Leap to Tech Lead
cromwellryan
135
9.6k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Leading Effective Engineering Teams in the AI Era
addyosmani
7
550
Transcript
!! PHPWeb PHP 西 2024 2 0 24 . 2
. 11 @seike 4 60 1
自己 @seike 46 0 - - @seike 46 0 -
AWS Community Builder Serverless - Fusic - / 門 - / - 月 PHP - PHP 2024 LT ( ) - PHP 大 2024 LT (Now ) - PHPerKaigi 20 2 4 LT - PHP 小 田 2024 - PHP 香 2024 - PHP 2024 2
!! - @seike 4 60 - Fusic - PHPerKaigi
3
Agenda 1 . 2 . 3 . 4 . 4
01
None
用 - Web - DB - c 5 .large
vCPU 2 4 GiB 20GiB 7
02
ISUCON 12 ISUCON 12 PHP ISUCON 大 自 9
03
phpspy phpspy 11
方 pgrep phpspy 用 12 $ ./phpspy
-b 81 920 --limit= 1 00 0 0 --pid=$(pgrep -n php-fpm) > traces $ ./stackcollapse-phpspy.pl <traces | ./vendor/flamegraph.pl >flame.svg
04
PHP 入 14 SCORE: 13 27 (+ 132 7 0
( 0 %))
DB Web DB 行 用 Web DB 15
DB PHP 入 Web DB 16 SCORE: 13 27 (+
132 7 0 ( 0 %)) SCORE: 14 69 (+ 146 9 0 ( 0 %))
htop htop 17
DB DB MySQL innodb_buffer_pool_size innodb_log_file_size innodb_flush_log_at_trx_commit innodb_flush_method table_open_cache thread_cache_size max_connections
18
DB PHP 入 Web DB DB 19 SCORE: 13 27
(+ 132 7 0 ( 0 %)) SCORE: 14 69 (+ 146 9 0 ( 0 %)) SCORE: 16 95 (+ 169 5 0 ( 0 %))
Index DB Index pt-query-digest 用 20 ALTER TABLE visit_history DROP
INDEX tenant_id_idx; ALTER TABLE visit_history ADD INDEX tenant_id_idx(tenant_id, competition_id, player_id, created_at);
Index PHP 入 Web DB DB Index 21 SCORE: 13
27 (+ 132 7 0 ( 0 %)) SCORE: 14 69 (+ 146 9 0 ( 0 %)) SCORE: 16 95 (+ 169 5 0 ( 0 %)) SCORE: 18 67 (+ 186 7 0 ( 0 %))
N+ 1 22 MySQL App\Isuports\Handlers::playerHandler N+ 1 行
N+ 1 PHP 入 Web DB DB Index N+ 1
23 SCORE: 13 27 (+ 132 7 0 ( 0 %)) SCORE: 14 69 (+ 146 9 0 ( 0 %)) SCORE: 16 95 (+ 169 5 0 ( 0 %)) SCORE: 18 67 (+ 186 7 0 ( 0 %)) SCORE: 24 33 (+ 243 3 0 ( 0 %))
Nginx - worker_processes -> auto - worker_connections - keepalive_timeout 入
gzip gzip_vary gzip_proxied gzip_comp_level gzip_buffers gzip_http_version 24
php-fpm 25 Fork Process Process - pm.max_children - pm.start_servers -
pm.min_spare_servers - pm.max_spare_servers - rlimit_files
php-fpm 26 OPcache PHP 8 目玉 JIT PHP 入 OPcache
opcache.enable JIT opcache.jit opcache.jit_buffer_size opcache.max_accelerated_files opcache.memory_consumption opcache.validate_timestamps XDebug
OS OS 大 ⾒ ulimit 大
net.core.somaxconn vm.swappiness fs.file-max 27
Nginx + php-fpm + OS PHP 入 Web DB DB
Index N+ 1 Nginx + php-fpm + OS 28 SCORE: 13 27 (+ 132 7 0 ( 0 %)) SCORE: 14 69 (+ 146 9 0 ( 0 %)) SCORE: 16 95 (+ 169 5 0 ( 0 %)) SCORE: 18 67 (+ 186 7 0 ( 0 %)) SCORE: 24 33 (+ 243 3 0 ( 0 %)) SCORE: 30 12 (+ 301 2 0 ( 0 %))
見 立 用 大 手 大 自 29
見 30 PHP https://speakerdeck.com/seike 4 6 0 /php-web-application-performance-tuning
Thank You We are Hiring ! https://recruit.fusic.co.jp/