SlideShare a Scribd company logo
1 of 27
Download to read offline
I/Oを極めろ! for PHPer 
- NewRelicを利用したパフォーマンス改善 - 
藤原 吉規
-自己紹介 - 
ChatWork株式会社 
藤原 吉規 技術部 
サーバーエンジニア 
ビジネスチャットツール「チャットワーク」を展開中 
東京:18人 
大阪:15人USA:6人 
ルクセンブルクに子会社を設立
チャットワークのご紹介 
クラウド型ビジネスチャットツール 
チャットの効率性・シンプルさをビジネスへ 
+ 
ビデオ通話 
チャットタスク管理 
in the cloud
導入ユーザー数46万ユーザー突破! 
導入企業例: 
(2014年10月現在) 
ユーザー数: 
500000 
375000 
250000 
125000 
0 
2011 6 9 12 2012 6 9 12 2013 6 9 12 2014 6 9
アジェンダ 
• はじめに 
• 現在のインフラ構成 
• NewRelicについて 
• 具体的なボトルネックと改善例
はじめに 
• 2011年のサービス開始当初から、成長し続けるサービ 
スを支えるための試行錯誤を実施 
• 2013年からは、主にNewRelicを利用してサービスのボ 
トルネックを計測しつつ改善 
• 今までボトルネックになった部分とのその改善方法を 
ご紹介
現在のインフラ構成
NewRelicについて
NewRelicについて 
• アプリケーション・インフラのパフォーマンス監視サー 
ビス(有料) 
• 各言語用のAgentをサーバーにインストールして利用 
• Pluginを利用すると、AWSの各サービスや外部サービ 
スの監視も可能
改善サイクル 
• NewRelicトレースログからボトルネック箇所の特定 
• PHPのチャットコンサル等を利用して方針決定 
• アプリケーション設計変更 or インフラスケールを決定 
• NewRelicで改善確認
具体的なボトルネックと 
改善例
Amazon S3 
の問題 
• チャットワークのファイル共有機能で利用 
• Webサーバー経由のUpload/Downloadによるパ 
フォーマンス低下
Amazon S3 
の解決策 
• Pre-Signed URLを利用したUpload/Downloadに変 
更 
• http://qiita.com/inokappa/items/ 
dc3ef8b564c7d1f63be2
Amazon EC2 
の問題 
• Elastic Block StorageのIO能力不足 
• syslog 
• php.ini、upload_tmp_dir(/tmp) 
• TMPDIR(/tmp) 
• putenv(‘TMPDIR=/tmp')
Amazon EC2 
の解決策 
• Ephemeral Diskの利用
memcached(ElastiCache) 
の問題 
• 大量のTIME_WAITとレスポンス低下 
• ElastiCache側のCPU使用率の増大
memcached(ElastiCache) 
の解決策 
• php-memcachedの持続的接続を利用 
• ini_set('session.save_path','PERSISTENT=1 
localhost:11211'); 
• http://qiita.com/shin1x1/items/ 
092588ac9b4f610b40d6
MySQL(RDS)の問題 
• マスタDBのCPU利用率増加 
• デッドロック 
• Replica遅延
MySQL(RDS)の解決策 
• 接続タイムアウトの適切な指定 
• $mysqli- 
>options(MYSQLI_OPT_CONNECT_TIMEOUT, 5) 
• innodb_lock_wait_timeoutの指定 
• $mysqli->query("SET 
innodb_lock_wait_timeout=5")
MySQL(RDS)の解決策 
• 持続的接続の利用 
• $mysqli->real_connect('p:localhost', 'my_user', 
'my_password', 'my_db') 
• AutoCommit OFF 
• $mysqli->autocommit(FALSE);
MySQL(RDS)の解決策 
• mysqlnd.net_read_timeoutの指定 
• http://jp1.php.net/manual/en/ 
mysqlnd.config.php#ini.mysqlnd.net-read-timeout
Amazon SQS,DynamoDB 
の問題 
• 大量のTIME_WAITとレスポンス低下 
• AWS SDK for PHPのパフォーマンスが出ない
Amazon SQS,DynamoDB 
の解決策 
• カーネルパラメータ変更 
• http://understeer.hatenablog.com/entry/ 
2014/02/25/173810 
! 
/etc/sysctl.conf 
net.core.somaxconn = 10240 
net.core.netdev_max_backlog = 10240 
net.ipv4.tcp_max_syn_backlog = 10240 
net.ipv4.tcp_max_syn_backlog = 10240 
net.ipv4.tcp_tw_recycle = 1 
net.ipv4.tcp_tw_reuse = 1 
net.ipv4.ip_local_port_range = 1024 65535 
net.ipv4.tcp_fin_timeout = 10
Amazon SQS,DynamoDB 
の解決策 
• AWS SDK for PHP Performance Guide 
• http://docs.aws.amazon.com/aws-sdk-php/ 
guide/latest/performance.html 
• Class Preloader for PHP 
• https://github.com/mtdowling/ClassPreloader
そして、Scalaへ!
ありがとうございました!

More Related Content

Similar to I/Oを極めろ! for PHPer - NewRelicを利用したパフォーマンス改善 -

【初公開】チャットワーク検索機能を支える技術
【初公開】チャットワーク検索機能を支える技術【初公開】チャットワーク検索機能を支える技術
【初公開】チャットワーク検索機能を支える技術Yoshinori Fujiwara
 
【 ITベンチャーを支えるテクノロジー 】チャットワークを支える技術|Chatwork株式会社
【 ITベンチャーを支えるテクノロジー 】チャットワークを支える技術|Chatwork株式会社【 ITベンチャーを支えるテクノロジー 】チャットワークを支える技術|Chatwork株式会社
【 ITベンチャーを支えるテクノロジー 】チャットワークを支える技術|Chatwork株式会社leverages_event
 
CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~
CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~
CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~Yuki Ando
 
最適なビックデータ・システムの構築のために
最適なビックデータ・システムの構築のために最適なビックデータ・システムの構築のために
最適なビックデータ・システムの構築のためにIBM Systems @ IBM Japan, Ltd.
 
DeviceConnect向けCordovaプラグインを作ってみた
DeviceConnect向けCordovaプラグインを作ってみたDeviceConnect向けCordovaプラグインを作ってみた
DeviceConnect向けCordovaプラグインを作ってみたDevice WebAPI Consortium
 
NoSQL勉強会資料(2015/03/12@ヒカラボ )
NoSQL勉強会資料(2015/03/12@ヒカラボ )NoSQL勉強会資料(2015/03/12@ヒカラボ )
NoSQL勉強会資料(2015/03/12@ヒカラボ )Yuji Otani
 
20141003 webマーケティングエンジニアリング
20141003 webマーケティングエンジニアリング20141003 webマーケティングエンジニアリング
20141003 webマーケティングエンジニアリングInnova Inc.
 
Webmarketing_CareerBar_ver1.pdf
Webmarketing_CareerBar_ver1.pdfWebmarketing_CareerBar_ver1.pdf
Webmarketing_CareerBar_ver1.pdfCybozu, Inc.
 
非エンジニアのためのこれだけは押さえておきたいWEBサービスの基礎技術
非エンジニアのためのこれだけは押さえておきたいWEBサービスの基礎技術非エンジニアのためのこれだけは押さえておきたいWEBサービスの基礎技術
非エンジニアのためのこれだけは押さえておきたいWEBサービスの基礎技術div Inc
 
Gmo media.inc dev ops of own way
Gmo media.inc dev ops of own wayGmo media.inc dev ops of own way
Gmo media.inc dev ops of own wayDai Utsui
 
パソナテック Find Your Ability 講演資料 「ディレクターにとってのWeb業界って? 」
パソナテック Find Your Ability 講演資料 「ディレクターにとってのWeb業界って? 」パソナテック Find Your Ability 講演資料 「ディレクターにとってのWeb業界って? 」
パソナテック Find Your Ability 講演資料 「ディレクターにとってのWeb業界って? 」naoki ando
 
PagerDuty会社概要・インシデント管理ソリューション紹介資料 〜インシデントをより早く・少ないリソースで解決し、 将来のインシデントを未然に防ぐには〜
PagerDuty会社概要・インシデント管理ソリューション紹介資料 〜インシデントをより早く・少ないリソースで解決し、 将来のインシデントを未然に防ぐには〜PagerDuty会社概要・インシデント管理ソリューション紹介資料 〜インシデントをより早く・少ないリソースで解決し、 将来のインシデントを未然に防ぐには〜
PagerDuty会社概要・インシデント管理ソリューション紹介資料 〜インシデントをより早く・少ないリソースで解決し、 将来のインシデントを未然に防ぐには〜kusami
 
コールセンターシステムを0から作った話
コールセンターシステムを0から作った話コールセンターシステムを0から作った話
コールセンターシステムを0から作った話Kohtaro Nishi
 
OpenShift Ansbile 活用法 アプリケーションライフサイクルからみる導入効果
OpenShift Ansbile 活用法 アプリケーションライフサイクルからみる導入効果OpenShift Ansbile 活用法 アプリケーションライフサイクルからみる導入効果
OpenShift Ansbile 活用法 アプリケーションライフサイクルからみる導入効果Hideaki Tokida
 
スマートフォン開発の事例 Html5開発の導入ポイント
スマートフォン開発の事例 Html5開発の導入ポイントスマートフォン開発の事例 Html5開発の導入ポイント
スマートフォン開発の事例 Html5開発の導入ポイントMasakazu Muraoka
 
UD company introduction 2022
UD company introduction 2022UD company introduction 2022
UD company introduction 2022RikuHamaguchi
 
今なぜサーバーレスなのか
今なぜサーバーレスなのか今なぜサーバーレスなのか
今なぜサーバーレスなのか真吾 吉田
 
【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座
【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座
【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座DIVE INTO CODE Corp.
 

Similar to I/Oを極めろ! for PHPer - NewRelicを利用したパフォーマンス改善 - (20)

【初公開】チャットワーク検索機能を支える技術
【初公開】チャットワーク検索機能を支える技術【初公開】チャットワーク検索機能を支える技術
【初公開】チャットワーク検索機能を支える技術
 
【 ITベンチャーを支えるテクノロジー 】チャットワークを支える技術|Chatwork株式会社
【 ITベンチャーを支えるテクノロジー 】チャットワークを支える技術|Chatwork株式会社【 ITベンチャーを支えるテクノロジー 】チャットワークを支える技術|Chatwork株式会社
【 ITベンチャーを支えるテクノロジー 】チャットワークを支える技術|Chatwork株式会社
 
CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~
CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~
CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~
 
最適なビックデータ・システムの構築のために
最適なビックデータ・システムの構築のために最適なビックデータ・システムの構築のために
最適なビックデータ・システムの構築のために
 
DeviceConnect向けCordovaプラグインを作ってみた
DeviceConnect向けCordovaプラグインを作ってみたDeviceConnect向けCordovaプラグインを作ってみた
DeviceConnect向けCordovaプラグインを作ってみた
 
NoSQL勉強会資料(2015/03/12@ヒカラボ )
NoSQL勉強会資料(2015/03/12@ヒカラボ )NoSQL勉強会資料(2015/03/12@ヒカラボ )
NoSQL勉強会資料(2015/03/12@ヒカラボ )
 
20141003 webマーケティングエンジニアリング
20141003 webマーケティングエンジニアリング20141003 webマーケティングエンジニアリング
20141003 webマーケティングエンジニアリング
 
Xpjug lt-20210918
Xpjug lt-20210918Xpjug lt-20210918
Xpjug lt-20210918
 
Webmarketing_CareerBar_ver1.pdf
Webmarketing_CareerBar_ver1.pdfWebmarketing_CareerBar_ver1.pdf
Webmarketing_CareerBar_ver1.pdf
 
非エンジニアのためのこれだけは押さえておきたいWEBサービスの基礎技術
非エンジニアのためのこれだけは押さえておきたいWEBサービスの基礎技術非エンジニアのためのこれだけは押さえておきたいWEBサービスの基礎技術
非エンジニアのためのこれだけは押さえておきたいWEBサービスの基礎技術
 
Gmo media.inc dev ops of own way
Gmo media.inc dev ops of own wayGmo media.inc dev ops of own way
Gmo media.inc dev ops of own way
 
パソナテック Find Your Ability 講演資料 「ディレクターにとってのWeb業界って? 」
パソナテック Find Your Ability 講演資料 「ディレクターにとってのWeb業界って? 」パソナテック Find Your Ability 講演資料 「ディレクターにとってのWeb業界って? 」
パソナテック Find Your Ability 講演資料 「ディレクターにとってのWeb業界って? 」
 
PagerDuty会社概要・インシデント管理ソリューション紹介資料 〜インシデントをより早く・少ないリソースで解決し、 将来のインシデントを未然に防ぐには〜
PagerDuty会社概要・インシデント管理ソリューション紹介資料 〜インシデントをより早く・少ないリソースで解決し、 将来のインシデントを未然に防ぐには〜PagerDuty会社概要・インシデント管理ソリューション紹介資料 〜インシデントをより早く・少ないリソースで解決し、 将来のインシデントを未然に防ぐには〜
PagerDuty会社概要・インシデント管理ソリューション紹介資料 〜インシデントをより早く・少ないリソースで解決し、 将来のインシデントを未然に防ぐには〜
 
コールセンターシステムを0から作った話
コールセンターシステムを0から作った話コールセンターシステムを0から作った話
コールセンターシステムを0から作った話
 
Tibco mashery資料
Tibco mashery資料Tibco mashery資料
Tibco mashery資料
 
OpenShift Ansbile 活用法 アプリケーションライフサイクルからみる導入効果
OpenShift Ansbile 活用法 アプリケーションライフサイクルからみる導入効果OpenShift Ansbile 活用法 アプリケーションライフサイクルからみる導入効果
OpenShift Ansbile 活用法 アプリケーションライフサイクルからみる導入効果
 
スマートフォン開発の事例 Html5開発の導入ポイント
スマートフォン開発の事例 Html5開発の導入ポイントスマートフォン開発の事例 Html5開発の導入ポイント
スマートフォン開発の事例 Html5開発の導入ポイント
 
UD company introduction 2022
UD company introduction 2022UD company introduction 2022
UD company introduction 2022
 
今なぜサーバーレスなのか
今なぜサーバーレスなのか今なぜサーバーレスなのか
今なぜサーバーレスなのか
 
【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座
【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座
【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座
 

Recently uploaded

スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxAtomu Hidaka
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdffurutsuka
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000Shota Ito
 

Recently uploaded (7)

スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdf
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
 

I/Oを極めろ! for PHPer - NewRelicを利用したパフォーマンス改善 -