Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
tzm_freedom
1,262 views
第2回Web技術勉強会 webパフォーマンス改善編
社内勉強会の資料。
Technology
◦
Read more
1
Save
Share
Embed
Embed presentation
Download
Downloaded 23 times
1
/ 21
2
/ 21
3
/ 21
4
/ 21
5
/ 21
6
/ 21
7
/ 21
8
/ 21
9
/ 21
10
/ 21
11
/ 21
12
/ 21
13
/ 21
14
/ 21
15
/ 21
16
/ 21
17
/ 21
18
/ 21
19
/ 21
20
/ 21
21
/ 21
More Related Content
PDF
Docker Compose 徹底解説
by
Masahito Zembutsu
PDF
AWS Black Belt Techシリーズ Amazon EMR
by
Amazon Web Services Japan
PPTX
Gstreamer Basics
by
Seiji Hiraki
PDF
Redmineチューニングの実際と限界(旧資料) - Redmine performance tuning(old), See Below.
by
Kuniharu(州晴) AKAHANE(赤羽根)
PDF
20210127 AWS Black Belt Online Seminar Amazon Redshift 運用管理
by
Amazon Web Services Japan
PPTX
Image Retrieval Overview (from Traditional Local Features to Recent Deep Lear...
by
Yusuke Uchida
PDF
継続使用と新規追加したRedmine Plugin
by
Mei Nakamura
PDF
20191001 AWS Black Belt Online Seminar AWS Lake Formation
by
Amazon Web Services Japan
Docker Compose 徹底解説
by
Masahito Zembutsu
AWS Black Belt Techシリーズ Amazon EMR
by
Amazon Web Services Japan
Gstreamer Basics
by
Seiji Hiraki
Redmineチューニングの実際と限界(旧資料) - Redmine performance tuning(old), See Below.
by
Kuniharu(州晴) AKAHANE(赤羽根)
20210127 AWS Black Belt Online Seminar Amazon Redshift 運用管理
by
Amazon Web Services Japan
Image Retrieval Overview (from Traditional Local Features to Recent Deep Lear...
by
Yusuke Uchida
継続使用と新規追加したRedmine Plugin
by
Mei Nakamura
20191001 AWS Black Belt Online Seminar AWS Lake Formation
by
Amazon Web Services Japan
What's hot
PDF
Ansible tower 構築方法と使い方
by
Hiroshi Okano
PDF
AnsibleによるInfrastructure as code入門
by
kk_Ataka
PPTX
今さら聞けない人のためのCI/CD超入門
by
VirtualTech Japan Inc./Begi.net Inc.
PDF
IAM Roles Anywhereのない世界とある世界(2022年のAWSアップデートを振り返ろう ~Season 4~ 発表資料)
by
NTT DATA Technology & Innovation
PDF
AWS初心者向けWebinar AWS上でのDDoS対策
by
Amazon Web Services Japan
PDF
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
by
infinite_loop
PDF
君はyarn.lockをコミットしているか?
by
Teppei Sato
PDF
IT エンジニアのための 流し読み Windows 10 - Microsoft の更新プログラム管理インフラ比較 ~ WU / WSUS / SCCM ...
by
TAKUYA OHTA
PDF
[DL輪読会]Toward Multimodal Image-to-Image Translation (NIPS'17)
by
Deep Learning JP
PPTX
RLSを用いたマルチテナント実装 for Django
by
Takayuki Shimizukawa
PDF
ヤフー社内でやってるMySQLチューニングセミナー大公開
by
Yahoo!デベロッパーネットワーク
PDF
AWSでアプリ開発するなら 知っておくべこと
by
Keisuke Nishitani
PPTX
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
by
NTT DATA Technology & Innovation
PDF
BuildKitの概要と最近の機能
by
Kohei Tokunaga
PDF
Building the Game Server both API and Realtime via c#
by
Yoshifumi Kawai
PDF
Docker volume基礎/Project Longhorn紹介
by
Masahito Zembutsu
PDF
ワタシはSingletonがキライだ
by
Tetsuya Kaneuchi
PDF
WebSocket / WebRTCの技術紹介
by
Yasuhiro Mawarimichi
PPTX
WebRTCを利用した遠隔リアルタイム映像処理フレームワークの実装
by
tnoho
PPTX
本当は恐ろしい分散システムの話
by
Kumazaki Hiroki
Ansible tower 構築方法と使い方
by
Hiroshi Okano
AnsibleによるInfrastructure as code入門
by
kk_Ataka
今さら聞けない人のためのCI/CD超入門
by
VirtualTech Japan Inc./Begi.net Inc.
IAM Roles Anywhereのない世界とある世界(2022年のAWSアップデートを振り返ろう ~Season 4~ 発表資料)
by
NTT DATA Technology & Innovation
AWS初心者向けWebinar AWS上でのDDoS対策
by
Amazon Web Services Japan
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
by
infinite_loop
君はyarn.lockをコミットしているか?
by
Teppei Sato
IT エンジニアのための 流し読み Windows 10 - Microsoft の更新プログラム管理インフラ比較 ~ WU / WSUS / SCCM ...
by
TAKUYA OHTA
[DL輪読会]Toward Multimodal Image-to-Image Translation (NIPS'17)
by
Deep Learning JP
RLSを用いたマルチテナント実装 for Django
by
Takayuki Shimizukawa
ヤフー社内でやってるMySQLチューニングセミナー大公開
by
Yahoo!デベロッパーネットワーク
AWSでアプリ開発するなら 知っておくべこと
by
Keisuke Nishitani
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
by
NTT DATA Technology & Innovation
BuildKitの概要と最近の機能
by
Kohei Tokunaga
Building the Game Server both API and Realtime via c#
by
Yoshifumi Kawai
Docker volume基礎/Project Longhorn紹介
by
Masahito Zembutsu
ワタシはSingletonがキライだ
by
Tetsuya Kaneuchi
WebSocket / WebRTCの技術紹介
by
Yasuhiro Mawarimichi
WebRTCを利用した遠隔リアルタイム映像処理フレームワークの実装
by
tnoho
本当は恐ろしい分散システムの話
by
Kumazaki Hiroki
Viewers also liked
PDF
いろいろなSSL/TLS設定ガイドライン (JNSA電子署名WG 実世界の暗号・認証技術勉強会資料)
by
Kenji Urushima
PDF
セキュリティ勉強会 暗号技術入門 1章
by
Naoko Suzuki
PPTX
私はここでつまづいた! Oracle database 11g から 12cへのアップグレードと Oracle Database 12c の新機能@201...
by
yoshimotot
PDF
第3回web技術勉強会 暗号技術編その1
by
tzm_freedom
PDF
qpstudy 2015.11.14 一歩先を行くインフラエンジニアに知ってほしいSSL/TLS
by
Kenji Urushima
PDF
第4回web技術勉強会 暗号技術編その2
by
tzm_freedom
PDF
第5回web技術勉強会 暗号技術編その3
by
tzm_freedom
PPTX
Analytics CloudとEmbulkを使った社会的データの分析
by
tzm_freedom
PDF
Certificate TransparencyによるSSLサーバー証明書公開監査情報とその課題の議論
by
Kenji Urushima
PDF
introduction to jsrsasign
by
Kenji Urushima
いろいろなSSL/TLS設定ガイドライン (JNSA電子署名WG 実世界の暗号・認証技術勉強会資料)
by
Kenji Urushima
セキュリティ勉強会 暗号技術入門 1章
by
Naoko Suzuki
私はここでつまづいた! Oracle database 11g から 12cへのアップグレードと Oracle Database 12c の新機能@201...
by
yoshimotot
第3回web技術勉強会 暗号技術編その1
by
tzm_freedom
qpstudy 2015.11.14 一歩先を行くインフラエンジニアに知ってほしいSSL/TLS
by
Kenji Urushima
第4回web技術勉強会 暗号技術編その2
by
tzm_freedom
第5回web技術勉強会 暗号技術編その3
by
tzm_freedom
Analytics CloudとEmbulkを使った社会的データの分析
by
tzm_freedom
Certificate TransparencyによるSSLサーバー証明書公開監査情報とその課題の議論
by
Kenji Urushima
introduction to jsrsasign
by
Kenji Urushima
Similar to 第2回Web技術勉強会 webパフォーマンス改善編
KEY
Tuiningathonにいってみた
by
Suguru Shirai
PPTX
AWSとmod_pagespeedで楽々サクサク高速化!!
by
aasakawa
PDF
WTM52 あなたの作ったWEBサイト、生きてますか?
by
Masanori Oobayashi
PPT
2013/2/15 gooya社内ディスカッション「早いサイト」石川チーム資料
by
gooya
PPTX
今だから!Amazon CloudFront 徹底活用
by
Yasuhiro Araki, Ph.D
PDF
高速化はじめの一歩
by
Yuki Nakane
PDF
WordBench Saitama vol.6
by
masaaki komori
PDF
Aws summits2014 amazon_cloudfrontを利用したサイト高速化とセキュア配信
by
Boss4434
PDF
2012/6/10 Webのパフォーマンスを考える @ 【第三回】初心者向けホームページ勉強会
by
tama200x Kobayashi
PPTX
サーバーの初歩的な話セミナー@大阪20120901
by
Masayuki Abe
PDF
20191204_WordPressの教科書出版記念イベント_パフォーマンスチューニングとセキュリティ_小川
by
Tomoya Hokari
PPT
Yahoo!検索のパフォーマンス向上策全て見せます
by
Yahoo!デベロッパーネットワーク
PDF
スタートアップ向け!1人日でできるサービスの高速化方法と成果
by
Koichiro Sumi
KEY
PHP-Ninjaの裏側
by
Takayuki Miyauchi
PDF
WordCamp Yokohama 2010 Komori
by
masaaki komori
PDF
通信と放送の融合を考えるBoF 5
by
Masaaki Nabeshima
PDF
Node.js で SPDYのベンチマーク体験サイトを作りました
by
shigeki_ohtsu
Tuiningathonにいってみた
by
Suguru Shirai
AWSとmod_pagespeedで楽々サクサク高速化!!
by
aasakawa
WTM52 あなたの作ったWEBサイト、生きてますか?
by
Masanori Oobayashi
2013/2/15 gooya社内ディスカッション「早いサイト」石川チーム資料
by
gooya
今だから!Amazon CloudFront 徹底活用
by
Yasuhiro Araki, Ph.D
高速化はじめの一歩
by
Yuki Nakane
WordBench Saitama vol.6
by
masaaki komori
Aws summits2014 amazon_cloudfrontを利用したサイト高速化とセキュア配信
by
Boss4434
2012/6/10 Webのパフォーマンスを考える @ 【第三回】初心者向けホームページ勉強会
by
tama200x Kobayashi
サーバーの初歩的な話セミナー@大阪20120901
by
Masayuki Abe
20191204_WordPressの教科書出版記念イベント_パフォーマンスチューニングとセキュリティ_小川
by
Tomoya Hokari
Yahoo!検索のパフォーマンス向上策全て見せます
by
Yahoo!デベロッパーネットワーク
スタートアップ向け!1人日でできるサービスの高速化方法と成果
by
Koichiro Sumi
PHP-Ninjaの裏側
by
Takayuki Miyauchi
WordCamp Yokohama 2010 Komori
by
masaaki komori
通信と放送の融合を考えるBoF 5
by
Masaaki Nabeshima
Node.js で SPDYのベンチマーク体験サイトを作りました
by
shigeki_ohtsu
More from tzm_freedom
PDF
Apex on Local - Better Alternative to Salesforce DX
by
tzm_freedom
PDF
Land
by
tzm_freedom
PDF
C初心者がbyebugにPR出した話
by
tzm_freedom
PDF
APIテストあれこれ
by
tzm_freedom
PDF
第一回Web技術勉強会 efkスタック編
by
tzm_freedom
PDF
第三回IoT関連技術勉強会 データ通信編
by
tzm_freedom
PDF
第二回IoT関連技術勉強会 ログ収集編
by
tzm_freedom
PDF
第一回IoT関連技術勉強会 分散処理編
by
tzm_freedom
PDF
ElectronでExactTargetのGUIツールを作ってみた話
by
tzm_freedom
PDF
ApexからAWS IoT叩いてみた話
by
tzm_freedom
PDF
Dreamforce '15のお話
by
tzm_freedom
Apex on Local - Better Alternative to Salesforce DX
by
tzm_freedom
Land
by
tzm_freedom
C初心者がbyebugにPR出した話
by
tzm_freedom
APIテストあれこれ
by
tzm_freedom
第一回Web技術勉強会 efkスタック編
by
tzm_freedom
第三回IoT関連技術勉強会 データ通信編
by
tzm_freedom
第二回IoT関連技術勉強会 ログ収集編
by
tzm_freedom
第一回IoT関連技術勉強会 分散処理編
by
tzm_freedom
ElectronでExactTargetのGUIツールを作ってみた話
by
tzm_freedom
ApexからAWS IoT叩いてみた話
by
tzm_freedom
Dreamforce '15のお話
by
tzm_freedom
第2回Web技術勉強会 webパフォーマンス改善編
1.
Web技術勉強会 Webパフォーマンス改善編 田実 誠
2.
今回は一般的かつ超絶基本的なWeb/DBサーバ のパフォーマンスチューニングに関するお話をします。 ※C10Kとかマルチスレッドとかの話はしません
3.
• Webサーバのパフォーマンス改善 • 基本的なHTMLの評価順序 •
TCP Connection • Keep-Alive • CDN(RTT/キャッシュ) • ブラウザのキャッシュ • ドメインシャーディング • 圧縮 • gzip • minify/concat • 非同期処理 • キューイング • DBのパフォーマンス改善 • Index • バッファキャッシュ • NoSQL アジェンダ
4.
基本的なHTMLの評価順序 • ドキュメント(HTML)のロード • DNS、TCP
3way、TLS、TCP • HTMLのレンダリング • JS, CSS, 画像ファイルのダウンロード • DNS、TCP 3way、TLS、TCP • JSの評価
5.
Keep-Alive • TCP 3way
handshakeは時間のオーバーヘッドがあり効率的ではない →TCP 3way handshakeを省略したい • Keep-Aliveは一つのTCP接続を使い回す仕組み →HTTPヘッダにConnection: Keep-Aliveを指定することでWebブラウザ側がTCP接続を使いま わしてくれる • HerokuはデフォルトでKeep-Aliveしてくれるっぽい(ブラウザ – Heroku Router間?) HTTPリクエスト(HTMLくださーい) HTTPレスポンス(HTML渡しまーす) SYN(これから通信するよー) SYN/ACK(OKよろしくー) ACK(じゃあ次のリクエストで送るよー) リクエスト/レスポンスの前段で200ms
6.
Keep-Alive • オレンジ=>TCP 3way
handshake • 緑=>TTFB(Time To First Byte):HTTPリクエストからレスポンスのfirst byteまでの時間 • 青=>ダウンロード時間 • 灰色=>待機時間 • 紫=>TLS handshake • 緑+青=>HTTPリクエスト~HTTPレスポンスを全て受け取るまでの時間
7.
Keep-Alive 2回目以降はTCP接続を使い回すようになっている
8.
ちなみにTLSありだと… • TLS/SSLハンドシェイク分のオーバーヘッドがかかるが、こちらも使い回しの概念が有る
9.
CDNによる改善 • Contents Delivery
Network →静的コンテンツを返すためのサーバ • Akamai、Cloud Front(AWS)、cloud flare • 負荷分散(静的コンテンツはCDN、動的コンテンツはアプリサーバ) • クライアントから一番近いエッジサーバ(配信サーバ)からファイルを取得 →レイテンシ(RTT)の改善 • CDNが各リソース(静的ファイル)をキャッシュするので高速なレスポンスを実現 →アプリケーションサーバが静的ファイルを返すよりかは効率的 Client CDN Webサーバ キャッシュ切れの時だけ リクエスト 静的ファイル リクエスト レスポンス(CDNのキャッシュ)
10.
CDNのエッジサーバに対するアクセス 出典:http://www.slideshare.net/AmazonWebServicesJapan/aws-black-belt-tech-amazon-cloudfront
11.
ブラウザキャッシュによる改善 • HTTPのキャッシュ機構を利用して、ブラウザ自体にHTTPレスポンスをキャッシュし、レスポンスを使い 回す→これを使って静的ファイルのロード短縮が可能 • Cache-Control、Expiresヘッダを使ってブラウザにキャッシュの有効期限を伝達 キャッシュを利用しているので Heavy.js(1.7MB)のロード時間が短縮される
12.
ドメインシャーディングによる改善 • ブラウザの同一ドメインに対するHTTP同時接続数は6つまで • ドメインを分けてリクエストすればMAX同時接続数をドメイン数×6まで伸ばせる 同時!
13.
圧縮(gzip) 圧縮前 圧縮後(1.7MB=>12.3KBに圧縮)
14.
圧縮(minify/concat) • JavaScriptのソースコードをminifyすることでファイルを小さくできる →構文上削除しても問題ない改行や空白の削除、変数名を短くしたり • 複数のJavaScriptを読みこませる場合は、読み込ませる順番にJavaScriptを連結すればクライア ント側は一つのJavaScriptをダウンロードすれば良いのでTCP接続としては効率的 •
webpackは画像ファイルもBase64形式でJSファイルに取り込む • AngularのminifyタスクではテンプレートのHTMLファイルでさえJSファイルにする。そのHTML ファイルの内容も改行等の無駄な文字列を削除したり… • CSSスプライトもTCP接続数削減の一つ
15.
重い処理は非同期に • 画像処理等の重い処理は非同期にして他のサーバ(ワーカ)に処理を回す • Herokuでは1リクエスト30秒ルールがあるので、重い処理はワーカー等を使った非同期処理に回す ※Herokuに限らず同期処理で30秒待たされるのはUX的にNGな感じだと思うので一般的な話とし て… •
SQS(AWS)、RabbitMQ(AMQP)、Redis(Resqueとか併用して) workerQueue Enqueue Dequeue Client
16.
HTTP/2 • TCP接続の多重化(一つのTCP接続で複数のリクエストを同時に実行できる) →アセットの結合がいらなくなる? • バイナリープロトコル(HTTP/1.1はテキストプロトコル) •
ヘッダ圧縮 • 優先度制御 • サーバプッシュ リクエスト1 レスポンス1 リクエスト2 リクエスト2 リクエスト3 リクエスト3
17.
DBパフォーマンス改善 • Indexを効かせるSQL(EXPLAINを見る) • 効率的なSQL(INとかJOINを使って、できるだけまとめて取得する) •
O/Rマッパだと良くも悪くもSQLが隠蔽されてしまうのでパフォーマンスの悪い箇所はSQL文をデバッグして確かめる • コネクションプール(TCP 3way handshakeと接続処理の省略) • メモリ系のDB設定値の調整 • ファイルキャッシュ(メモリに載せよう)※後述 • メモリが足りなければスケールアップ(メモリ増設)を検討 • JOINでコストがかかるクエリは予めJOINさせる • 全文検索はElasticSearch等の全文検索エンジンを使う • 利用できればNoSQLと併用 • MemcachedやRedisなどのインメモリ系KVSはアプリキャッシュとして有用 • シャーディング/テーブル分割/非正規化
18.
Linuxファイルキャッシュ(ページキャッシュ) • Linuxには開いたファイルの内容を自動的にキャッシュする機構がある • RDBのレコード読み込みも結局のところファイル読み込みなので、DBのファイルがメモリに乗ればインメモリDBっぽ く処理される(とはいえNoSQLのインメモリDBは色々と最適化されているので性能差は大きい) SELECT
* FROM performance_test WHERE int_field = 10000000; ページキャッシュ HDD SSD × 27674.021 ms 13330.887 ms ○ 4516.920 ms 4642.373 ms メモリに載ってしまえば、ディ スクは関係ない クエリによるが3~4倍くらいの差 HDDとSSDの速度差は 2倍くらい?
19.
どうやってボトルネックを探すか? • Chrome Developer
Tool • クライアントから見たパフォーマンス/挙動を確認可能 • HTTPのRTT、ファイルサイズ、TCP接続数 • NewRelic • アプリに特定のコードを仕込むことでアプリケーションサイドのパフォーマンスを確認可能 • CPUを使いまくって遅い(画像処理等)のであれば非同期化 • I/O系が遅いのであれば… • DB→SQLのチューニング or インメモリなNoSQLを使うとか • Webサービス→非同期化 • 各RDBのEXPLAIN • Indexが効くSQLに • DBの設定
20.
• RTTの壁は超えれないので何とか工夫する • TCP接続の特性を理解して正しいチューニングをしましょう •
Keep-alive • ドメインシャーディング • CDN • キャッシュ • 圧縮(gzip, minify) • 重い処理は非同期で。ワーカーに回して負荷分散。 • HTTP/2が色々と解決してくれるかも • DBは基本的なSQLのチューニングとインメモリKVSによるアプリキャッシュ等で工夫する まとめ
21.
• ブラウザのキャッシュコントロールについて http://qiita.com/hkusu/items/d40aa8a70bacd2015dfa • Heroku
Router https://devcenter.heroku.com/articles/http-routing • 書籍 • ハイパフォーマンス ブラウザネットワーキング ―ネットワークアプリケーションのためのパフォーマンス最適化 • SQL実践入門──高速でわかりやすいクエリの書き方 (WEB+DB PRESS plus) • 内部構造から学ぶPostgreSQL 設計・運用計画の鉄則 (Software Design plus) • ウェブパフォーマンスの基礎とこれから http://www.slideshare.net/kawada_hiroshi/ss-46149727 • HTTP/2 http://www.slideshare.net/kazuho/http2-51888328 http://www.slideshare.net/asumaslv/http2-57141644 • ファイルキャッシュ http://d.hatena.ne.jp/naoya/20070521/1179754203 • コネクションプール http://blog.yuuk.io/entry/architecture-of-database-connection 参考URL
Download