Gram z Heroku, aby przetestować, jak dobry jest dla aplikacji Django.

Stworzyłem prosty projekt z dwoma działaniami:

  1. Wróć prosty świat Hello
  2. Wygeneruj obraz i wyślij go jako odpowiedź

Użyłem siege -c10 -t30s, aby przetestować zarówno serwer Django DEV, jak i Gunikorn (oboje uruchomione na Heroku). To są moje wyniki:

Simple Hello World
- Django Dev.

Lifting the server siege...      done.
Transactions:                376 hits
Availability:             100.00 %
Elapsed time:              29.75 secs
Data transferred:           0.00 MB
Response time:              0.29 secs
Transaction rate:          12.64 trans/sec
Throughput:             0.00 MB/sec
Concurrency:                3.65
Successful transactions:         376
Failed transactions:               0
Longest transaction:            0.50
Shortest transaction:           0.26

- Gunikorn.

Lifting the server siege...      done.
Transactions:                357 hits
Availability:             100.00 %
Elapsed time:              29.27 secs
Data transferred:           0.00 MB
Response time:              0.27 secs
Transaction rate:          12.20 trans/sec
Throughput:             0.00 MB/sec
Concurrency:                3.34
Successful transactions:         357
Failed transactions:               0
Longest transaction:            0.34
Shortest transaction:           0.26

Generowanie obrazów
- Django Dev.

Lifting the server siege...      done.
Transactions:                144 hits
Availability:             100.00 %
Elapsed time:              29.91 secs
Data transferred:           0.15 MB
Response time:              1.52 secs
Transaction rate:           4.81 trans/sec
Throughput:             0.01 MB/sec
Concurrency:                7.32
Successful transactions:         144
Failed transactions:               0
Longest transaction:            4.14
Shortest transaction:           1.13

- Gunikorn.

Lifting the server siege...      done.
Transactions:                 31 hits
Availability:             100.00 %
Elapsed time:              29.42 secs
Data transferred:           0.05 MB
Response time:              7.39 secs
Transaction rate:           1.05 trans/sec
Throughput:             0.00 MB/sec
Concurrency:                7.78
Successful transactions:          31
Failed transactions:               0
Longest transaction:            9.13
Shortest transaction:           1.19

Użyłem
. - Django 1.4
- Gunikorn 0.14.6
- VENV.

Dlaczego Gunicorn jest tak wolny?

// Aktualizacja
. Oba testy działały w środowisku Heroku Serwer DEV oznacza standardowy serwer Django - może być pobiegany przez python manage.py runserver Jest opisany przez python manage.py runserver Jest opisany Tutaj .

2
mrok 30 lipiec 2012, 03:32

3 odpowiedzi

Najlepsza odpowiedź

Są te same? Serwer Django 1.4 DEV jest domyślnie wielowarstwowy i jest tylko 1 pracownik synchronizacji w domyślnej konfiguracji Gunicorn.

4
Mikhail Korobov 30 lipiec 2012, 11:09

Będziesz musiał skonfigurować Profilowanie aplikacji, aby uzyskać jakiś wgląd w miejsce, gdzie dokładnie Problem jest zlokalizowany.

1
jamieb 30 lipiec 2012, 00:02

Może prędkość twojego połączenia internetowego jest wąskie gardło? Pobieranie danych z Heroku jest oczywiście wolniejsze niż przemieszczanie go przez Localhost (Assume Django Dev Server jest uruchomiony w Localhost). Może to wyjaśnić, dlaczego benchmarki z małymi odpowiedziami (hojnicze) są równie szybkie i benchmarki z dużymi reakcjami (obrazy) są powoli dla Heroku.

1
Mikhail Korobov 30 lipiec 2012, 00:56