目次 †
概要 †
いろいろな情報源からAzureトラブル事例を収集しています。
設計時の考慮点 †
CDN †
CDN的機能を提供する場合は、アプリケーションを自作する前に
Azure CDNの機能を使用できないかを確認する。
国際化対応 †
国際化対応の必要があります。
UTC時間が適用 †
取得したDateTime?(日付や時刻)は、UTC(協定世界時)になるので、
必要に応じて、各タイムゾーンに対応した時間に変換する必要があります。
varcharで文字化け †
- varcharに対してInsertしているデータが文字化けている現象は、
- SQLデータベースではDB既定の照合順序を指定できない。
- 文字列リテラルにはCOLLATEを指定しないとDB既定の照合順序が
エンコーディングのコードページ使用される(ASCIIエンコーディング)ため。
- Unicode 専用のデータ型(nchar, varchar, ntext) には、
エンコーディングのコードページは関連付られないので文字化けは発生しない。
セキュリティ †
ゲートキーパ・デザイン・パターン †
ゲートキーパ・デザイン・パターンというものが存在するので、
必要であれば、事前にそちらのパターンに則って設計する。
VIEWSTATEの暗号化 †
オンプレミスで動作するconfig設定がAzure上で機能しないことがある。
こちらのサイトからweb.configに設定するmachineKeyを自動生成する。
Online Machine Key Generator
http://www.a2zmenu.com/utility/Machine-Key-Generator.aspx
- ただ、HTTPSを導入すれば
(盗聴などの攻撃への対策としては)
ViewSate?暗号化は基本的に不要です。
- また、画面に出ている文字(例えばLabel.Textなど)の
VIEWSTATEであれば、必ずしも暗号化は必要ではない。
問題発生事例 †
ST環境でレスポンス遅延 †
- ソーシャル・ゲームのサービスのST環境でレスポンス低下
- 問題を分析するとパフォーマンス・ログのDisk Queue Lengthが比較的高くなっていた。
- 原因を調べると、パフォーマンス・ログのサンプリング間隔を短く設定し過ぎていた。
- Azureは仮想化環境なので物理環境よりディスク・アクセスが遅いので注意が必要。
VIPスワップに失敗 †
- 上記のアプリケーションのVIPスワップは、
20コアオーバーになるため失敗する。
- 20コアの制限を解除する場合は、
サービス・リクエストの発行が必要になる。
障害発生事例 †
ローカル・ストレージの容量オーバ †
- CDN的な機能を実装した際、ローカル・ストレージを使い切り一部コンテンツが配信できなくなった。
- ストレージから取得したデータをローカル・ストレージにキャッシュする仕組みであった。
- wwwroot以下はEドライブにマップされており、1GB程度しか提供されていなかった。
- ローカル・ストレージのドライブ名はAPI、LocalResource?.RootPath?で取得すること。
- LocalResource?.RootPath? Property (Microsoft.WindowsAzure?.ServiceRuntime?)
高アクセス時にレスポンス遅延 †
- CDN的な機能を実装した際、レスポンスの遅延があった。
- コンテンツのサイズに大きいものがあったため(500KB超)。
- コンテンツのサイズを256KB以下に小さくする(推奨)。
デプロイ後40日で診断ログが停止 †
- オンプレミスのアプリケーションをAzureに移行後、40日で診断ログが停止
- 診断ログ・フォルダのクォータ設定に起因して診断ログ領域がオーバーした。
- 通常、4GB-16MBを超えたタイミングでログ・ファイルが消去される。
- 4GB-16MBの状態から急に、16MBを超える書き込みがあるとログ・ファイルが消去されず、診断ログが停止。
- 以下のプロパティを設定して上記問題が起きないようにする。
障害分析 †
ほぼ、ログから問題が特定されるので、ログが非常に重要になります。
各ロールのログ †
- 診断ログ
- カーネル・ダンプ
- プロセス・ダンプ
- イベント・ログ
- パフォーマンス・ログ
- アプリケーションのカスタムログ
- IISアクセス・ログ
- HTTPエラーログ
- その他ログ
- netlogon
- winlogon
- w32time
- netdiag
- dnsデバッグ・ログ
SQLデータベースの監視 †
DMV †
- 実行関連
- sys.dm_exec_connections
- sys.dm_exec_describe_first_result_set
- sys.dm_exec_describe_first_result_set_for_object
- sys.dm_exec_query_plan
- sys.dm_exec_query_stats (Transact-SQL)
- sys.dm_exec_requests
- sys.dm_exec_sessions
- sys.dm_exec_sql_text
- sys.dm_exec_text_query_plan (Transact-SQL)
- トランザクション関連
- sys.dm_tran_database_transactions
- sys.dm_tran_session_transactions
- sys.dm_tran_active_transactions
- sys.dm_tran_locks
- Database View関連
- sys.bandwidth_usage
- sys.dm_database_copies
- sys.firewall_rules
- sys.database_usage
- sys.dm_db_objects_impacted_on_version_change
ストアド †
システム ストアド プロシージャ (Windows Azure SQL データベース)
http://msdn.microsoft.com/ja-jp/library/windowsazure/ee336237.aspx
- sp_updatestats
- sp_monitor
- sp_monitor
- sp_statistics
- sp_columns
- sp_table_privileges
- sp_special_columns
DBCC †
DBCC SHOW_STATISTICS (Transact-SQL)
http://msdn.microsoft.com/ja-jp/library/ms174384.aspx
CSAD †
[SQL Azure] CSS SQL Azure Diagnostics (CSAD)toolのご紹介
- Windows Azure サポート チーム ブログ - Site Home - MSDN Blogs
http://blogs.msdn.com/b/dsazurejp/archive/2011/11/18/sql-azure-css-sql-azure-diagnostics-csad-tool.aspx
情報源 †
参考情報 †
障害履歴 †