Jump to content

Indicizzazione tabelle categorie


Recommended Posts

ci riprovo anche qui (ho messo ieri il post in inglese ma forse il io pessimo inglese è un ostacolo)...

 

ho predisposto un ex-commerce con prestashop (1.5 all'inizio ed ora 1.6) che ha circa 750 categorie e 4500 prodotti. Su localhost nessun problema ma sul server ho problemi di performances.

Ho ottimizzato l'ottimizzabile, seguendo i vari consigli ed è molto migliorato ma rimane una grande lentezza iniziale, soprattutto se sono molte ore che non accedo (per esempio la mattina). La mattina aspetto anche 30 secondi per avere la home page, poi le richieste successive vanno molto meglio. Almeno per un po' diore. Poi degenera di nuovo.

 

Il tecnico che cura il server segnala una querry molto dispendiosa all'inizio.

Ho pensato che potesse essere quella che, partendo dalla lingua selezionata, scansiona l'albero delle categorie per costruire dinamicamente il menu.

 

Non ho idea di come trovare il codice di questa select ma immagino che se sapessi i campi che vengono relazionati e se potessi costruire un indice su questi campi, ottimizzerei al massimo questo accesso.

Mi chiedo quindi

1) se vi sembra possibile che il probema sia risolvibile indicizzando ps_category_lang e su quali campi costruire l'indice (a parte ovviamente  l'id della lingua e il nome della categoria).
2) quali altri campi sono da indicizzare per fare in modo che la query lavori solo con l'indice.

 

Grazie per ogni aiuto

Francesco

Edited by Francesco53p8 (see edit history)
Link to comment
Share on other sites

aggiornamento. le categorie ora sono circa 900 e quindi con due lingue abbiamo 1800 records da scandire per creare i livelli di menu.
mi chiedo se in giro ci siano e-commerce di questa mole e se hanno avuto problemi.

In effetit se come test disabilito il menu, il prodotto è inutilizzabile ma la home page appare immediatamente.

Il problema quindi è li ed io da solo non posso risolverlo, a meno di non provare ad indicizzare a naso e a tentativi.

Link to comment
Share on other sites

Il menu lo hai implementato da zero? oppure utilizzi quello che ha Prestashop di default?

Se utilizzi quello di default, basta che attivi la cache, in questo modo il menu verrà creato una sola volta e quindi non avrai problemi di performace. Ovviamente ad ogni modifica di una categoria, il sistema provvederà a ricreare l'intero menu.

Link to comment
Share on other sites

