2010-10-18 11 views
5

Abbiamo un sito Web sviluppato in PHP con MySQL e talvolta si trovano ad affrontare problemi quando il traffico aumenta. Abbiamo quasi ottimizzato il sito in tutti i modi per gestire più richieste, ma affrontiamo ancora problemi nelle ore di punta.Devo ricostruire il mio sito Web PHP con un database di documenti per migliorare le prestazioni?

Uno dei miei amici suggerisce di ricostruire il sito utilizzando HBase/MongoDB come back-end per migliorare le prestazioni. Inoltre suggerisce che se lo ricostruiamo, possiamo facilmente passare ai servizi cloud. Ma abbiamo bisogno di imparare tutto e ricostruirlo.

È un'idea migliore farlo?

+2

Chiunque suggerisca qualcosa di diverso dal profiling, non ha idea. Evitare tali "consulenti" ad ogni costo. Hai profilato il tuo sito? Su che tipo di server funziona? –

+0

Non abbiamo profilato il mio sito web fino ad ora. Abbiamo appena seguito alcuni suggerimenti per l'ottimizzazione. Per favore suggeriscimi gli strumenti per il profilo. – Chris

+0

quando dici che il traffico aumenta - puoi essere più specifico? –

risposta

5

La prima cosa da fare è profilare l'app Web per determinare il collo di bottiglia.

Se è sicuramente query al database, quindi sostituendo mysql con MongoDB potrebbe essere una buona idea, ma i database di documenti lavorare in un modo diverso di quelli relazionali, e si potrebbe avere problemi di porting alcuni tipi di funzionalità. Se decidi di provare mongo, prototipa presto e spesso, perché non c'è garanzia, sarà più veloce per te.

Se la scalabilità è davvero un problema per te, allora perché non entrare direttamente in un'architettura web basata su cloud come Google App Engine. Questo è java o python e database di documenti (bigtable) basato, ma ti costringe in un'architettura di "cloud" scalabile fin dall'inizio.

Un'altra opzione è semplicemente introdurre (o ottimizzare) il caching (con memcache) - questo avrà meno effetti architettonici sull'applicazione, quindi richiede meno sforzo.

+0

Utilizziamo LAMP. Fino ad ora non abbiamo profilato il mio sito web. Abbiamo appena seguito alcuni suggerimenti per l'ottimizzazione. Per favore suggeriscimi gli strumenti per il profilo. – Chris

+0

Non ho ancora provato a profilare alcun sistema LAMP prima, forse faccio un'altra domanda sullo stack overflow? Probabilmente avrai bisogno di strumenti diversi per apache, mysql, CPU del server, accesso alla rete del server, ecc. –

+0

E a seconda di cosa intendi per "problemi", forse hai bisogno di un profilo anche da un browser, come con firebug. +1 a col shrapnel –

0

Ci sono anche semplici opzioni di scalabilità MySql. Tornando ai "giorni bui", avremmo gettato l'hardware dedicato al DB come primo passo, più recentemente, il clustering è diventato possibile. Esistono anche soluzioni di tipo cloud basate su MySQL che è possibile utilizzare. Ad esempio, RDS di Amazon afferma di lavorare con tutti gli stessi comandi di MySQL e sostiene anche di essere una conversione facile.

Prima di arrivare a tutto ciò, consiglierei l'ottimizzazione, l'indicizzazione e la creazione di profili. Ho eseguito i siti PHP/MySQL basati su CMS con 1 milione + uniques al giorno senza bisogno di andare al cloud. Il codice è la chiave.

+0

Lanciare più hardware può ancora essere una soluzione eccellente. – TTT

+0

è un'ottima soluzione per l'incompetenza - d'accordo. –

Problemi correlati