ASP.NET est devenu le premier choix des développeurs dans le développement d'applications Web à fort trafic. En raison de sa nature évolutive, le niveau d'application ASP.NET peut gérer de manière transparente des milliers d'utilisateurs simultanés avec des millions de demandes par jour. Ces applications ASP.NET à fort trafic sont déployées dans une ferme Web à charge équilibrée avec un équilibreur de charge, acheminant les demandes des utilisateurs vers plusieurs serveurs Web.
Bien que le niveau d'application ASP.NET fonctionne exceptionnellement bien, même lors de charges transactionnelles élevées, l'application est confrontée à des goulots d'étranglement d'évolutivité critiques dans d'autres domaines. Ces goulots d'étranglement peuvent ralentir votre application ASP.NET, et elle peut même s'arrêter lorsque votre activité commerciale est à son apogée.
Le problème : quatre goulots d'étranglement des performances
Ces quatre goulots d'étranglement des performances ASP.NET sont décrits ci-dessous :
Goulot d'étranglement de la base de données
Dans une batterie de serveurs Web à charge équilibrée, lorsque la charge de transaction augmente, vous pouvez facilement ajouter plus de serveurs Web pour évoluer de manière linéaire. Mais vous ne pouvez pas ajouter d'autres serveurs de base de données au niveau base de données (SQL Server, Oracle, autres) de la même manière. Ainsi, la base de données commence à ralentir et peut même planter à un moment donné. Cette panne est le goulot d'étranglement de performance le plus critique auquel votre application est confrontée.
Goulot d'étranglement de stockage d'état de session ASP.NET
L'état de session ASP.NET doit être stocké quelque part, et son stockage devient un goulot d'étranglement comme la base de données d'application. Il existe trois options de stockage fournies par Microsoft, à savoir InProc, State Server et SQL Server. Tous les trois ont des goulots d'étranglement de performance.
InProc vous oblige à utiliser un seul processus de travail par serveur Web, ce qui ne fonctionne pas dans un environnement multiprocesseur ou multicœur, où il est préférable d'avoir plusieurs processus de travail.
Et, dans une batterie de serveurs Web à charge équilibrée, un bit de session persistant est requis sur l'équilibreur de charge pour toujours envoyer les demandes des utilisateurs au serveur Web, créant ainsi la session, même si ce serveur Web est surchargé tandis que d'autres sont inactifs.
En outre, SQL Server n'est pas un magasin idéal pour l'état de session ASP.NET car il les stocke sous forme d'objets BLOB et SQL Server ne fonctionne pas bien avec lui.
NCache Détails Mise en cache de session ASP.NET Documents de mise en cache de session ASP.NET
ASP.NET View State Goulot
ASP.NET View State est une fonctionnalité de gestion d'état côté client construite sur le serveur Web pour conserver les données des contrôles tels que les boutons et les listes déroulantes. Ces données sont envoyées au navigateur uniquement pour être renvoyées en cas de publication. Et un ASP.NET View State La chaîne peut facilement atteindre des centaines de Ko, multipliée par des millions de requêtes que vous recevez chaque jour.
Cela ralentit non seulement le temps de réponse de votre application ASP.NET, mais consomme également beaucoup de bande passante supplémentaire, ce qui peut augmenter considérablement vos coûts opérationnels.
Exécution de page inutile
Souvent, la sortie de la page ASP.NET ne change pas sur plusieurs requêtes car les données sous-jacentes n'ont pas changé. Mais la page s'exécute toujours pour produire la même sortie que la dernière fois. Cette exécution de page supplémentaire consomme beaucoup de ressources système, y compris la mémoire et le processeur, et effectue également des appels de base de données.
La solution : cache distribué en mémoire
La solution la plus appropriée à tous ces problèmes est d'incorporer un cache distribué en mémoire dans votre ASP.NET et ASP.Net Core . NCache est un cache distribué open source populaire pour .NET. Voyons rapidement comment résoudre nos quatre goulots d'étranglement de performance avec NCache.
NCache Détails ASP.NET Core Stratégies de stockage de session ASP.NET View State Propriétés de mise en cache et vue d'ensemble
Mise en cache des données d'application
NCache vous permet de mettre en cache vos données d'application (à la fois les données de référence en lecture seule et les données transactionnelles qui changent fréquemment) pour réduire ces déplacements coûteux de la base de données. Au lieu d'aller dans la base de données, NCache achemine 85 à 90 % de vos requêtes vers le cache. Cela exclut les risques de conflit de base de données.
Contrairement à une base de données, NCache ne devient jamais un goulot d'étranglement parce que c'est un cache distribué ainsi que échelles linéaires. NCache construit un cluster de serveurs de cache et vous permet d'ajouter plus de serveurs au cluster à mesure que votre charge de transaction augmente. Voici un exemple de code qui récupère les données de la base de données et les stocke dans le cluster de cache (s'il n'est pas déjà présent dans le cache).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Customer Load(string customerId) { // Key format: Customer:PK:1000 string key = "Customers:CustomerID:" + customerId; Customer cust = (Customer) _cache[key]; if (cust == null) { // Item not in cache so load from db LoadCustomerFromDb(cust); // Add item to cache for future reference _cache.Insert(key, cust); } return cust; } |
Configuration du stockage d'état de session
NCache vous permet également de stocker vos sessions ASP.NET dans le cache. Il s'agit d'un magasin en mémoire beaucoup plus rapide que vos autres options de stockage. Pour assurer la fiabilité, NCache réplique vos sessions sur plusieurs serveurs. Ainsi, si un serveur tombe en panne, il n'y aura pas de perte de données de session. La bonne chose à propos du stockage de l'état de session ASP.NET dans NCache est qu'il n'y a aucun effort de programmation et que vous pouvez le brancher de manière transparente via une modification de web.config. Ci-dessous un exemple.
1 2 3 4 5 6 7 8 9 |
<configuration> ... <sessionState cookieless="false" regenerateExpiredSessionId="true" mode="Custom" customProvider="NCacheSessionProvider" timeout="20"> <providers> <add name="NCacheSessionProvider" |
Afficher la configuration de l'état
NCache vous permet de mettre en cache votre ASP.NET View State sur le serveur web se terminent par l'envoi uniquement d'une clé d'identification au navigateur. En revenant dans un postback, NCache récupère les résultats de la vue en interceptant la clé d'identification via son gestionnaire HTTP. Cet état d'affichage est ensuite envoyé à votre page ASP.NET.
Le résultat net est une application ASP.NET beaucoup plus rapide avec une empreinte de bande passante beaucoup plus petite. Vous trouverez ci-dessous un exemple de changement de configuration sur la façon d'utiliser NCache pour la mise en cache ASP.NET View State:
Cache de sortie ASP.NET
Pour éviter l'exécution inutile de pages ASP.NET lorsque leur sortie ne change pas, ASP.NET fournit un Cache de sortie framework pour les configurations de serveur unique et de processus de travail unique. NCache, d'autre part, l'étend pour les configurations de processus multi-serveurs et multi-travailleurs.
Avec NCache, vous pouvez également vous attendre à ce que vos pages expirent lorsque leurs données associées sont modifiées dans la base de données. Ci-dessous un exemple.
Conclusion
En bref, NCache an cache distribué en mémoire avec une évolutivité linéaire, une configuration d'état d'affichage simple et une configuration transparente avec votre application, c'est la meilleure solution pour tous ces goulots d'étranglement de performances. Ces fonctionnalités optimisent la performant de votre application .Net et la rendre plus rapide, plus fiable et hautement disponible.