[Tech] Prestazioni LAMP

Aldo Podavini a.podavini@mclink.it
Mar 16 Maggio 2006 13:48:05 CEST


Umh...

Marco Marcantelli (kaifa) wrote:

>Perchè se io apro un browser e lo punto su una applicazione fatta in PHP
>(quindi lato server) che fa una select su un database Mysql con una limit a 15
>records,  se ho 500 righe di database ci metti 1/10 secondo e se ho 100.000
>righe di database ci mette 10 secondi. 
>  
>
In locale o in remoto ?
Ti posso assicurare che una query limit 15 su una tabella da 100.000 
righe NON DEVE metterci 10 secondi.
La risposta che ci si può attendere in locale su una macchina x386 e 
anche in assenza di indici adeguati, con dimensioni di un record 
nell'ordine delle decine-centinaia di bytes è nell'ordine di 1/2 decimi 
di secondo.

>Faccio un'altro esempio : perchè se io faccio una select di 15 records in rete
>locale, ci mette 1/10 di secondo e se invece la faccio collegato a 56K ci
>mette 15 secondi ? 
>  
>

>La domanda è : ma il PHP non è eseguito lato server ? quindi le prestazioni 
>dovrebbero essere indipendenti dalla connessione tra browser e server...
>perchè non è così ? il browser fa la richiesta, PHP e Mysql la eseguono lato
>server, e rendono il risultato al browser, che poi alla fin fine è sempre la
>stessa paginetta HTML. 
>  
>
Tutto corretto.
I 15 secondi famosi non possono che essere dovuti ai tempi di invio 
della paginetta HTML (di soli 15 record quindi).
Se ti rimangono dei dubbi puoi provare a loggare le query lente. Basta 
inserire in /etc/my.cnf:

log-slow-queries=/var/log/slow-queries.log
long_query_time=1

In questo modo il server logga su /var/log/slow-queries.log tutte le 
query che impegnano per più di un secondo il server mysql, e ti 
convincerai che non saranno tantissime.

Se ti rimangono ancora dubbi puoi salvare sul server la paginetta creata 
come HTML puro, e provare a ricaricarla varie volte dal browser 
(ovviamente evitando di impegnare cache locali o di proxy vari, è 
sufficiente aggiungere alla url una cosa tipo "?dummy=1" cambiando ogni 
volta il valore), e verificare se i tempi sono ragionevolmente simili a 
quelli del php. Un po' migliori è ovvio, ma non di molto.

Ciao
A.





Maggiori informazioni sulla lista flug-tech