Newsgroup: it.comp.www.asp
Titolo: Server stress con Application variable...

ciao a tutti.
spero possiate darmi delle delucidazioni su quanto č stressante per un server
gestire un array in una variabile application, per una minichat.
la minichat in questione, legge e/o scrive nella variabile application ogni 2/3
secondi.
l'array contiene solo un numero prefissato di elementi (20), come supera il
numero prefissato lo pulisco.
in un primo tempo avevo usato il fso e la scrittura di un file di testo sul
server, ma lě esageravo davvero con lo stress al server.
capisco che ci sono strumenti adatti per queste cose, ma volendo farla con
classic asp, come mi consigliate di muovermi.
utilizzo una variabile application? avete qualche altra idea.
la domanda in questione č:
č assurdo utilizzare una variabile application per la minichat?
appesantisco esageratamente il lavoro del server?
per avere un'idea chiara di cosa intendo per minichat, potete visitare una
pagina qualsiasi del mio sito:
http://www.visuddhi.com
grazie per le preziose indicazioni che mi darete sicuramente :)
--
visuddhi { info(at)
visuddhi.com
 }
if it is to be, it is up to me { 
www.visuddhi.com
 }
{ icq# 44339752 }

Dio ci ha dato i database...
..... usiamoli :)
Tenderei ad evitare l'uso dell'application quando puoi usare un semplice
file access.
Ciao
--
Alessandro
UGIdotNET - User Group Italiano .NET
http://www.ugidotnet.org

 ..... usiamoli :)
quindi pensi sia preferibile aprire/chiudere un database ogni 2/3 secondi invece
di interrogare l'application?
andrei ad instanziare continuamente nuove connessioni al db? le chiudo subito
dopo, ma č sempre lavoro per il server.
a questo punto non č la stessa cosa usare un file di testo?
grazie ancora!


Ciao,
Dipende. Se hai a disposizione un SQL server, il connection pooling ti
permette di mantenere la connessione aperta per 2/3 secondi, il tempo
necessario a fare multipli inserimenti con una sola connessione.
Se invece hai access forse diventa un tantino più lento (non conosco access
e non ho idea se il JET sfrutti un connection pooling, anche se dubito
fortemente...).
Ma conta che usando l'application devi, per una singola scrittura:
- lockare l'application (altrimenti permetteresti a due utenti di scriverci
in simultanea e potresti perdere messaggi)
- Andare a vedere se la variabile (che è un array, e come si sa gli array
sono gestiti malissimo) ha più di venti elementi.
- Se ha più di venti elementi, cancellare gli elementi dal 21 in poi oppure
svuotarla tutta (un po scomodo)
- Scrivere il tuo elemento
- fare l'unlock dell'application
Conta che dopo la 20esima riga tu dovresti sempre cancellare una riga e
scrivere una riga, lavorando in RAM con gli array. Io continuerei a
preferire il DB e fare una select top qualcosa. Così non devo stare li a
cancellarlo ogni 20 righe, posso cancellarlo ogni mille, oppure ogni 10000,
e posso cancellarle tutte tranne le ultime 10, così sono a posto per altre
9990 righe...
Conta anche che in teoria l'application non è stata progettata per lavorare
a run-time, ma per cambiare ogni volta che parte l'applicazione _e basta_.
Infatti l'application dovrebbe stare nell'on_start del global asa, e nelle
altre pagine non bisognerebbe scriverci sopra ma solo interrogarla, quindi
non so quanto sia ottimizzato il lavoro di scrittura e di lock/unlock
Boh, poi magari sono troppo affezionato ai database, ma sappi che anche se
lo vuoi fare con l'application _concettualmente_ non è un'atrocità, per
sapere quanto stress produce puoi studiarti più in dettaglio il
funzionamento dell'application e fare le tue somme :)
Ciao, spero di averti aiutato!
