LINUX.ORG.RU

[config] django-fcgi

 


0

1

У меня теоретический вопрос.

Сервера на Linux(debian'ы в основном), nginx, django отдается через fcgi. Всегда настраивал работу fcgi через socket.

Тут пришел на новую работу, а у них настроено через port.

Вопрос: какая разница? В теории(киньте в меня котким мануальчиком) и на практике(стоит ли тратить время на перенастройку - хостов не мало)?

Ссылка на офф мануал: http://docs.djangoproject.com/en/1.2/howto/deployment/fastcgi/#examples

По идее никакой разницы. С портами зато можно Load Balancing в nginx'e несколькоми строчками в конфиге сделать.
p.s. На openvz с использованием портов - у меня джанга и постгрес валились с «No buffer space available».

pi11 ★★★★★
()
Ответ на: комментарий от anonymous

пфф. тебя дезинформировали

anonymous
()
Ответ на: комментарий от anonymous

>что что?

Не распарсил. Слова, вроде, русские, но...

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

>Даже сотню объектов в секунду отдать, НЯЗ, уже искусство.

В джанго много магии, поэтому даже на простой казалось бы странице может вылезти сотня запросов. Иногда приходится смотреть, что там наколдавал джанго и оптимизировать запросы/базу. А сам джанго довольно быстр. Тесты можно нагуглить.

pi11 ★★★★★
()
Ответ на: комментарий от pi11

>А сам джанго довольно быстр. Тесты можно нагуглить.

Так я по ним и гуглил :) 100-300 запросов в секунду, в зависимости от сложности и машины - максимум.

Или где-то есть лучшие результаты? :)

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

300 это для тебя мало? у тебя пол ляма запросов в сутки? или это такая отчаянная попытка оправдать свои array ?

anonymous
()

> Вопрос: какая разница?

Сокет быстрее, но работает в пределах одного хоста. //КО

стоит ли тратить время на перенастройку

Нет. На фоне тормозов джанги, разницы не заметишь. Даже измерить не получится — настолько она мала.

redixin ★★★★
()
Ответ на: комментарий от KRoN73

Не перестаю тебе удивляться. Ну клоун какой-то. Иногда как выдашь какую-то чушь - хоть стой хоть падай.

anonymous
()
Ответ на: комментарий от anonymous

Да Анонимный Брат, у крона депрессия сезонная просто. Я вывел статистику - примерно раз в два месяца у него разжижение мозга обостряется.

anonymous
()
Ответ на: комментарий от anonymous

>300 это для тебя мало?

Для того, чтобы разница между портами и сокетами стала заметной - мало. Посмотри внимательно ход этой подветки :)

KRoN73 ★★★★★
()
Ответ на: комментарий от Lucky

2007 год?

Я не против более новые тесты увидеть.

а джанга действительно - тормоз.

Пруфы будут?

Вот сейчас для интереса на джанго 1.2.3 на сервере попробовал -

ab -c5 -n 1000 http://domain/ На странице где нет обращений к базе -

Document Length:        1186 bytes

Concurrency Level:      5
Time taken for tests:   1.057 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Total transferred:      1346000 bytes
HTML transferred:       1186000 bytes
Requests per second:    946.14 [#/sec] (mean)
Time per request:       5.285 [ms] (mean)
Time per request:       1.057 [ms] (mean, across all concurrent requests)
Transfer rate:          1243.65 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.0      0       1
Processing:     3    5   5.5      5      94
Waiting:        3    5   5.2      5      94
Total:          3    5   5.5      5      94

Percentage of the requests served within a certain time (ms)
  50%      5
  66%      5
  75%      5
  80%      5
  90%      6
  95%      6
  98%      8
  99%     10
 100%     94 (longest request)

900 запросов в секунду мне вполне хватает, ни разу не натыкался именно на тормоза джанги. Обычно все упирается в базу, сеть, веб-сервер. Но не в сам фрэймворк.

pi11 ★★★★★
()
Ответ на: комментарий от pi11

а зачем нужна django без базы? db.models - уже сам по себе тормоз, шаблонный движок - аналогичен.

голый Werkzeug отдает вашей ab дефолтную джанговскую html'ку за 1185.76 [#/sec] (mean), супротив самой джанги, которая это делает 762.22 [#/sec] (mean):

from werkzeug.wrappers import Request, Response

@Request.application
def application(request):
    with open('index.html') as f:
        return Response(f.read())

if __name__ == '__main__':
    from werkzeug.serving import run_simple
    run_simple('localhost', 4000, application)

Lucky ★★
()
Ответ на: комментарий от Lucky

>голый Werkzeug отдает вашей ab дефолтную джанговскую html'ку за 1185.76 [#/sec] (mean), супротив самой джанги, которая это делает 762.22 [#/sec] (mean):

Я тест запускал на вьюхе которая обрабатывала простенький шаблон, а не просто файл выводила.

а зачем нужна django без базы? db.models - уже сам по себе тормоз, шаблонный движок - аналогичен.


Не хочу углублятся в холивары рода джанга vs легкие фрэймворки. Конечно она тяжелее Werkzeug или flask'a, и других легких фрэймворков.
При выборе решения под конкретную задачу, одно из последнего на что я бы стал смотреть - это скорость самого фрэймворка. Но если интересно давай сделаем какое нибудь тестовое простое приложение с использованием Werkzeug и Django и сравним. Чтобы с шаблонами и базой.

pi11 ★★★★★
()
Ответ на: комментарий от pi11

Конечно она тяжелее Werkzeug или flask'a, и других легких фрэймворков. При выборе решения под конкретную задачу...

Джанга необоснованно тяжелее. В ней куча весьма дремучего ravioli code, написанного в жанре серии скетч-пародий на ООП (вот из последнего - http://docs.djangoproject.com/en/dev/ref/class-based-views/ ).

Вариант с zpt шаблоном, сделанным на основе того же самого джанговского http://code.djangoproject.com/browser/django/trunk/django/views/debug.py#L843 :

from chameleon.zpt.loader import TemplateLoader
from werkzeug.wrappers import Request, Response

loader = TemplateLoader(['.'], auto_reload=True)

def render(template, data):
    return loader.load(template)(**data)

@Request.application
def application(request):
    result = render('empty.html', {'project_name':'example'})
    return Response(result, content_type="text/html; charset=utf-8")

if __name__ == '__main__':
    from werkzeug.serving import run_simple
    run_simple('localhost', 4000, application)


$ ab -c5 -n 1000 http://localhost:4000/
..
Document Length:        2114 bytes

Concurrency Level:      5
Time taken for tests:   0.738 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Total transferred:      2269000 bytes
HTML transferred:       2114000 bytes
Requests per second:    1355.09 [#/sec] (mean)
Time per request:       3.690 [ms] (mean)
Time per request:       0.738 [ms] (mean, across all concurrent requests)
Transfer rate:          3002.64 [Kbytes/sec] received
как видно работает даже быстрее, чем предыдущий ^)

Lucky ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.