Newsgroup: it.comp.www.asp
Titolo: asp e carico del server

Ho realizzato una applicazione tipo chatboard in asp+access su server
aruba, ma ho ricevuto la sospensione del sito dal robot preposto per
uso eccessivo delle risorse del server. Sostanzialmente dicono intorno
all'80%. Purtroppo senza nessun warning preventivo.
Vorrei un parere sul lavoro che ho fatto per capire se ho fatto male
io qualcosa oppure si tratta di una limitazione (forse inevitabile e
comprensibile) del servizio di hosting.
Credo poi che sarebbe utile un po' per tutti comprendere questo mio
problema, per effettuare meglio le scelte sul tipo di hosting, e
sull'eventuale utilizzo di php+mysql.
Non so ancora se tali valori si riferiscono a carichi istantanei o
meno. Inizialmente la pagina principale dell'applicazione, quella che
visualizza i messaggi (adesso sono circa 30.000 su 48MB),  impiegava
fino a 16 secondi per essere visualizzata, tempo durante il quale
sicuramente si verificava un high-loading sostenuto.
Poi allora tali pagine sono state profondamente modificate utilizzando
query molto piu' rapide. Ora infatti la pagina principale della nostra
chatboard viene ad essere caricata dal server in un tempo medio
inferiore ai 0,25 secondi (almeno questo risulta dai calcoli inseriti
nella pagina stessa).
La query lavora principalmente sul campo contatore indicizzato e
visualizza di default al massimo 10 messaggi; dovendo pero' aprire il
database con l'ordinamento decrescente di tale campo, e non essendo in
questo caso implementata direttamente la modalità LIMIT presente ad
esempio in motori quali MySql, ho fatto uso fortemente della stringa
BETWEEN, valutata con appositi test meno pesante per il server
rispetto alla funzionalità di paginazione propria di asp+access.
Testando questa scelta in locale prima, e sul vostro server poi, ho
misurato che globalmente i carichi ed i tempi di esecuzione erano
minimizzati.
Utilizzando il BETWEEN infatti è stato possibile evitare di aprire con
la query l'intero database (attualmente 48MB) ma solo i record
effettivamente visualizzati.
Inoltre tale soluzione è stata anche portata all'analisi di diversi
newsgroup, ricevendo un utile validazione.
In buona sostanza, la pagina apre più volte il database. Normalmente
tre volte per estrarre il valore integer del campo ID necessari per
gestire i valori da usare con BETWEEN e per gestire i pulsanti di
navigazione della chatboard stessa. Inoltre, per ridurre il
CPU-loading, si fa un uso oculato di un paio di variabili di sessione
e delle variabili QueryString per evitare di rieffettuare le query non
necessarie. Il database viene comunque aperto e richiuso
immediatamente all'interno del codice, e solo la query di
visualizzazione dei messaggi rimane aperta per un po' di tempo in piu'
(ovviamente).
Abbiamo fatto inoltre delle valutazioni sul database stesso, e risulta
non essere frammentato. Ad esempio, mentre lanciato il "compatta e
ripristina" il database non ha cambiato dimensioni. Infatti il suo
funzionamento è sequenziale e non vi sono mai cancellazioni o
modificazioni dei record, ma solo l'INSERT progressivo.
Le stesse pagine hanno codice javascript, ma viene eseguito in locale
e solo per la visualizzazione di menu.
Abbiamo fatto uso solo di una funzione richiamata da call(), mentre,
ma non sappiamo quanto influisca sul carico del server, le pagine
fanno uso del server-include alcune volte.
Che cosa ne pensate?
Ciao
Gianluca


Moderatore di it.comp.www.asp - .NET MVP
http://www.aspitalia.com/
 Enjoy the .NET community!
http://www.dev2dev.it/
 La rete ha connesso nuove particelle!

 sicuramente si verificava un high-loading sostenuto.
Le web chat con asp e access effettivamente stressano il server...
ma tu hai veramente bisogno di avere un db di 48 MB???
Che miii***ia ci tieni in un db di 48 MB?
Usa un db SOLO per la chat dove conservi SOLO gli
ultimi messaggi (quelli che visualizzi)
Nixs