Sì, è il menu' originale di prestashop.
per la cache, durante le varie prove con 1.5 ho attivato mi pare memcached ma ora sono su 1.6 e le cose sono cambiate.
Sto provando un lamp bitnami (ottimizzato per prestashop) e certe cosa ancora non me le fa fare, come per esempio attivare la cache :-(

Io noto che al primo accesso è lento (anche con le versioni precedenti) ma i successivi sono veloci, cosa che mi fa pensare che la cache sia in qualche modo attiva. Solo che dopo un po' di tempo (alcune ore di non utilizzo) il sistema torna ad aver un inizio lento (per esempio la mattina) e quindi mi chiedo se la cache magari dopo un po' non scada e debba essere rigenerata.

Edited by Francesco53p8 (see edit history)
Link to comment
Share on other sites

ho predisposto un ex-commerce con prestashop (1.5 all'inizio ed ora 1.6) che ha circa 750 categorie e 4500 prodotti. Su localhost nessun problema ma sul server ho problemi di performances.

 

quando il sito è su server entrano in gioco altrei fattori che possono incidere su velocità/performance

 

* dislocazione fisica del server

* tua linea telefono

* problemi di connessione tra utente e server

 

fare un analisi del tracciato per raggiungere il server per verificare se ci sono nodi che creano perdite di tempo ecc

 

in locale è ovvio che tutto è più veloce, è la stessa macchina utente/server

 

Saluti

Link to comment
Share on other sites

ti ringrazio, solved.

sono consapevole degli aspetti che giustamente richiami.
Il mio problema è che un primo accesso della pagina su internet, dopo ore di non utilizzo, produce un tempo di attesa inaccettabile (diciamo 30 secondi) da diversi computer in rete mentre le successive chiamate sono accettabili (2-3 sec). Questo l'ho verificato numericamente usando strumenti di trace tipo httptrace che mi forniscono i tempi di risposta di ogni singolo oggetto trasferito.

Considerando che poi ho una linea a 250Mbps per arrivare dall'ufficio al server, sono comunque in una posizione previlegiata rispetto al navigatore normale che con una adsl viaggia, almeno qui da me, tra i 5'000 ed i 20'000 Kbps.
Come dicevo poi se elimino il menu la risposta è immediata, segno che l'anomalia non dipende dalla dislocazione, dalla linea e dai problemi di connessione ma proprio da lavoro che il server fa per costruire il menu.

 

Ho anche seguito le indicazioni che questo servizio di google fornisce gratuitamente: https://developers.google.com/speed/pagespeed/insights/

 

Penso proprio che molto dipenda dalla possibilità di ottimizzare la fase di costruzione del menu. Chiaro che in locale ho tutti i mega e la cpu che voglio. Sul server ci sono piu' limiti ma ho già 512 di ram che mi pare siano piu' di quelli consigliati. Ora sto usando una macchina virtuale preparata da bitnami (ubuntu, apache, php, mysql) ottimizzata per prestashop e quindi sul fronte della ottimizzazione del lato software dovrei essere OK.

Link to comment
Share on other sites

non è tanto i mega e CPU che fanno la differenza ma linea, connessione server e apache

 

considera che in locale apache gira solo sulla tua macchina, mentre di norma, nei server sia se dedicati che VPS apache è condiviso e non è unico per la tua macchina, questo è anche motivo di rallentamento in esecuzione di query, come nel tuo caso la lettura di albero categorie, perchè lo stesso motore mysql deve servire più macchine

 

per non parlare poi dei server condivisi che è tutta altra storia

Edited by Guest (see edit history)
Link to comment
Share on other sites

Ottime considerazioni. Per i server shared avevo letto che non erano adatti a prestashop per cui, dopo un primo esperimento di un mese ho abbandonato subito. Non riuscivo nemmeno a caricare i CSV. Timeout uno dietro l'altro.
Quindi sono passato ad un sito classico (non saprei come definirlo) e la musica è cambiata. Ottime performances fino a quando - a poco a poco - non ho caricato tutti dati. Ora però che ho a disposizione una macchina virtuale, che comprende sistema operativo e tutto quanto serve a far funzionare prestashop, mi pare di capire che il motore mysql di questa macchina è a mia disposizione.
Mi hai messo la classica pulce nell'orecchio e chiedero'.

 

Nel caso, se tu potessi essere piu' preciso attorno alla frase "qualche operazione diretta sulle tabelle interessate per renderle più performanti" te ne sarei grato. Io appunto penso alla indicizzazione della tabella categoria_lingua me devo sapere i campi referenziati dala query, senza i quali non saprei cosa indicizzare.

Link to comment
Share on other sites

difficile che il motore mysql ( apache ) sia solo tuo, gli costerebbe troppo all'azienda metterne a disposizione ad ogni macchina uno suo.

 

parlo comunque di server dedicati o vps a prezzo medio, quindi "commestibili", se si va su fascia TOP il discorso cambia, ma siamo già su cifre a 4 zeri per mese

 

ti preparo appena possibile un tutorial per operazioni dirette su DB

Link to comment
Share on other sites

difficile che il motore mysql ( apache ) sia solo tuo, gli costerebbe troppo all'azienda metterne a disposizione ad ogni macchina uno suo.

Ho verifcato con il provider: in questo momento sto usando una VPN di Bitnami e quindi ho una istanza di mysql tutta mia.

Le performances sono nettamente migliorate.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...