2010-10-18 4 views
5

У нас есть веб-сайт, разработанный на PHP с MySQL и иногда сталкивающийся с проблемами при увеличении трафика. Мы почти оптимизировали сайт во всех отношениях, чтобы обрабатывать больше запросов, но все еще сталкивающихся с проблемами в часы пик.Должен ли я перестроить свой PHP-сайт с помощью базы данных документов, чтобы повысить производительность?

Один из моих друзей предлагает перестроить сайт, используя HBase/MongoDB в качестве back-end, чтобы улучшить производительность. Также он предполагает, что если мы его перестроим, мы сможем легко перейти на облачные сервисы. Но нам нужно изучить всю вещь и перестроить ее.

Лучше ли это сделать?

+2

Любой, кто предлагает что-либо, кроме профилирования, не имеет понятия. Избегайте таких «консультантов» любой ценой. Вы прокомментировали свой сайт? На каком сервере он работает? –

+0

Мы не просматривали мой сайт до сих пор. Мы просто следовали советам по оптимизации. Пожалуйста, предложите мне инструменты для профиля. – Chris

+0

, когда вы говорите, что трафик увеличивается - можете ли вы быть более конкретным? –

ответ

5

Первое, что нужно сделать, это профилировать ваше веб-приложение, чтобы определить, что такое узкое место.

Если это определенно запросов к базе данных, а затем заменить MySQL с MongoDB может быть хорошей идеей, но базы данных документов работают по-разному в реляционные, и могут возникнуть проблемы портирования некоторых типов функциональных возможностей. Если вы решите попробовать монго, прототип рано и часто, потому что нет гаруанти, это будет быстрее для вас.

Если масштабируемость действительно является проблемой для вас, то почему бы не перейти прямо в облачную веб-архитектуру, такую ​​как движок Google. Это java или python и база данных документов (bigtable), но с самого начала заставляет вас использовать масштабируемую «облачную» архитектуру.

Другой вариант - просто ввести (или оптимизировать) кэширование (с помощью memcache) - это будет иметь меньшее архитектурное влияние на ваше приложение, поэтому приложите меньше усилий.

+0

Мы используем LAMP. До сих пор мы не просматривали мой сайт. Мы просто следовали советам по оптимизации. Пожалуйста, предложите мне инструменты для профиля. – Chris

+0

Я на самом деле не пытался профилировать любые системы LAMP раньше, может быть, задать другой вопрос о переполнении стека? Вам, вероятно, понадобятся разные инструменты для apache, mysql, центрального процессора сервера, сетевого доступа к серверу и т. Д. –

+0

И в зависимости от того, что вы подразумеваете под «проблемами», возможно, вам нужно также профилировать из браузера, например, с помощью firebug. +1 to col shrapnel –

0

Есть также простые возможности масштабирования MySql. Вернемся в «темные дни», мы просто переместили выделенное оборудование в БД как первый шаг, а в последнее время стало возможным кластеризация. Существуют также облачные решения, основанные на MySQL, которые вы могли бы использовать. Например, RDS от Amazon утверждает, что работает со всеми теми же командами, что и MySQL, и также утверждает, что это простое преобразование.

Прежде чем перейти ко всему этому, я бы рекомендовал оптимизировать, индексировать и профилировать. Я запустил сайты на базе PHP/MySQL CMS с 1 миллионом + уникальными в день, без необходимости идти в облако. Код - это ключ.

+0

Бросать больше оборудования все еще может быть прекрасным решением. – TTT

+0

это отличное решение для некомпетентности - согласовано. –