SlideShare ist ein Scribd-Unternehmen logo
1 von 19
Downloaden Sie, um offline zu lesen
2017/10/10 Kazunori Inaba
2017.10.10
第20回 JAWS-UG札幌 勉強会
EC-CUBEによるECサイトの負荷対策
稲葉 一紀@札幌
1
2017/10/10 Kazunori Inaba
稲葉 一紀 (Kazunori Inaba)
サーバーインフラ専門のフリーランスエンジニア@札幌
屋号:稲葉サーバーデザイン
https://inaba-serverdesign.jp/
おもにWeb制作会社、アプリ開発企業・エンジニア向けに
セキュリティ・可用性・性能・拡張性を考慮した
サーバーインフラ構成設計・設定や既存システムの
性能改善調査・支援
や
ミドルウェアの導入・チューニング
などを行います。
2
自己紹介
はじめに
2017/10/10 Kazunori Inaba
• EC-CUBEによるECサイトの負荷対策を行った事例をご紹介します。
• スライドは後日SlideShareにアップします。
http://www.slideshare.net/kazunoriinaba/
Webサイトでも公開します。
https://inaba-serverdesign.jp/
3
負荷対策を行ったECサイト
2017/10/10 Kazunori Inaba
• AWS上で稼働するEC-CUBEによる販売サイト
• サイト名、業種は非公開
• 当初のサーバー構成
• Web: EC2 (CentOS 6, Plesk, Nginx, PHP-FPM, EC-CUBE) x 1
• DB : RDS for MySQL x 1
• セール開始直後から1時間程度、集中アクセスが発生する。
→ ページが表示されない、502エラー。
あるセール日の集中アクセス
- リクエスト数: 数万/分
- リアルタイムセッション数: 2000超
4
当初の構成 – 構成図
2017/10/10 Kazunori Inaba 5
EC-CUBE
セール時のみスケールアップセール時のみスケールアップ
当初の構成 - セール時どうなった?
2017/10/10 Kazunori Inaba 6
EC-CUBE
ページが表示
されない。
502エラー!
負荷対策(1) – 構成図
2017/10/10 Kazunori Inaba 7
EC-CUBE管理
EC-CUBE公開
静的コンテンツ
動的コンテンツ
静的コンテンツ
パス: /admin/~
(default)
・静的コンテンツをCloudFrontで
配信
・ EC2を複数台としALBで振り分け
・ Nginx, PHP, MySQLのパラメー
タチューニング
負荷対策(1) – CloudFrontの導入
2017/10/10 Kazunori Inaba
• 静的コンテンツをCloudFrontで配信
• EC2の負荷を軽減
8
EC-CUBE管理
静的コンテンツ
定期的にjs, css, imageファイ
ルをS3にアップロード
https://cdn.example.jp
S3オリジンで配信
https://example.jp
負荷対策(1) – EC2を複数台に
2017/10/10 Kazunori Inaba
• EC2を複数台とし、ALBで振り分け
• 管理用(1台)と公開用(複数台)に用途を分けてURLパスで振り分け。
• EC-CUBEのセッション管理はRDBで行っているので問題ない。
• EC2単体の負荷軽減。
• 可用性の向上。メンテナンス、スケールアップ時のダウンタイムを軽減。
9
EC-CUBE管理
EC-CUBE公開
パス: /admin/~
(default)
負荷対策(1) – 複数EC2間のデータ同期
2017/10/10 Kazunori Inaba
• /html/{upload,user_data}, /data/{download,downloads,upload}など
• S3バケットを介して管理用→公開用の向きで定期的に同期
• データ同期の向きを片方向にしないと古いファイルで上書きされることに注意。
• lsyncdによる同期だとサーバーが増えたときの設定追加が手間。
10
EC-CUBE管理
EC-CUBE公開
$ aws s3 sync <local> <s3://bucket/>
データ同期用
$ aws s3 sync <s3://bucket/> <local>
パス: /admin/~
(default)
PUT
GET
負荷対策(1) – セール時どうなった?
2017/10/10 Kazunori Inaba 11
EC2の負荷は激減!
EC-CUBE管理
EC-CUBE公開
静的コンテンツ
動的コンテンツ
静的コンテンツ
パス: /admin/~
(default)
RDSに負荷が集中!
ページが表示されな
い。502エラー!
db.m4.10xlarge (40CPU)
でもCPU使用率100%
負荷対策(2) – 構成図
2017/10/10 Kazunori Inaba 12
EC-CUBE管理
EC-CUBE公開
静的コンテンツ
動的コンテンツ
静的コンテンツ
パス: /admin/~
(default)
セッションを
キャッシュ
クエリキャッシュ
DBまわりの構成変更で
RDSの負荷を軽減
負荷対策(2) - 変更点
2017/10/10 Kazunori Inaba
• RDSリードレプリカ、ElastiCache for Redisを追加
• EC-CUBEの改修(担当:ウェブモ株式会社)
• セッション情報の保存先をRDSからElastiCache for Redisに変更。
• データベースのインデックスチューニング。
• ページ単位でDBアクセス先を指定可能とした。
• 更新系ページは、RDSマスターにアクセス。
• 参照系ページは、ElastiCache for Redisにアクセス。
• キャッシュがあればRedisから取得。
• キャッシュがなければRDSリードレプリカにアクセスしRedisに保存。
13
RDSの負荷軽減
→ DBクエリ数、処理行数を減らす!
→ ディスクアクセスを減らす!
負荷対策(2) – 参照系ページのデータ取得
2017/10/10 Kazunori Inaba 14
EC-CUBE公開
クエリキャッシュ
①Redisに
問い合わせ
②キャッシュにあ
ればデータ取得
③キャッシュになけ
ればリードレプリカ
に問い合わせ
④データ取得
⑤Redisにデータ
保存
負荷対策(2) – セール時どうなった?
2017/10/10 Kazunori Inaba 15
EC-CUBE管理
EC-CUBE公開
静的コンテンツ
動的コンテンツ
静的コンテンツ
パス: /admin/~
(default)
セッションを
キャッシュ
クエリキャッシュ
RDSの負荷
が激減!
・セール時も軽快に買い物できる
ようになった!
・EC2, RDSのインスタンスタイ
プを下げてコスト削減を達成。
負荷対策(2) - 一時発生した問題
2017/10/10 Kazunori Inaba
• 順調に稼働していたが、突然RDSマスターのCPU負荷が増大
• 大量のロック競合が発生していた。
• ロック競合は、 EC-CUBEプラグイン「売り切れ時のメール送信」「キャンセル
時の在庫戻し」機能によるものだった。
• これらのプラグインを削除すると、ロック競合がなくなり、CPU負荷が激減し
た。
• プラグインの不具合というよりは、EC-CUBEもプラグインも、もともと集中ア
クセス用には作られていない?
16
負荷テスト環境 on AWS
2017/10/10 Kazunori Inaba
(参考)Developers.IO AWSでJMeterを使った負荷テスト環境を構築する手順
(WindowsありのMaster/Slave構成)
http://dev.classmethod.jp/etc/jmeter-master-slave/
17
Windows
JMeter Master
Linux
JMeter Slave
EC-CUBE管理
EC-CUBE公開
負荷をかける側 ECサイト(検証用)
まとめ (1)
2017/10/10 Kazunori Inaba
ECサイトのサーバー負荷に対して、主に以下の対策を行った。
1. CloudFrontによる静的コンテンツ配信
2. EC2を複数台に
3. ElastiCache for Redisによるクエリキャッシュ
アクセス集中時のレスポンスが大きく改善できた。
3.が最も効果的。
これらの対策は、EC-CUBEに限らず、どんなWebアプリケーションで
もだいたい同じ。
18
まとめ (2)
2017/10/10 Kazunori Inaba
• サーバー側だけではなく、アプリケーション側の改善が必須。
• 例えば、サーバーのリソース合計を10倍しても、性能アップは10倍以下。
• Apache/Nginx, PHP, MySQLのパラメータチューニングでも性能向上は限定さ
れる。
• memcached/Redisによるクエリキャッシュの導入や適切なDBインデックスチ
ューニングは、それ以上の劇的な性能改善効果があり得る。
【アプリケーション改善の参考資料】
• クラウド時代だからこそ見直したいPHPアプリケーションのパフォーマンスチュー
ニング
https://www.slideshare.net/marcyterui/php-60979337
19

