2015-07-17 3 views
2

Я использую Django для своего проекта, и я буду размещать его на Linode или любом другом хостинговом сервисе. Плюс, если я хочу использовать memcache, мне нужен новый Linode для этого? Значит, только один сервер будет в порядке, или мне придется разместить мой сайт на 2 серверах, один для memcache и один для django? И для Редиса это одно и то же? Также мне потребуется отдельный сервер для Mysql?Отдельный сервер для Memcache/Redis?

+0

memcached/redis может находиться на одной машине или на отдельной машине. Это действительно зависит от вашего варианта использования. Если у вас есть приложение с небольшой базой пользователей и только один экземпляр linode, то memcache и ваша база данных могут находиться на одной машине. Если вы масштабируете, чтобы иметь несколько экземпляров Linang Linode, загружаемых балансировщиком нагрузки, тогда вам нужно решить, хотите ли вы, чтобы каждый экземпляр имел свой собственный локальный memcache или все совместно использовали выделенный memcache, и ваша база данных, скорее всего, будет на собственной машине также. –

+0

@MarkGalloway: Скажем, если кто-то использует memcache и MySQL вместе с django, то это один экземпляр Linode? Может ли он размещаться на одной машине? Нет необходимости в MySQL и сервере Memcache? –

+0

Это полностью зависит от того, сколько доступа к вашему приложению получает и насколько ресурсоемкий каждый запрос. К сожалению, единственный ответ - профилирование. –

ответ

3

Я не думаю, что вы понимаете, что никому не грозит волшебник. Никто не знает, сколько запросов вы будете получать в секунду, а также то, как будет работать процессор/память каждый запрос. Никто не знает, как оптимизирован ваш код. Никто не знает, прочитано ли ваше приложение тяжелым или тяжелым. Ваш вариант использования - ваш собственный, и ваш, вероятно, единственный, кто его оценивает.

Мой единственный фактический совет - попытаться оценить данные вашего сервера и разорвать нагрузку и сравнить свои настройки на одной машине. Если вы неудовлетворены тем, что производительность повышается. Вы можете масштабировать вертикально, увеличивая размер вашего linode или масштабируя по горизонтали, добавляя больше экземпляров linode. В последнем случае вы, скорее всего, поместите свою БД на свою собственную машину и будете иметь несколько экземпляров django, питаемых балансировщиком нагрузки. Эти экземпляры Django могут использовать один и тот же memcache на машине, или каждый из них может иметь свои собственные memcaches на своей собственной машине. Какая из них лучше? Я не могу вам сказать. Это снова зависит от вашего варианта использования.

Если бы я был вами, я бы поставил все на один экземпляр linode. Я бы создал тестовые данные, которые, как я полагаю, будут близки к реальному миру. Затем я попытался бы проверить время ответа с предполагаемым количеством запросов в секунду. Я бы измерил время отклика, кеш-хиты и использование памяти. Тогда я решил бы на основании этого, если мой вариант использования удовлетворен этим уровнем производительности или нет, потому что я действительно единственный, кто знал бы, что является удовлетворительной производительностью. Кроме того, добавление большего количества ресурсов linode не обязательно, где я сначала попытаюсь и повышу производительность.

Некоторые большие советы по оптимизации и сравнительного анализа можно найти здесь: https://docs.djangoproject.com/en/1.8/topics/performance/ http://blog.disqus.com/post/62187806135/scaling-django-to-8-billion-page-views http://scottbarnham.com/blog/2008/04/28/django-performance-testing-a-real-world-example/

Поздно ночью читать о расширении Django можно найти во многих книгах, мне нравится это одно: https://highperformancedjango.com/

Извините, если я говорю немного тупо, я просто хочу, чтобы вы поняли, что здесь никто не может ходить и дать вам ответ с большой степенью уверенности. Этот вопрос не имеет прямого ответа.

TL; DR Начните с одного экземпляра и увеличьте масштаб, только если вы убедились, что вам нужно.

+1

Спасибо! Упросила сомнения! –

3

Вы говорите Memcached или Redis, поэтому я предполагаю, что Redis будет развернут без настойчивости с чисто конфигурацией в памяти.

В таком случае, как Memcached, так и Redis вряд ли будут насыщены, даже если вы запускаете их на одном сервере, поскольку ограничивающий фактор, скорее всего, будет единственным экземпляром Django, если ваши запросы/секунды будут высокими.

Однако вы должны убедиться, что у вас достаточно памяти и для настройки максимального использования памяти для Memcached/Redis (различные способы выполнения этого в двух разных сервисах). Обратите внимание, что под давлением памяти Linux OOM killer может убить ваш кеш в противном случае, поэтому, если вы идете для одного экземпляра, который кажется мне разумным первым шагом, убедитесь, что ваше использование памяти Django плюс память, которую вы выделяете для кеширования, недостаточно, чтобы приблизиться к границам свободной памяти экземпляра.

CPU вряд ли будет проблемой, как я сказал, так как Memcached/Redis неплохо используют небольшой процессор, поэтому я не могу предусмотреть установку, где Django в порядке обслуживает страницы, но экземпляр находится в неисправности, поскольку процессор сжигается кешем.

+0

Хорошо! Значит, одного экземпляра будет достаточно для меньшей нагрузки? –