Slide 1

Slide 1 text

!! PHPWeb PHP 西 2024 2 0 24 . 2 . 11 @seike 4 60 1

Slide 2

Slide 2 text

自己 @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

Slide 3

Slide 3 text

!! - @seike 4 60 - Fusic - PHPerKaigi    3

Slide 4

Slide 4 text

Agenda 1 . 2 . 3 . 4 . 4

Slide 5

Slide 5 text

01

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

用 - Web - DB -   c 5 .large vCPU 2 4 GiB 20GiB 7

Slide 8

Slide 8 text

02

Slide 9

Slide 9 text

ISUCON 12 ISUCON 12 PHP ISUCON 大 自 9

Slide 10

Slide 10 text

03

Slide 11

Slide 11 text

phpspy phpspy   11

Slide 12

Slide 12 text

方 pgrep   phpspy 用     12 $ ./phpspy -b 81 920 --limit= 1 00 0 0 --pid=$(pgrep -n php-fpm) > traces $ ./stackcollapse-phpspy.pl flame.svg

Slide 13

Slide 13 text

04

Slide 14

Slide 14 text

PHP 入 14 SCORE: 13 27 (+ 132 7 0 ( 0 %))

Slide 15

Slide 15 text

DB Web DB 行 用 Web DB 15

Slide 16

Slide 16 text

DB PHP 入 Web DB 16 SCORE: 13 27 (+ 132 7 0 ( 0 %)) SCORE: 14 69 (+ 146 9 0 ( 0 %))

Slide 17

Slide 17 text

htop htop 17

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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 %))

Slide 20

Slide 20 text

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);

Slide 21

Slide 21 text

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 %))

Slide 22

Slide 22 text

N+ 1 22 MySQL App\Isuports\Handlers::playerHandler N+ 1 行

Slide 23

Slide 23 text

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 %))

Slide 24

Slide 24 text

Nginx - worker_processes -> auto - worker_connections - keepalive_timeout 入 gzip gzip_vary gzip_proxied gzip_comp_level gzip_buffers gzip_http_version 24

Slide 25

Slide 25 text

php-fpm 25 Fork Process Process - pm.max_children - pm.start_servers - pm.min_spare_servers - pm.max_spare_servers - rlimit_files

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

OS OS   大 ⾒ ulimit     大     net.core.somaxconn vm.swappiness fs.file-max 27

Slide 28

Slide 28 text

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 %))

Slide 29

Slide 29 text

見 立 用 大 手 大 自 29

Slide 30

Slide 30 text

見 30 PHP https://speakerdeck.com/seike 4 6 0 /php-web-application-performance-tuning

Slide 31

Slide 31 text

Thank You We are Hiring ! https://recruit.fusic.co.jp/