Weitere ähnliche Inhalte

Was ist angesagt?

20200721 AWS Black Belt Online Seminar AWS App Mesh
20200721 AWS Black Belt Online Seminar AWS App Mesh20200721 AWS Black Belt Online Seminar AWS App Mesh
20200721 AWS Black Belt Online Seminar AWS App MeshAmazon Web Services Japan
 
20190326 AWS Black Belt Online Seminar Amazon CloudWatch
20190326 AWS Black Belt Online Seminar Amazon CloudWatch20190326 AWS Black Belt Online Seminar Amazon CloudWatch
20190326 AWS Black Belt Online Seminar Amazon CloudWatchAmazon Web Services Japan
 
20191029 AWS Black Belt Online Seminar Elastic Load Balancing (ELB)
20191029 AWS Black Belt Online Seminar Elastic Load Balancing (ELB)20191029 AWS Black Belt Online Seminar Elastic Load Balancing (ELB)
20191029 AWS Black Belt Online Seminar Elastic Load Balancing (ELB)Amazon Web Services Japan
 
20180425 AWS Black Belt Online Seminar Amazon Relational Database Service (Am...
20180425 AWS Black Belt Online Seminar Amazon Relational Database Service (Am...20180425 AWS Black Belt Online Seminar Amazon Relational Database Service (Am...
20180425 AWS Black Belt Online Seminar Amazon Relational Database Service (Am...Amazon Web Services Japan
 
20190514 AWS Black Belt Online Seminar Amazon API Gateway
20190514 AWS Black Belt Online Seminar Amazon API Gateway 20190514 AWS Black Belt Online Seminar Amazon API Gateway
20190514 AWS Black Belt Online Seminar Amazon API Gateway Amazon Web Services Japan
 
Amazon Pinpoint × グロースハック活用事例集
Amazon Pinpoint × グロースハック活用事例集Amazon Pinpoint × グロースハック活用事例集
Amazon Pinpoint × グロースハック活用事例集Amazon Web Services Japan
 
[AKIBA.AWS] NLBとPrivateLinkの仕様に立ち向かう
[AKIBA.AWS] NLBとPrivateLinkの仕様に立ち向かう[AKIBA.AWS] NLBとPrivateLinkの仕様に立ち向かう
[AKIBA.AWS] NLBとPrivateLinkの仕様に立ち向かうShuji Kikuchi
 
20190130 AWS Well-Architectedの活用方法とレビューの進め方をお伝えしていきたい
20190130 AWS Well-Architectedの活用方法とレビューの進め方をお伝えしていきたい20190130 AWS Well-Architectedの活用方法とレビューの進め方をお伝えしていきたい
20190130 AWS Well-Architectedの活用方法とレビューの進め方をお伝えしていきたいAmazon Web Services Japan
 
20190911 AWS Black Belt Online Seminar AWS Batch
20190911 AWS Black Belt Online Seminar AWS Batch20190911 AWS Black Belt Online Seminar AWS Batch
20190911 AWS Black Belt Online Seminar AWS BatchAmazon Web Services Japan
 
202205 AWS Black Belt Online Seminar Amazon VPC IP Address Manager (IPAM)
202205 AWS Black Belt Online Seminar Amazon VPC IP Address Manager (IPAM)202205 AWS Black Belt Online Seminar Amazon VPC IP Address Manager (IPAM)
202205 AWS Black Belt Online Seminar Amazon VPC IP Address Manager (IPAM)Amazon Web Services Japan
 
20180509 AWS Black Belt Online Seminar Amazon GuardDuty
20180509 AWS Black Belt Online Seminar Amazon GuardDuty20180509 AWS Black Belt Online Seminar Amazon GuardDuty
20180509 AWS Black Belt Online Seminar Amazon GuardDutyAmazon Web Services Japan
 
週末趣味のAWS Transit Gatewayでの経路制御
週末趣味のAWS Transit Gatewayでの経路制御週末趣味のAWS Transit Gatewayでの経路制御
週末趣味のAWS Transit Gatewayでの経路制御Namba Kazuo
 
AWS Black Belt Online Seminar 2017 Auto Scaling
AWS Black Belt Online Seminar 2017 Auto ScalingAWS Black Belt Online Seminar 2017 Auto Scaling
AWS Black Belt Online Seminar 2017 Auto ScalingAmazon Web Services Japan
 
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティスAmazon Web Services Japan
 
20190424 AWS Black Belt Online Seminar Amazon Aurora MySQL
20190424 AWS Black Belt Online Seminar Amazon Aurora MySQL20190424 AWS Black Belt Online Seminar Amazon Aurora MySQL
20190424 AWS Black Belt Online Seminar Amazon Aurora MySQLAmazon Web Services Japan
 
20201028 AWS Black Belt Online Seminar Amazon CloudFront deep dive
20201028 AWS Black Belt Online Seminar Amazon CloudFront deep dive20201028 AWS Black Belt Online Seminar Amazon CloudFront deep dive
20201028 AWS Black Belt Online Seminar Amazon CloudFront deep diveAmazon Web Services Japan
 
20200303 AWS Black Belt Online Seminar AWS Cloud Development Kit (CDK)
20200303 AWS Black Belt Online Seminar AWS Cloud Development Kit (CDK)20200303 AWS Black Belt Online Seminar AWS Cloud Development Kit (CDK)
20200303 AWS Black Belt Online Seminar AWS Cloud Development Kit (CDK)Amazon Web Services Japan
 
20190410 AWS Black Belt Online Seminar Amazon Elastic Container Service for K...
20190410 AWS Black Belt Online Seminar Amazon Elastic Container Service for K...20190410 AWS Black Belt Online Seminar Amazon Elastic Container Service for K...
20190410 AWS Black Belt Online Seminar Amazon Elastic Container Service for K...Amazon Web Services Japan
 
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤Amazon Web Services Japan
 

Was ist angesagt? (20)

20200721 AWS Black Belt Online Seminar AWS App Mesh
20200721 AWS Black Belt Online Seminar AWS App Mesh20200721 AWS Black Belt Online Seminar AWS App Mesh
20200721 AWS Black Belt Online Seminar AWS App Mesh
 
Infrastructure as Code (IaC) 談義 2022
Infrastructure as Code (IaC) 談義 2022Infrastructure as Code (IaC) 談義 2022
Infrastructure as Code (IaC) 談義 2022
 
20190326 AWS Black Belt Online Seminar Amazon CloudWatch
20190326 AWS Black Belt Online Seminar Amazon CloudWatch20190326 AWS Black Belt Online Seminar Amazon CloudWatch
20190326 AWS Black Belt Online Seminar Amazon CloudWatch
 
20191029 AWS Black Belt Online Seminar Elastic Load Balancing (ELB)
20191029 AWS Black Belt Online Seminar Elastic Load Balancing (ELB)20191029 AWS Black Belt Online Seminar Elastic Load Balancing (ELB)
20191029 AWS Black Belt Online Seminar Elastic Load Balancing (ELB)
 
20180425 AWS Black Belt Online Seminar Amazon Relational Database Service (Am...
20180425 AWS Black Belt Online Seminar Amazon Relational Database Service (Am...20180425 AWS Black Belt Online Seminar Amazon Relational Database Service (Am...
20180425 AWS Black Belt Online Seminar Amazon Relational Database Service (Am...
 
20190514 AWS Black Belt Online Seminar Amazon API Gateway
20190514 AWS Black Belt Online Seminar Amazon API Gateway 20190514 AWS Black Belt Online Seminar Amazon API Gateway
20190514 AWS Black Belt Online Seminar Amazon API Gateway
 
Amazon Pinpoint × グロースハック活用事例集
Amazon Pinpoint × グロースハック活用事例集Amazon Pinpoint × グロースハック活用事例集
Amazon Pinpoint × グロースハック活用事例集
 
[AKIBA.AWS] NLBとPrivateLinkの仕様に立ち向かう
[AKIBA.AWS] NLBとPrivateLinkの仕様に立ち向かう[AKIBA.AWS] NLBとPrivateLinkの仕様に立ち向かう
[AKIBA.AWS] NLBとPrivateLinkの仕様に立ち向かう
 
20190130 AWS Well-Architectedの活用方法とレビューの進め方をお伝えしていきたい
20190130 AWS Well-Architectedの活用方法とレビューの進め方をお伝えしていきたい20190130 AWS Well-Architectedの活用方法とレビューの進め方をお伝えしていきたい
20190130 AWS Well-Architectedの活用方法とレビューの進め方をお伝えしていきたい
 
20190911 AWS Black Belt Online Seminar AWS Batch
20190911 AWS Black Belt Online Seminar AWS Batch20190911 AWS Black Belt Online Seminar AWS Batch
20190911 AWS Black Belt Online Seminar AWS Batch
 
202205 AWS Black Belt Online Seminar Amazon VPC IP Address Manager (IPAM)
202205 AWS Black Belt Online Seminar Amazon VPC IP Address Manager (IPAM)202205 AWS Black Belt Online Seminar Amazon VPC IP Address Manager (IPAM)
202205 AWS Black Belt Online Seminar Amazon VPC IP Address Manager (IPAM)
 
20180509 AWS Black Belt Online Seminar Amazon GuardDuty
20180509 AWS Black Belt Online Seminar Amazon GuardDuty20180509 AWS Black Belt Online Seminar Amazon GuardDuty
20180509 AWS Black Belt Online Seminar Amazon GuardDuty
 
週末趣味のAWS Transit Gatewayでの経路制御
週末趣味のAWS Transit Gatewayでの経路制御週末趣味のAWS Transit Gatewayでの経路制御
週末趣味のAWS Transit Gatewayでの経路制御
 
AWS Black Belt Online Seminar 2017 Auto Scaling
AWS Black Belt Online Seminar 2017 Auto ScalingAWS Black Belt Online Seminar 2017 Auto Scaling
AWS Black Belt Online Seminar 2017 Auto Scaling
 
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
 
20190424 AWS Black Belt Online Seminar Amazon Aurora MySQL
20190424 AWS Black Belt Online Seminar Amazon Aurora MySQL20190424 AWS Black Belt Online Seminar Amazon Aurora MySQL
20190424 AWS Black Belt Online Seminar Amazon Aurora MySQL
 
20201028 AWS Black Belt Online Seminar Amazon CloudFront deep dive
20201028 AWS Black Belt Online Seminar Amazon CloudFront deep dive20201028 AWS Black Belt Online Seminar Amazon CloudFront deep dive
20201028 AWS Black Belt Online Seminar Amazon CloudFront deep dive
 
20200303 AWS Black Belt Online Seminar AWS Cloud Development Kit (CDK)
20200303 AWS Black Belt Online Seminar AWS Cloud Development Kit (CDK)20200303 AWS Black Belt Online Seminar AWS Cloud Development Kit (CDK)
20200303 AWS Black Belt Online Seminar AWS Cloud Development Kit (CDK)
 
20190410 AWS Black Belt Online Seminar Amazon Elastic Container Service for K...
20190410 AWS Black Belt Online Seminar Amazon Elastic Container Service for K...20190410 AWS Black Belt Online Seminar Amazon Elastic Container Service for K...
20190410 AWS Black Belt Online Seminar Amazon Elastic Container Service for K...
 
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
 

Ähnlich wie EC-CUBEによるECサイトの負荷対策

Windows Server + VPNのAWS移行事例
Windows Server + VPNのAWS移行事例Windows Server + VPNのAWS移行事例
Windows Server + VPNのAWS移行事例Kazunori Inaba
 
IaaSクラウド比較'14
IaaSクラウド比較'14IaaSクラウド比較'14
IaaSクラウド比較'14Kazunori Inaba
 
Alibaba Cloudのベンチマークテスト
Alibaba CloudのベンチマークテストAlibaba Cloudのベンチマークテスト
Alibaba CloudのベンチマークテストKazunori Inaba
 
CloudGarageのベンチマークテスト
CloudGarageのベンチマークテストCloudGarageのベンチマークテスト
CloudGarageのベンチマークテストKazunori Inaba
 
IaaSクラウド比較
IaaSクラウド比較IaaSクラウド比較
IaaSクラウド比較Kazunori Inaba
 
Linuxサーバのセキュリティ対策 part3 - ファイル転送編
Linuxサーバのセキュリティ対策 part3 - ファイル転送編Linuxサーバのセキュリティ対策 part3 - ファイル転送編
Linuxサーバのセキュリティ対策 part3 - ファイル転送編Kazunori Inaba
 
Going Serverless, Building Applications with No Servers
Going Serverless, Building Applications with No ServersGoing Serverless, Building Applications with No Servers
Going Serverless, Building Applications with No ServersKeisuke Nishitani
 
AngularJSのDirectiveで俺俺タグつくっちゃお
AngularJSのDirectiveで俺俺タグつくっちゃおAngularJSのDirectiveで俺俺タグつくっちゃお
AngularJSのDirectiveで俺俺タグつくっちゃおToshio Ehara
 
JNSA西日本支部 技術研究WG AWSを使ったセキュアなシステム構築
JNSA西日本支部 技術研究WG AWSを使ったセキュアなシステム構築JNSA西日本支部 技術研究WG AWSを使ったセキュアなシステム構築
JNSA西日本支部 技術研究WG AWSを使ったセキュアなシステム構築Tomo-o Kubo
 
一度使うとレンタルサーバーに戻れない!?便利機能を使ってみよう!Web制作でのMicrosoft Azure 活用方法
一度使うとレンタルサーバーに戻れない!?便利機能を使ってみよう!Web制作でのMicrosoft Azure活用方法一度使うとレンタルサーバーに戻れない!?便利機能を使ってみよう!Web制作でのMicrosoft Azure活用方法
一度使うとレンタルサーバーに戻れない!?便利機能を使ってみよう!Web制作でのMicrosoft Azure 活用方法典子 松本
 
軽量ASP.NETフレームワークNancy
軽量ASP.NETフレームワークNancy軽量ASP.NETフレームワークNancy
軽量ASP.NETフレームワークNancyNarami Kiyokura
 
プログラム組んだら負け!実はHTML/CSSだけでできること2015夏
プログラム組んだら負け!実はHTML/CSSだけでできること2015夏プログラム組んだら負け!実はHTML/CSSだけでできること2015夏
プログラム組んだら負け!実はHTML/CSSだけでできること2015夏Yusuke Hirao
 
アメブロ2016 アメブロフロント刷新にみる ひかりとつらみ
アメブロ2016 アメブロフロント刷新にみる ひかりとつらみアメブロ2016 アメブロフロント刷新にみる ひかりとつらみ
アメブロ2016 アメブロフロント刷新にみる ひかりとつらみKazunari Hara
 
AWSでGPUも安く大量に使い倒せ
AWSでGPUも安く大量に使い倒せ AWSでGPUも安く大量に使い倒せ
AWSでGPUも安く大量に使い倒せ Yasuhiro Matsuo
 
EdgeWorkers の導入について - Akamai TechWeek 2021 Japan Customer Session
EdgeWorkers の導入について - Akamai TechWeek 2021 Japan Customer SessionEdgeWorkers の導入について - Akamai TechWeek 2021 Japan Customer Session
EdgeWorkers の導入について - Akamai TechWeek 2021 Japan Customer Session慎太郎 木村
 
[CTO Night & Day 2019] グローバルのサービス展開に向けたマルチリージョンアーキテクチャ- #ctonight
[CTO Night & Day 2019] グローバルのサービス展開に向けたマルチリージョンアーキテクチャ- #ctonight[CTO Night & Day 2019] グローバルのサービス展開に向けたマルチリージョンアーキテクチャ- #ctonight
[CTO Night & Day 2019] グローバルのサービス展開に向けたマルチリージョンアーキテクチャ- #ctonightAmazon Web Services Japan
 
最近のASP.NET事情2013Winter
最近のASP.NET事情2013Winter最近のASP.NET事情2013Winter
最近のASP.NET事情2013WinterNarami Kiyokura
 
クラウド案件の作り方 for azureしなの4周年
クラウド案件の作り方 for azureしなの4周年クラウド案件の作り方 for azureしなの4周年
クラウド案件の作り方 for azureしなの4周年Kuniteru Asami
 
Linuxサーバーのセキュリティ対策 part4
Linuxサーバーのセキュリティ対策 part4Linuxサーバーのセキュリティ対策 part4
Linuxサーバーのセキュリティ対策 part4Kazunori Inaba
 
株式会社インタースペース 沖本様 登壇資料
株式会社インタースペース 沖本様 登壇資料株式会社インタースペース 沖本様 登壇資料
株式会社インタースペース 沖本様 登壇資料leverages_event
 

Ähnlich wie EC-CUBEによるECサイトの負荷対策 (20)

Windows Server + VPNのAWS移行事例
Windows Server + VPNのAWS移行事例Windows Server + VPNのAWS移行事例
Windows Server + VPNのAWS移行事例
 
IaaSクラウド比較'14
IaaSクラウド比較'14IaaSクラウド比較'14
IaaSクラウド比較'14
 
Alibaba Cloudのベンチマークテスト
Alibaba CloudのベンチマークテストAlibaba Cloudのベンチマークテスト
Alibaba Cloudのベンチマークテスト
 
CloudGarageのベンチマークテスト
CloudGarageのベンチマークテストCloudGarageのベンチマークテスト
CloudGarageのベンチマークテスト
 
IaaSクラウド比較
IaaSクラウド比較IaaSクラウド比較
IaaSクラウド比較
 
Linuxサーバのセキュリティ対策 part3 - ファイル転送編
Linuxサーバのセキュリティ対策 part3 - ファイル転送編Linuxサーバのセキュリティ対策 part3 - ファイル転送編
Linuxサーバのセキュリティ対策 part3 - ファイル転送編
 
Going Serverless, Building Applications with No Servers
Going Serverless, Building Applications with No ServersGoing Serverless, Building Applications with No Servers
Going Serverless, Building Applications with No Servers
 
AngularJSのDirectiveで俺俺タグつくっちゃお
AngularJSのDirectiveで俺俺タグつくっちゃおAngularJSのDirectiveで俺俺タグつくっちゃお
AngularJSのDirectiveで俺俺タグつくっちゃお
 
JNSA西日本支部 技術研究WG AWSを使ったセキュアなシステム構築
JNSA西日本支部 技術研究WG AWSを使ったセキュアなシステム構築JNSA西日本支部 技術研究WG AWSを使ったセキュアなシステム構築
JNSA西日本支部 技術研究WG AWSを使ったセキュアなシステム構築
 
一度使うとレンタルサーバーに戻れない!?便利機能を使ってみよう!Web制作でのMicrosoft Azure 活用方法
一度使うとレンタルサーバーに戻れない!?便利機能を使ってみよう!Web制作でのMicrosoft Azure活用方法一度使うとレンタルサーバーに戻れない!?便利機能を使ってみよう!Web制作でのMicrosoft Azure活用方法
一度使うとレンタルサーバーに戻れない!?便利機能を使ってみよう!Web制作でのMicrosoft Azure 活用方法
 
軽量ASP.NETフレームワークNancy
軽量ASP.NETフレームワークNancy軽量ASP.NETフレームワークNancy
軽量ASP.NETフレームワークNancy
 
プログラム組んだら負け!実はHTML/CSSだけでできること2015夏
プログラム組んだら負け!実はHTML/CSSだけでできること2015夏プログラム組んだら負け!実はHTML/CSSだけでできること2015夏
プログラム組んだら負け!実はHTML/CSSだけでできること2015夏
 
アメブロ2016 アメブロフロント刷新にみる ひかりとつらみ
アメブロ2016 アメブロフロント刷新にみる ひかりとつらみアメブロ2016 アメブロフロント刷新にみる ひかりとつらみ
アメブロ2016 アメブロフロント刷新にみる ひかりとつらみ
 
AWSでGPUも安く大量に使い倒せ
AWSでGPUも安く大量に使い倒せ AWSでGPUも安く大量に使い倒せ
AWSでGPUも安く大量に使い倒せ
 
EdgeWorkers の導入について - Akamai TechWeek 2021 Japan Customer Session
EdgeWorkers の導入について - Akamai TechWeek 2021 Japan Customer SessionEdgeWorkers の導入について - Akamai TechWeek 2021 Japan Customer Session
EdgeWorkers の導入について - Akamai TechWeek 2021 Japan Customer Session
 
[CTO Night & Day 2019] グローバルのサービス展開に向けたマルチリージョンアーキテクチャ- #ctonight
[CTO Night & Day 2019] グローバルのサービス展開に向けたマルチリージョンアーキテクチャ- #ctonight[CTO Night & Day 2019] グローバルのサービス展開に向けたマルチリージョンアーキテクチャ- #ctonight
[CTO Night & Day 2019] グローバルのサービス展開に向けたマルチリージョンアーキテクチャ- #ctonight
 
最近のASP.NET事情2013Winter
最近のASP.NET事情2013Winter最近のASP.NET事情2013Winter
最近のASP.NET事情2013Winter
 
クラウド案件の作り方 for azureしなの4周年
クラウド案件の作り方 for azureしなの4周年クラウド案件の作り方 for azureしなの4周年
クラウド案件の作り方 for azureしなの4周年
 
Linuxサーバーのセキュリティ対策 part4
Linuxサーバーのセキュリティ対策 part4Linuxサーバーのセキュリティ対策 part4
Linuxサーバーのセキュリティ対策 part4
 
株式会社インタースペース 沖本様 登壇資料
株式会社インタースペース 沖本様 登壇資料株式会社インタースペース 沖本様 登壇資料
株式会社インタースペース 沖本様 登壇資料
 

Kürzlich hochgeladen

業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 

Kürzlich hochgeladen (8)

業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 

EC-CUBEによるECサイトの負荷対策

  • 1. 2017/10/10 Kazunori Inaba 2017.10.10 第20回 JAWS-UG札幌 勉強会 EC-CUBEによるECサイトの負荷対策 稲葉 一紀@札幌 1
  • 2. 2017/10/10 Kazunori Inaba 稲葉 一紀 (Kazunori Inaba) サーバーインフラ専門のフリーランスエンジニア@札幌 屋号:稲葉サーバーデザイン https://inaba-serverdesign.jp/ おもにWeb制作会社、アプリ開発企業・エンジニア向けに セキュリティ・可用性・性能・拡張性を考慮した サーバーインフラ構成設計・設定や既存システムの 性能改善調査・支援 や ミドルウェアの導入・チューニング などを行います。 2 自己紹介
  • 3. はじめに 2017/10/10 Kazunori Inaba • EC-CUBEによるECサイトの負荷対策を行った事例をご紹介します。 • スライドは後日SlideShareにアップします。 http://www.slideshare.net/kazunoriinaba/ Webサイトでも公開します。 https://inaba-serverdesign.jp/ 3
  • 4. 負荷対策を行ったECサイト 2017/10/10 Kazunori Inaba • AWS上で稼働するEC-CUBEによる販売サイト • サイト名、業種は非公開 • 当初のサーバー構成 • Web: EC2 (CentOS 6, Plesk, Nginx, PHP-FPM, EC-CUBE) x 1 • DB : RDS for MySQL x 1 • セール開始直後から1時間程度、集中アクセスが発生する。 → ページが表示されない、502エラー。 あるセール日の集中アクセス - リクエスト数: 数万/分 - リアルタイムセッション数: 2000超 4
  • 5. 当初の構成 – 構成図 2017/10/10 Kazunori Inaba 5 EC-CUBE セール時のみスケールアップセール時のみスケールアップ
  • 6. 当初の構成 - セール時どうなった? 2017/10/10 Kazunori Inaba 6 EC-CUBE ページが表示 されない。 502エラー!
  • 7. 負荷対策(1) – 構成図 2017/10/10 Kazunori Inaba 7 EC-CUBE管理 EC-CUBE公開 静的コンテンツ 動的コンテンツ 静的コンテンツ パス: /admin/~ (default) ・静的コンテンツをCloudFrontで 配信 ・ EC2を複数台としALBで振り分け ・ Nginx, PHP, MySQLのパラメー タチューニング
  • 8. 負荷対策(1) – CloudFrontの導入 2017/10/10 Kazunori Inaba • 静的コンテンツをCloudFrontで配信 • EC2の負荷を軽減 8 EC-CUBE管理 静的コンテンツ 定期的にjs, css, imageファイ ルをS3にアップロード https://cdn.example.jp S3オリジンで配信 https://example.jp
  • 9. 負荷対策(1) – EC2を複数台に 2017/10/10 Kazunori Inaba • EC2を複数台とし、ALBで振り分け • 管理用(1台)と公開用(複数台)に用途を分けてURLパスで振り分け。 • EC-CUBEのセッション管理はRDBで行っているので問題ない。 • EC2単体の負荷軽減。 • 可用性の向上。メンテナンス、スケールアップ時のダウンタイムを軽減。 9 EC-CUBE管理 EC-CUBE公開 パス: /admin/~ (default)
  • 10. 負荷対策(1) – 複数EC2間のデータ同期 2017/10/10 Kazunori Inaba • /html/{upload,user_data}, /data/{download,downloads,upload}など • S3バケットを介して管理用→公開用の向きで定期的に同期 • データ同期の向きを片方向にしないと古いファイルで上書きされることに注意。 • lsyncdによる同期だとサーバーが増えたときの設定追加が手間。 10 EC-CUBE管理 EC-CUBE公開 $ aws s3 sync <local> <s3://bucket/> データ同期用 $ aws s3 sync <s3://bucket/> <local> パス: /admin/~ (default) PUT GET
  • 11. 負荷対策(1) – セール時どうなった? 2017/10/10 Kazunori Inaba 11 EC2の負荷は激減! EC-CUBE管理 EC-CUBE公開 静的コンテンツ 動的コンテンツ 静的コンテンツ パス: /admin/~ (default) RDSに負荷が集中! ページが表示されな い。502エラー! db.m4.10xlarge (40CPU) でもCPU使用率100%
  • 12. 負荷対策(2) – 構成図 2017/10/10 Kazunori Inaba 12 EC-CUBE管理 EC-CUBE公開 静的コンテンツ 動的コンテンツ 静的コンテンツ パス: /admin/~ (default) セッションを キャッシュ クエリキャッシュ DBまわりの構成変更で RDSの負荷を軽減
  • 13. 負荷対策(2) - 変更点 2017/10/10 Kazunori Inaba • RDSリードレプリカ、ElastiCache for Redisを追加 • EC-CUBEの改修(担当:ウェブモ株式会社) • セッション情報の保存先をRDSからElastiCache for Redisに変更。 • データベースのインデックスチューニング。 • ページ単位でDBアクセス先を指定可能とした。 • 更新系ページは、RDSマスターにアクセス。 • 参照系ページは、ElastiCache for Redisにアクセス。 • キャッシュがあればRedisから取得。 • キャッシュがなければRDSリードレプリカにアクセスしRedisに保存。 13 RDSの負荷軽減 → DBクエリ数、処理行数を減らす! → ディスクアクセスを減らす!
  • 14. 負荷対策(2) – 参照系ページのデータ取得 2017/10/10 Kazunori Inaba 14 EC-CUBE公開 クエリキャッシュ ①Redisに 問い合わせ ②キャッシュにあ ればデータ取得 ③キャッシュになけ ればリードレプリカ に問い合わせ ④データ取得 ⑤Redisにデータ 保存
  • 15. 負荷対策(2) – セール時どうなった? 2017/10/10 Kazunori Inaba 15 EC-CUBE管理 EC-CUBE公開 静的コンテンツ 動的コンテンツ 静的コンテンツ パス: /admin/~ (default) セッションを キャッシュ クエリキャッシュ RDSの負荷 が激減! ・セール時も軽快に買い物できる ようになった! ・EC2, RDSのインスタンスタイ プを下げてコスト削減を達成。
  • 16. 負荷対策(2) - 一時発生した問題 2017/10/10 Kazunori Inaba • 順調に稼働していたが、突然RDSマスターのCPU負荷が増大 • 大量のロック競合が発生していた。 • ロック競合は、 EC-CUBEプラグイン「売り切れ時のメール送信」「キャンセル 時の在庫戻し」機能によるものだった。 • これらのプラグインを削除すると、ロック競合がなくなり、CPU負荷が激減し た。 • プラグインの不具合というよりは、EC-CUBEもプラグインも、もともと集中ア クセス用には作られていない? 16
  • 17. 負荷テスト環境 on AWS 2017/10/10 Kazunori Inaba (参考)Developers.IO AWSでJMeterを使った負荷テスト環境を構築する手順 (WindowsありのMaster/Slave構成) http://dev.classmethod.jp/etc/jmeter-master-slave/ 17 Windows JMeter Master Linux JMeter Slave EC-CUBE管理 EC-CUBE公開 負荷をかける側 ECサイト(検証用)
  • 18. まとめ (1) 2017/10/10 Kazunori Inaba ECサイトのサーバー負荷に対して、主に以下の対策を行った。 1. CloudFrontによる静的コンテンツ配信 2. EC2を複数台に 3. ElastiCache for Redisによるクエリキャッシュ アクセス集中時のレスポンスが大きく改善できた。 3.が最も効果的。 これらの対策は、EC-CUBEに限らず、どんなWebアプリケーションで もだいたい同じ。 18
  • 19. まとめ (2) 2017/10/10 Kazunori Inaba • サーバー側だけではなく、アプリケーション側の改善が必須。 • 例えば、サーバーのリソース合計を10倍しても、性能アップは10倍以下。 • Apache/Nginx, PHP, MySQLのパラメータチューニングでも性能向上は限定さ れる。 • memcached/Redisによるクエリキャッシュの導入や適切なDBインデックスチ ューニングは、それ以上の劇的な性能改善効果があり得る。 【アプリケーション改善の参考資料】 • クラウド時代だからこそ見直したいPHPアプリケーションのパフォーマンスチュー ニング https://www.slideshare.net/marcyterui/php-60979337 19