2010-10-18 25 views
5

Nous avons un site web développé en PHP avec MySQL et parfois confronté à des problèmes lorsque le trafic augmente. Nous avons presque optimisé le site de toutes les manières pour traiter plus de demandes mais toujours faire face aux problèmes aux heures de pointe.Dois-je reconstruire mon site Web PHP avec une base de documents afin d'améliorer les performances?

Un de mes amis suggère de reconstruire le site en utilisant HBase/MongoDB comme back-end pour améliorer les performances. Il suggère également que si nous le reconstruisons, nous pouvons facilement passer aux services de cloud computing. Mais nous devons apprendre tout et le redévelopper.

Est-ce une meilleure idée de le faire?

+2

Quiconque suggère autre chose que le profilage n'a aucune idée. Évitez ces «conseillers» à tout prix. Avez-vous profilé votre site? Quel type de serveur fonctionne-t-il? –

+0

Nous n'avons pas profilé mon site jusqu'à présent. Nous avons juste suivi quelques conseils d'optimisation. S'il vous plaît me suggérer les outils pour profiler. – Chris

+0

quand vous dites que le trafic augmente - pouvez-vous être plus précis? –

Répondre

5

La première chose à faire est de profiler votre application Web pour déterminer le goulot d'étranglement.

Si c'est interroge certainement à la base de données, puis en remplaçant MySQL avec MongoDB pourrait être une bonne idée, mais les bases de données de documents travailler d'une manière différente de celles relationnelles, et vous pourriez avoir du mal à le portage de certains types de fonctionnalité. Si vous décidez d'essayer mongo, prototype tôt et souvent, car il n'y a pas de garantie, ce sera plus rapide pour vous.

Si l'évolutivité est vraiment un problème pour vous, alors pourquoi ne pas vous lancer directement dans une architecture Web basée sur le cloud comme google app engine. Il s'agit d'une base de données java ou python et document (bigtable), mais vous force dès le début à adopter une architecture «cloud» évolutive.

Une autre option consiste simplement à introduire (ou optimiser) la mise en cache (avec memcache) - cela aura moins d'effet architectural sur votre application, donc moins d'effort.

+0

Nous utilisons LAMP. Nous n'avons pas profilé mon site jusqu'à présent. Nous avons juste suivi quelques conseils d'optimisation. S'il vous plaît me suggérer les outils pour profiler. – Chris

+0

Je n'ai pas essayé de profiler un système LAMP auparavant, peut-être poser une autre question sur le débordement de la pile? Vous aurez probablement besoin de différents outils pour apache, mysql, le processeur du serveur, l'accès au réseau du serveur, etc. –

+0

Et selon ce que vous entendez par "problèmes", vous devrez peut-être profiler depuis un navigateur, comme avec firebug. +1 to col shrapnel –

0

Il existe également des options d'évolutivité MySQL simples. De retour dans les «jours sombres», nous venons de jeter le matériel dédié à la DB comme première étape, plus récemment, le regroupement est devenu possible. Il existe également des solutions de type cloud basées sur MySQL que vous pouvez utiliser. Par exemple, RDS d'Amazon prétend travailler avec toutes les mêmes commandes que MySQL et prétend également être une conversion facile.

Avant d'aller plus loin, je recommanderais l'optimisation, l'indexation et le profilage. J'ai couru des sites basés sur CMS/MySQL CMS avec 1 million de + uniques par jour sans avoir besoin d'aller dans le cloud. Le code est la clé.

+0

Lancer plus de matériel peut toujours être une bonne solution. – TTT

+0

c'est une excellente solution pour l'incompétence - d'accord. –