More Related Content
PDF
AWS Black Belt Online Seminar 2018 AWS Certificate Manager PDF
20201118 AWS Black Belt Online Seminar 形で考えるサーバーレス設計 サーバーレスユースケースパターン解説 PDF
20190731 Black Belt Online Seminar Amazon ECS Deep Dive PDF
20190424 AWS Black Belt Online Seminar Amazon Aurora MySQL PDF
20200422 AWS Black Belt Online Seminar Amazon Elastic Container Service (Amaz... PDF
PPTX
週末趣味のAWS Transit Gatewayでの経路制御 PDF
AWS Black Belt Online Seminar 2017 Amazon S3 What's hot
PDF
20191016 AWS Black Belt Online Seminar Amazon Route 53 Resolver PPTX
分散トレーシングAWS:X-Rayとの上手い付き合い方 PDF
20190402 AWS Black Belt Online Seminar Let's Dive Deep into AWS Lambda Part1 ... PDF
20191127 AWS Black Belt Online Seminar Amazon CloudWatch Container Insights で... PDF
20200526 AWS Black Belt Online Seminar AWS X-Ray PDF
20200219 AWS Black Belt Online Seminar オンプレミスとAWS間の冗長化接続 PDF
20200630 AWS Black Belt Online Seminar Amazon Cognito PDF
20211203 AWS Black Belt Online Seminar AWS re:Invent 2021アップデート速報 PDF
20190821 AWS Black Belt Online Seminar AWS AppSync PDF
AWS Black Belt Online Seminar 2017 Amazon Kinesis PDF
20210316 AWS Black Belt Online Seminar AWS DataSync PDF
AWS Black Belt Online Seminar 2016 AWS上でのActive Directory構築 PDF
20190814 AWS Black Belt Online Seminar AWS Serverless Application Model PDF
20180704 AWS Black Belt Online Seminar Amazon Elastic File System (Amazon EFS... PDF
Black Belt Online Seminar AWS上の暗号化ソリューション PDF
わたくし、やっぱりCDKを使いたいですわ〜CDK import編〜.pdf PDF
AWS Black Belt Online Seminar 2018 AWS Well-Architected Framework PDF
PDF
AWS EC2 Eメール制限解除 - 逆引き(rDNS)設定 申請手順 PDF
[AWSマイスターシリーズ] Amazon ElastiCache More from Kazunori Inaba
PDF
PDF
PDF
PDF
Linuxサーバのセキュリティ対策 part3 - ファイル転送編 PDF
PDF
PDF
PDF
Windows Server + VPNのAWS移行事例 PDF
PDF
Linuxサーバのセキュリティ対策 part2 - Apache編 Recently uploaded
PDF
第21回 Gen AI 勉強会「NotebookLMで60ページ超の スライドを作成してみた」 PDF
自転車ユーザ参加型路面画像センシングによる点字ブロック検出における性能向上方法の模索 (20260123 SeMI研) PDF
2025→2026宙畑ゆく年くる年レポート_100社を超える企業アンケート総まとめ!!_企業まとめ_1229_3版 PDF
ST2024_PM1_2_Case_study_of_local_newspaper_company.pdf PDF
Starlink Direct-to-Cell (D2C) 技術の概要と将来の展望 PDF
100年後の知財業界-生成AIスライドアドリブプレゼン イーパテントYouTube配信 PDF
PMBOK 7th Edition Project Management Process Scrum PDF
PMBOK 7th Edition_Project Management Context Diagram PDF
Team Topology Adaptive Organizational Design for Rapid Delivery of Valuable S... PDF
FY2025 IT Strategist Afternoon I Question-1 Balanced Scorecard PDF
Reiwa 7 IT Strategist Afternoon I Question-1 3C Analysis PDF
PMBOK 7th Edition_Project Management Process_WF Type Development PDF
Reiwa 7 IT Strategist Afternoon I Question-1 Ansoff's Growth Vector 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.
- 6.
- 7.
負荷対策(1) – 構成図
2017/10/10Kazunori Inaba 7
EC-CUBE管理
EC-CUBE公開
静的コンテンツ
動的コンテンツ
静的コンテンツ
パス: /admin/~
(default)
・静的コンテンツをCloudFrontで
配信
・ EC2を複数台としALBで振り分け
・ Nginx, PHP, MySQLのパラメー
タチューニング
- 8.
負荷対策(1) – CloudFrontの導入
2017/10/10Kazunori Inaba
• 静的コンテンツをCloudFrontで配信
• EC2の負荷を軽減
8
EC-CUBE管理
静的コンテンツ
定期的にjs, css, imageファイ
ルをS3にアップロード
https://cdn.example.jp
S3オリジンで配信
https://example.jp
- 9.
負荷対策(1) – EC2を複数台に
2017/10/10Kazunori Inaba
• EC2を複数台とし、ALBで振り分け
• 管理用(1台)と公開用(複数台)に用途を分けてURLパスで振り分け。
• EC-CUBEのセッション管理はRDBで行っているので問題ない。
• EC2単体の負荷軽減。
• 可用性の向上。メンテナンス、スケールアップ時のダウンタイムを軽減。
9
EC-CUBE管理
EC-CUBE公開
パス: /admin/~
(default)
- 10.
負荷対策(1) – 複数EC2間のデータ同期
2017/10/10Kazunori 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/10Kazunori Inaba 11
EC2の負荷は激減!
EC-CUBE管理
EC-CUBE公開
静的コンテンツ
動的コンテンツ
静的コンテンツ
パス: /admin/~
(default)
RDSに負荷が集中!
ページが表示されな
い。502エラー!
db.m4.10xlarge (40CPU)
でもCPU使用率100%
- 12.
負荷対策(2) – 構成図
2017/10/10Kazunori Inaba 12
EC-CUBE管理
EC-CUBE公開
静的コンテンツ
動的コンテンツ
静的コンテンツ
パス: /admin/~
(default)
セッションを
キャッシュ
クエリキャッシュ
DBまわりの構成変更で
RDSの負荷を軽減
- 13.
負荷対策(2) - 変更点
2017/10/10Kazunori Inaba
• RDSリードレプリカ、ElastiCache for Redisを追加
• EC-CUBEの改修(担当:ウェブモ株式会社)
• セッション情報の保存先をRDSからElastiCache for Redisに変更。
• データベースのインデックスチューニング。
• ページ単位でDBアクセス先を指定可能とした。
• 更新系ページは、RDSマスターにアクセス。
• 参照系ページは、ElastiCache for Redisにアクセス。
• キャッシュがあればRedisから取得。
• キャッシュがなければRDSリードレプリカにアクセスしRedisに保存。
13
RDSの負荷軽減
→ DBクエリ数、処理行数を減らす!
→ ディスクアクセスを減らす!
- 14.
- 15.
負荷対策(2) – セール時どうなった?
2017/10/10Kazunori Inaba 15
EC-CUBE管理
EC-CUBE公開
静的コンテンツ
動的コンテンツ
静的コンテンツ
パス: /admin/~
(default)
セッションを
キャッシュ
クエリキャッシュ
RDSの負荷
が激減!
・セール時も軽快に買い物できる
ようになった!
・EC2, RDSのインスタンスタイ
プを下げてコスト削減を達成。
- 16.
負荷対策(2) - 一時発生した問題
2017/10/10Kazunori Inaba
• 順調に稼働していたが、突然RDSマスターのCPU負荷が増大
• 大量のロック競合が発生していた。
• ロック競合は、 EC-CUBEプラグイン「売り切れ時のメール送信」「キャンセル
時の在庫戻し」機能によるものだった。
• これらのプラグインを削除すると、ロック競合がなくなり、CPU負荷が激減し
た。
• プラグインの不具合というよりは、EC-CUBEもプラグインも、もともと集中ア
クセス用には作られていない?
16
- 17.
負荷テスト環境 on AWS
2017/10/10Kazunori 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 KazunoriInaba
ECサイトのサーバー負荷に対して、主に以下の対策を行った。
1. CloudFrontによる静的コンテンツ配信
2. EC2を複数台に
3. ElastiCache for Redisによるクエリキャッシュ
アクセス集中時のレスポンスが大きく改善できた。
3.が最も効果的。
これらの対策は、EC-CUBEに限らず、どんなWebアプリケーションで
もだいたい同じ。
18
- 19.
まとめ (2)
2017/10/10 KazunoriInaba
• サーバー側だけではなく、アプリケーション側の改善が必須。
• 例えば、サーバーのリソース合計を10倍しても、性能アップは10倍以下。
• Apache/Nginx, PHP, MySQLのパラメータチューニングでも性能向上は限定さ
れる。
• memcached/Redisによるクエリキャッシュの導入や適切なDBインデックスチ
ューニングは、それ以上の劇的な性能改善効果があり得る。
【アプリケーション改善の参考資料】
• クラウド時代だからこそ見直したいPHPアプリケーションのパフォーマンスチュー
ニング
https://www.slideshare.net/marcyterui/php-60979337
19