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
KubernetesでPHPを動かした話
Search
gree_tech
PRO
June 27, 2019
Technology
810
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
KubernetesでPHPを動かした話
「第139回 PHP勉強会@東京」で発表された資料です。
https://phpstudy.doorkeeper.jp/events/93038
gree_tech
PRO
June 27, 2019
More Decks by gree_tech
See All by gree_tech
AI画像認識を活用したゲーム内決済処理検証の自動化
gree_tech
PRO
0
690
長期運営で肥大化したExcelマスターデータの解消に向けた移行事例
gree_tech
PRO
0
710
ゲームにおけるメディアミックス展開との向き合い方 -ヘブンバーンズレッドのメディアミックス企画の立て方-
gree_tech
PRO
0
710
課題発見から始めるプロダクト密着型TA組織立ち上げ 〜小規模TAチームが3Dアセットの生産性を倍にした方法〜
gree_tech
PRO
0
720
属人化を叩き割れ!「制作加速」と「安定化」の矛盾を打破する:8年目プロダクトが辿り着いた「ミスが起こり得ない」アセット制作フローの全貌
gree_tech
PRO
0
690
20年続く長寿タイトルが、15年目にして売上を伸ばせた理由
gree_tech
PRO
0
1k
我々はどう生きるか
gree_tech
PRO
2
980
変わるもの、変わらないもの :OSSアーキテクチャで実現する持続可能なシステム
gree_tech
PRO
0
5.4k
マネジメントに役立つ Google Cloud
gree_tech
PRO
0
100
Other Decks in Technology
See All in Technology
現場の暗黙知を継承するAIエージェント — 対話から生まれる長期記憶と Skills
atsukish
0
200
【Oracle AI Spotlight ウェビナー】AWSか、Azureか、Google Cloudか。その議論にオラクルを含める意義。
oracle4engineer
PRO
1
150
ClaudeCodeでセキュリティ監視業務を半自動化_1年の運用でわかったAIに任せる設計の5つのポイント
kintotechdev
4
1k
The Django UUID Story - DjangoCon US 2026
pauloxnet
0
360
Sony-DroidKaigi2026
sony
0
180
Introduction to Bill One Development Engineer
sansan33
PRO
0
480
Eight Engineering Unit 紹介資料
sansan33
PRO
3
8.3k
Introduction to Sansan for Engineers / エンジニア向け会社紹介
sansan33
PRO
6
77k
会計事務所と顧問先の契約関係をOIDC・OAuthで表現する
terara
0
560
VPCでもFloatingIPを使いたいんだ
y_kotani
1
140
PdMをやめて、 "プロダクトビルダー"という 働き方に変えました / PdM to Product Builder
shikichee
2
580
Bet AI Day 2026丨How We Bet AI: AIとともに働く場をつくる
layerx
PRO
0
630
Featured
See All Featured
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
370
Fashionably flexible responsive web design (full day workshop)
malarkey
408
67k
30 Presentation Tips
portentint
PRO
1
380
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
570
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.7k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
69
64k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
180
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
430
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
35
2.8k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
400
What does AI have to do with Human Rights?
axbom
PRO
1
2.3k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
490
Transcript
で を動かした話 藤田貴大
自己紹介 藤田貴大(@takfjt) グリー株式会社Wright Flyer事業本部Game Publishing部Serverチーム ゲームアプリのサーバエンジニアです
はじめてGKEでゲームサーバを構築 負荷試験とその対策などで携わる 今回は、負荷試験の際に見えてきた Kubernetes上でPHPのサービスを動かしたときの躓き を紹介したいと思います はじめに
Kubernetesそのものの話はしません PHP、コンテナ、Kubernetesに関する話は ふんわりまざっています 厳密じゃないです と、いうことで
「ホストのクラスターを横断してアプリケーションコンテ ナを自動デプロイ、スケーリング、操作するためのプ ラットフォーム」 「Kubernetes」(参照 2019-03-19) 『ウィキペディア日本語版』 Kubernetesとは
Apacheパラメータ未調整問題
なんか遅いなーと思って調べたらApacheの パラメータに調整すべきところがいくつかあった
いままで、php.iniくらいまではインフラチームの担当範 囲だった コンテナを導入すると、Dockerfileくらいまではゲーム チームの担当範囲になる → chefなどからノウハウを回収
DNS Lookup溢れる問題
高負荷をかけるとDNS Lookupのエラーが頻発 kube-dnsのCPUが100%にはりついていた
Kubernetes DNS service1 kube-system DNS kubernetes cluster Cloud SQL Cloud
Spanner Cloud Memorystore The Internet
かなり仕事が多い service1 kube-system DNS kubernetes cluster Cloud SQL Cloud Spanner
Cloud Memorystore The Internet クラスタ内の名前解決 Google Cloud内の 名前解決 インターネット側の 名前解決
PHPであることによる原因 Kubernetesであることによる原因 クラウドであることによる原因 実装による原因 複合的な原因
コネクションプールができない 実際には、PDOでも各種拡張モジュールでも 持続的接続の方法はけっこうあるが、 やったことがなかった → リクエスト毎にDNS Lookup PHPであることによる原因
IPv6をdisableにするなど、OSのコアの設定に 手がだしにくい 使っていないAAAAレコードの問い合わせが多発 PHP(を含めて多くの言語)はOSがIPv6をenableにしてると 問い合わせに行く dns_get_record関数ならAレコードだけ、みたいな制御は効くが、 ext/mysqliにホスト名を渡した時などは制御できない Kubernetesであることによる原因
マネージドサービスを使うと、 基本、名前でエンドポイントが与えられる RDB memcached redis etc... クラウドであることによる原因
テーブル毎に別コネクションになっている ソーシャルゲームの事情で、DBをテーブルで 分割することがよくあり、このような実装 実装による原因
sidecarとしてdnsmasqを動かしておく 原因を1つずつつぶして行くのは厳しかった 解決案
Sidecar方式で解決 service1 kube-system DNS kubernetes cluster Cloud SQL Cloud Spanner
Cloud Memorystore The Internet DNS DNS DNS DNS ご存じの方は、この図だとDaemonSet?って 思うかもしれませんが、実際にはsidecar方式で 解決しました うまい図が浮かばなくてこうなっています。すいません
「みんなのDocker/Kubernetes」にDaemonSetでやってると書いてあっ たのですけど、どうやったらできるか知っている人がいたら教えてくだ さい
だが...
dnsmasq先に死ぬ問題
デプロイ時など、コンテナのシャットダウンが 一斉に開始 httpのコネクションが無くなるまで待機 実際はまだdnsmasqが立ち上がっていない問題もあっ た apacheの起動を53番が開くまで待つ対応も入れた
ついでに宣伝
https://github.com/gree/php-custom-environment-v ariables 連想配列の特定の値を、環境変数をつかって変更で きる コンテナは環境変数で設定したいことが多い getenvだとyamlとかjsonでつらい