Domanda

Sto lavorando con una soluzione ASP Classic legacy che è bilanciata dal carico (tramite hardware esterno e ha un sito IIS la cui home directory è un percorso UNC. Mi è stato detto che attualmente esistono i seguenti problemi con questa configurazione:

  1. Quando si utilizza un percorso UNC come home directory, è presente un "indice" da qualche parte in IIS che "memorizza nella cache" fino a un certo numero di file di determinati tipi e quando viene raggiunto il limite, il cui valore predefinito è 50, le successive richieste alle pagine non nella cache restituiranno 404.
  2. Quando si utilizza un percorso UNC come home directory, all'avvio del sito IIS, la summenzionata "cache" " inizierà il riempimento, che impantanerà il sito IIS fino a quando la cache non viene riempita, il che significa che siti enormi (15.000 file .asp) non sono disponibili per un massimo di 30 minuti dopo l'avvio del sito IIS.
  3. Quando si utilizza un percorso UNC come home directory, se al sito vengono inviate più di un determinato numero di richieste simultanee, Windows raggiungerà il limite di comando BIOS di rete per server e tutte le richieste superiori al limite dovranno attendere fino a quando IIS "chiude la sessione" al server. Mi è stato detto che il limite è di 100 file e non configurabile.

Ora, tutto ciò suona un po 'strano. Se installo un nuovo server Windows 2003 con impostazioni predefinite e lo utilizzo per ospitare un'applicazione ASP Classic con 15.000 file ASP, utilizzando una condivisione su un server come home directory per il sito IIS, eseguirò effettivamente in questi problemi? E se è così, c'è un modo per contrastarli senza cambiare l'architettura?

(Per chiarire, l'unica ragione per cui il "bilanciamento del carico" è importante è che il bilanciamento del carico è il motivo per cui i file si trovano su una condivisione su un server. Se non fosse necessario il bilanciamento del carico, i file potrebbero trovarsi sul disco locale .)

È stato utile?

Soluzione

Sì, è possibile, ma sì, può causare problemi.

Quando ASP.NET compila ASPX, ASCX e altre pagine di contenuto in assiemi, crea molti FileSystemWatcher al fine di monitorare le dipendenze tra loro in modo che, quando i file cambiano, può ricompilarsi. Questi divorano risorse NetBIOS.

Inoltre, ogni volta che si effettua una chiamata File.Exists o Directory.Exists o qualsiasi altro tipo di I / O al percorso di servizio del sito, ciò aumenta anche le richieste sui limiti NetBIOS.

È possibile impostare i limiti NetBIOS attraverso il Registro di sistema al di sopra dei valori predefiniti su un punto.

Per un sito di piccole dimensioni, con relativamente poche directory e file, è possibile eseguire correttamente una condivisione UNC perché ASP.NET continuerà a essere eseguito dopo l'avvio dai suoi assembly compilati. Tuttavia, maggiore è il numero di directory e file aggiunti, maggiori sono i problemi che si presentano.

Abbiamo provato a eseguire un sito mastodontico (centinaia di directory e file ASPX / ASCX) e avrebbe funzionato bene per alcuni minuti fino a quando non fosse stato raggiunto un numero sufficiente di URL per raggiungere i limiti di NetBIOS, quindi ogni successiva visualizzazione della pagina ha comportato un'eccezione . Abbiamo finito per usare una soluzione di pubblicazione robocopy.

Alla fine, devi testare per vedere se il tuo sito è abbastanza piccolo e le tue impostazioni NetBIOS sono abbastanza alte per funzionare in modo efficace. Suggerirei di usare un ragno su un sito di prova in modo da poter essere sicuri che tutto ciò che potrebbe essere compilato o accessibile sia almeno una volta.

Altri suggerimenti

Non sono sicuro della tua domanda diretta sull'interazione tra IIS e UNC, ma suggerirei su un sito occupato (qualsiasi cosa abbastanza impegnata da richiedere il bilanciamento del carico), che consideri qualcosa di diverso da una condivisione di file.

Un asp caricato da IIS attraverso una rete (cioè una condivisione di file) subirà ripercussioni negative sulle prestazioni (latenza).

Suggerirei di usare qualcosa come robocopy per mantenere sincronizzati tutti i server con bilanciamento del carico con un master centrale. In altre parole, esegui la distribuzione su un singolo server principale (o singola posizione principale), quindi copia i file su ogni slave nel pool del bilanciamento del carico.

Questo non solo rimuoverà i problemi UNC più strani che descrivi, ma dovrebbe anche darti un buon incremento delle prestazioni (rimuovendo l'hit di rete durante il caricamento delle pagine asp). Mi aspetterei aumenti delle prestazioni piuttosto pesanti se lo facessi.

Per la risposta 3 è possibile modificare il limite dei comandi del BIOS di rete. È una correzione di modifica del registro piuttosto semplice: http://support.microsoft.com/kb/ 810.886 / it-it

Mi sono imbattuto in quel particolare problema.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top