ASP .NET で開発された私たちのサイトは、1000 人の同時ユーザーを想定しており、DB のリスト数が増えることでパフォーマンスが低下しています。DB の負荷を軽減し、より多くの同時ユーザーのパフォーマンスを向上させるには、どのような種類のキャッシング (NCache や Appfabric など) が最適でしょうか。いくつか提案をお願いします。
4 に答える
分散キャッシュを使用する前に、まず Web サイトのパフォーマンスを監査してください。私はこれまで、自分にとって役に立たないものを絶対に適用したいという間違いをあまりにも多く見てきました。
あなたのサイトは 1000 人の同時ユーザーで遅くなりますか? わかりました、これはごく普通のことです。小さな Web サイトは、大きな Web サイトのように構築されたものではありません。しかし、理由を見てみましょう(順序なしリスト):
- 簡単に言えば、遅いとは何ですか?ページ、ウェブサイト全体?
- ネットワーク: ネットワーク インフラストラクチャは最適ですか?
- DB : データベースが過負荷になっていませんか? クエリを最適化できますか?
- MVC: Async を使用していますか? セッション ? Web Api はどうですか?
- ウェブ: ウェブのパフォーマンスはどうですか? (CDN、スクリプト、CSS、リクエスト数など)
システムのボトルネックをできるだけ早く検出するには、負荷テストと本番システムの監視の 2 つの方法があります。
この背後には、ScaleIn と ScaleOut の課題があります。分散キャッシュがあなたにとって良い解決策ではないと言っているのではありません。
複数のサーバーを実行している場合は、Appfabric の種類のキャッシュ システムが大いに役立ちます。単一のサーバーに使用する場合は、ビルド asp.net キャッシュ システムも有効です。最も重要な要素の 1 つは、使用する RAM サイズです。より多くのRAMを追加する場合、Webサイトはますます高速になります. memcache も使用できますmemcache の .Net へのポートはありますか? . スタック オーバーフローのような Web サイトが表示された場合でも、データベース サーバーには約 380 GB の RAM があり、非常に高速です。SQL Server でさえ、高速アクセスを可能にするためにデータを RAM に保持することを意図しています。
GET アクションの使用時:outputcache/
データベースへの保存時に使用する場合
EF => Configuration.AutoDetectChangesEnabled = false;
最適化が不十分なコードの問題のほとんど。
ASP.NET アプリケーションの NCache を検討することを強くお勧めします。Nキャッシュ
は、.NET アプリケーション用の非常に機能豊富な分散キャッシュであり、はるかに強力です。
App Fabric よりも
NCacheは、アプリケーション データのキャッシュ、ASP.NET セッション状態ストレージ、およびランタイム データ共有に使用できます。