Python / Django - производительность веб-приложений - PullRequest
0 голосов
/ 10 сентября 2011

В настоящее время я работаю над социальным веб-приложением, использующим python / django.Недавно я услышал о слабости PHP в крупных проектах и ​​о том, как hippo-php помог Facebook преодолеть этот барьер.Рассматривая социальное веб-приложение на Python с большим объемом использования, не могли бы вы сказать, может ли подобный пользовательский инструмент помочь этому приложению Python?В каком смысле?Я имею в виду, какая часть (или слой) приложения должна быть написана, например, в C ++?Я знаю, что это общий вопрос, но я думаю, что кто-то с соответствующим опытом мог бы помочь мне.

Заранее спасибо.

Ответы [ 3 ]

3 голосов
/ 10 сентября 2011

Часть для перезаписи в C ++ - это часть, которая слишком медленная в Python.Вам нужно выяснить, где находится ваше узкое место, что вы можете сделать путем нагрузочного тестирования или просто подождать, пока пользователи не пожалуются.

Конечно, даже переписывание на C ++ может не помочь.Узким местом может быть база данных (перенести на отдельный, более быстрый сервер БД или использовать шардинг) или диск, или память, или что-то еще.Найти узкое место, разобраться, как устранить узкое место, внедрить.С «тестом» между всеми этими фазами.Общий совет.

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

1 голос
/ 11 сентября 2011

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

Запустите веб-приложение и посмотрите, какэто происходит (согласен с Spacedman здесь).

Хотя, по моему опыту, язык вашего веб-приложения вряд ли станет узким местом.Большую часть времени он начинается с базы данных.Много раз это просто неправильная строка кода (будь это просто цикл for), а во многих других случаях это что-то вроде забвения использования sth.как memcached или управление задачами.Как сказано, узнай где это.В большинстве случаев лучше проверить что-то еще, прежде чем винить в этом скорость языка (поскольку, скорее всего, это не проблема!).

1 голос
/ 11 сентября 2011

Вы можете думать о PostgreSQL как о Oracle, так что из того, что я нашел в Интернете (потому что я тоже новичок), здесь есть порядок БД от небольших проектов до самых больших:

  1. SQLite
  2. MySql
  3. PostgreSQL
  4. Oracle
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...