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
php-fpmのプロセスが枯渇した日-調査・対処・そして本当にやるべきだったこと-
Search
にわ
July 19, 2026
Programming
68
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
php-fpmのプロセスが枯渇した日-調査・対処・そして本当にやるべきだったこと-
PHP Conference 2026 LT 登壇資料
にわ
July 19, 2026
More Decks by にわ
See All by にわ
「値はあるのに空判定」される怪奇現象を追ったら、犯人は __isset だった話 / PHPerKaigi 2026 ルーキーズLT
shibuchaaaan
0
54
Other Decks in Programming
See All in Programming
Terraform標準の組織で AWS CDKをどう使うか
mu7889yoon
0
290
初めてのKubernetes 本番運用でハマった話
oku053
0
130
AI駆動開発を妨げる技術的負債の解消アプローチ / ai-refactoring-approach
minodriven
17
9.1k
エンジニアにデザインハーネスを 〜デザインプロセスを規定するためのハーネス〜 / Design harness from an engineer's perspective
rkaga
2
1.5k
PHPだって関数型したい 〜できること、できないこと〜 / fp-in-php
jsoizo
0
220
地域 SRE コミュニティ最前線 - ホンマでっかSRE勉強会
tk3fftk
0
250
JAWS-UG横浜 #102 AWSサ終供養LT会 成仏できない AWS サービスたち 〜本日、三体供養します〜
maroon1st
0
210
Welcome to the "Parametricity" 🏙️ − Generic だけど Specific な世界 −
guvalif
PRO
1
170
Embedded SREと共に達成した会員管理システムのAWS移行 - SRE NEXT 2026 ランチスポンサーセッション
niftycorp
PRO
1
2.7k
そのテスト、説明できますか?~LWテスト戦略FW~のご紹介
nakahara
0
210
『コードを書く以外の』エンジニアリング〜課金基盤移行プロジェクト推進のためのTips4選
yuriko1211
0
510
SLOをサービス品質の共通言語にするために 取り組んできたこと
wakana0222
0
510
Featured
See All Featured
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.5k
Are puppies a ranking factor?
jonoalderson
1
3.7k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
180
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.4k
Producing Creativity
orderedlist
PRO
348
40k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
2k
Why Our Code Smells
bkeepers
PRO
340
58k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
470
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.8k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
460
The Curious Case for Waylosing
cassininazir
1
430
Transcript
php-fpmのプロセスが枯渇した日 〜調査・対処・ そして本当にやるべきだったこと〜 にわ @PHP Conference 2026
自己紹介 丹羽美希(にわみき) 趣味 お酒、バンド、バイクが好き ベース弾いてます 仕事 ユースタイルラボラトリー (ちょっと古い) 社内システム開発担当
504 Gateway Timeout 3
500エラーとかじゃないから、 PHPの処理に到達する以前に apacheが死んでるのでは? 4
apacheが死んでた ↓ とりあえずシステム復旧のた めapache再起動 5
apacheが亡くなった現場 // まずは直近のapacheエラーログ確認 $ tail -n 50 /var/log/httpd/error_log … [mpm_event:error]
[pid 3417425:tid 139922572937536] AH03490: scoreboard is full, not at MaxRequestWorkers.Increase ServerLimit. 6
FastCGI Process Manager 7
php-fpmは 「PHPの実行エンジン」 プロセス リクエスト
php-fpmの状況確認 $ ps aux | grep 'php-fpm' apache 2487148 2.1
3.7 821056 67984 ? S 15:37 0:20 php-fpm: pool www apache 2487155 1.4 3.6 745496 66868 ? S 15:38 0:13 php-fpm: pool www apache 2487223 1.5 4.3 757628 79476 ? S 15:38 0:14 php-fpm: pool www …(いっぱい) // 数を確認 $ ps aux | grep php-fpm | wc -l 22 9
php-fpmのプロセス数設定 $ grep "pm.max_children" /etc/php-fpm.d/www.conf pm.max_children = 20 10
php-fpmのプロセス上限 行っちゃってる!!! 11
php-fpm のエラーログを確認 $ tail /var/log/php-fpm/error.log [WARNING] pool www: server reached
pm.max_children setting (20), consider raising it 12
①プロセス数増やせば 解決やん! 13
pm.max_children設定数の考え方 pm.max_children = サーバーの利用可能メモリ ÷ 平均的な PHPプロセスのメモリ使用量 14
サーバーの利用可能メモリ $ free -m total used free Mem: 1774 407
275 Swap: 2047 483 1564 shared buff/cache available 134 1091 1056 15
PHPプロセスのメモリ使用量平均 $ ps aux | grep 'php-fpm' apache 2499211 6.7
4.4 754848 80760 ? S 17:25 0:27 php-fpm: pool www apache 2499212 5.7 3.5 811144 64740 ? S 17:25 0:23 php-fpm: pool www apache 2499354 4.4 3.2 736460 58424 ? S 17:27 0:12 php-fpm: pool www apache 2499426 3.7 4.1 821104 74896 ? S 17:28 0:08 php-fpm: pool www apache 2499497 3.5 3.4 810872 62064 ? S 17:29 0:06 php-fpm: pool www 16
1056MB / 68.1768MB = 15.48914プロセス 分使える 17
②そもそもなんで プロセスこんな溜まったん? ↓ phpの処理が遅いのが問題? 18
めっちゃ session_start()あるけど何!? [07-Jan-2026 15:39:58] [pool www] pid 2487291 script_filename =
/project/XXX.php [0x00007fd1f0013410] session_start() /project/config.php:22 [07-Jan-2026 15:39:58] [pool www] pid 2487294 script_filename = /project/YYY.php [0x00007fd1f0013410] session_start() /project/config.php:22 … 19
session_start()が遅くなった原因 1. 2. 3. 4. 重いSQL処理がプロセスを長時間占有 重い処理がセッションを掴んだまま走り続ける 後続リクエストが session_start() でロック解除待ちに連鎖
30個のプロセスがすべて「待ち」で埋まる → Swapまで使い果たしてフリーズ 20
どうすべきだったのか? 正しいプロセス数を設定 プロセスを詰まらせない設計 • メモリ計算なしに数値を増や • 重いSQLのチューニング すのは危険 • 重い処理もチューニング!
• 利用可能メモリ ÷ 1プロセス 非同期化するのも手 のメモリ使用量 • まず実測 21
まとめ 1. WebのPHPはphp-fpmくんが動かしてくれている (他の場合もある) 2. 実測と適切な設定をしましょう! 3. プロセスを詰まらせない設計が、安定稼働の根本 22
ご清聴ありがとうございました!