26
めてのパフォーマンスチューニング かめがわ かず ( kkamegawa )

Performance tuning the first

Embed Size (px)

DESCRIPTION

Performance tuning the first and tools demo.

Citation preview

初めてのパフォーマンスチューニング

かめがわ かずし(kkamegawa)

自己紹介 かめがわ かずし(会社員) /

kkamegawa(hatena/twitter/Facebookなど) Microsoft MVP for Visual Studio 主に@ITさんでいろいろ書か

せてもらっています。今はTFS/ALM関係の話http://www.atmarkit.co.jp/ait/articles/1303/01/news082.html第1回 TFS Expressで始めるソース・コード管理

今回はアプリケーションのギアを上げる話http://www.atmarkit.co.jp/fdotnet/chushin/vsperf_index/index.html

Agenda

チューニングとは

ハウツー

ツール紹介

やらないこと

鉄則みたいなこと

詳細なTIPS

WHAT’S PERFORMANCE TUNING

そもそも何?

性能要求あるある

3秒以内に応答すること

全てのパターンで?

参照(満たせるかな?)

更新(結構厳しい)

お金は? もちろん枠内!

困っていませんか?

手元では速いのに本番では遅い…

24コアあるサーバーなのに2~3しか働い

ていない?

性能調査用ログ追加が大変

ボトルネックの場所がわからない

高価なEditionじゃないと調べられない?

どこまでやればいいかわからない

Performance Tuning Everywhere

OS設定,プログラム内で用意されたパラメータ変更設定変更で改善

特定のモジュールの一部の改善を行う(並列,並行,キャッシュ)プログラムで改善

ネットワーク、ディスクアクセスを減らす方式を改善

お金が許す限り何でもやる(サーバ/メモリ/CPU追加など)ハードウェアで改善

HOW TO PERFORMANCE TUNING

実際どうやるの?

Performance Goal Case By Case

• ネットワークレイテンシ,使用メモリWebサーバ

• 使用メモリ量,CPU,DiskI/O,Network帯域

データベース

• JavaScriptのパフォーマンスブラウザ

• 使用メモリ,起動速度リッチクライアント

Step by Step

目標設定 テスト実施 改善

場合によっては目標設定からやり直し…

過去の話が正しいとは限らない

• プログラムでキャッシュ→SSD登場(キャッシュするより書く)ディスクは遅い

• 難しい並列、非同期がライブラリ、コンパイラのおかげで身近に(理解してないとはまる)並列・並行

• 化ける、到達しない→ほとんどない(10数年経験していない)ネットワーク

TOOL INTRODUCTION

あんなツールこんなツール

OS標準ツール(もちろん無料) パフォーマンスモニター(perfmon.exe)

リソースマネージャー

タスクマネージャ

主なパフォーマンスカウンタ種類

名前 説明.NET CLR Memory .NETアプリケーションで使用しているヒープおよび各

世代別GCの情報を取得することができる。ASP.NET Application ASP.NETで実行されているアプリケーションの性能情

報を取得することができる。Physical Disk 物理ディスクの書き込み、読みこみ、処理待ち情報を

取得することができる。Process Windowsで実行されている各プロセスの情報を取得す

ることができる。Private Bytesが増加傾向であればメモリリークを疑ってみる。

ServiceModelService

3.0(.NET 3.5x)と4.0(.NET 4.x)がある。WCFを使う場合はみるとよい。

MSが配布するツール(無償) Windows SDK付属

Xperf.exe パフォーマンスレコーダー Windows Performance Analyzer

CLR Profilerhttp://www.microsoft.com/en-us/download/details.aspx?id=16273

PerfMonitorhttp://bcl.codeplex.com/wikipage?title=PerfMonitor&referringTitle=Home

PerfViewhttp://www.microsoft.com/en-us/download/details.aspx?id=28567

Process Explorerhttp://technet.microsoft.com/ja-jp/sysinternals/bb896653.aspx

Visual Studio内蔵 エディションごとの機能比較

http://www.microsoft.com/visualstudio/jpn/products/compare

Web Performance Test 負荷テスト

JavaScriptプロファイラーWindowsストアアプリケーションのみ対応 Visual Studio 2012 Update2の新機能

VS2012 JavaScriptプロファイラ1

UIの応答性のプロファイル

VS2012 JavaScriptプロファイラ2

メモリ使用量のプロファイル

Webテスト用ツール Web Performance TestはUltimateのみだが、いくつか

無償ツールもある。Apache JMeter

http://jmeter.apache.org/Microsoft製Web Capacity Analytics Tool

http://www.iis.net/downloads/community/2007/05/wcat-63-(x64)メンテされているかどうか?(IIS 7まで確認済み)

単体プロファイラー(有償) JetBrains dotTracer

https://www.jetbrains.com/profiler/

NDependhttp://www.ndepend.com/

Redgate ANTS Memory Profilerhttp://www.red-gate.com/products/dotnet-development/ants-memory-profiler/

.NET Memory Profilerhttp://memprofiler.com/

単体プロファイラー(無償) EQATEC Profiler

http://www.eqatec.com/Profiler/Home.aspx

Slimtunehttp://code.google.com/p/slimtune/

ソフトウェア特化型 SQL Server Profiler

http://msdn.microsoft.com/ja-jp/library/ms181091.aspx

DEMO

実際に取得する方法を時間の限り

まとめ よくある「三秒ルール」をそのまま受け入れないように

しよう(早いに越したことはないし、遅いものは遅い)。

手当たり次第にログ入れるのではなく、ツールを使ってボトルネックを探ろう

時代とともに常識は変わる

参考資料 @IT-アプリケーションのギアを上げよう

http://www.atmarkit.co.jp/fdotnet/chushin/vsperf_index/index.html

Event Tracing for Windows (ETW)http://blogs.msdn.com/b/jpwdkblog/archive/2011/12/27/event-tracing-for-windows-etw.aspx

Pro .NET Performancehttp://www.apress.com/9781430244585

Apress.comより引用