2010-08-20 8 views
5

Possiedo un'applicazione che funziona bene su un singolo server. Il mio cliente ora vuole spostarlo in un ambiente con bilanciamento del carico. Quali cose potrebbero mordermi quando lo fai?Spostamento di un'applicazione Asp.net in un ambiente con bilanciamento del carico

Attualmente non conosco

  • stato sessione, e
  • chiave del computer.

Entrambi questi sono descritti here, ad esempio, quindi sto cercando cose aggiuntive a questo.

Questi similarquestions, ma il primo bilanciamento del carico degli indirizzi in generale, e sto cercando una guida di migrazione, e il secondo affronta un problema specifico.

risposta

2

Una cosa che si potrebbe verificare è un aumento di carico sul server del database. Se si implementa una memorizzazione nella cache dei dati del server, verrai abituato al tuo sito a colpire il database una sola volta per un determinato set di dati, memorizzando nella cache i dati e quindi non andando nuovamente al database fino a quando la cache non scade. Questa è una buona strategia per i dati comunemente utilizzati.

In un ambiente con bilanciamento del carico, le richieste successive potrebbero passare a server diversi e il database verrà colpito due volte per gli stessi dati. O più se hai più di 2 server. Questo non è male di per sé, ma ti consigliamo di tenerlo d'occhio. Se il database è in coda, i vantaggi dell'esecuzione di una webfarm potrebbero essere negati. Come sempre, benchmark, profilo ed eseguire test.

Un modo per aggirare questo è avere sessioni appiccicose. Questo è un approccio basato su router. una volta stabilita una sessione utente, tutte le richieste da quell'utente vengono indirizzate allo stesso server. Ciò ha i suoi svantaggi, in particolare, una potenziale diminuzione dell'efficienza del bilanciamento del carico, per non parlare dei problemi quando si perde un server. Inoltre, è utile solo quando si memorizzano nella cache per lo più dati specifici dell'utente, come i risultati di ricerca a pagina, che vengono memorizzati nella cache solo per un breve periodo.

Un'altra soluzione è avere una cache distribuita, in memoria, come memcached, Velocity o NCache. Ce ne sono anche altri, ma questi sono quelli con cui ho lavorato.

Un'altra cosa da tenere a mente, che non è correlata a quanto sopra è: Come gestisci i caricamenti di file dai tuoi utenti. Molti siti consentono ai file di essere caricati dagli utenti. Se tali file non sono stati precedentemente salvati in un archivio centrale, ad esempio un database o una condivisione di file comune, dovranno esserlo.

0

Vedere this article che descrive alcuni suggerimenti relativi alla preparazione dell'applicazione asp.net per il bilanciamento del carico.

+1

collegamento errato. È per questo motivo che non dovresti lasciare i link come risposta – Phil

Problemi correlati