6

私は、主にhtml + staticコンテンツをdb操作なしで提供する非常に小さなdjangoアプリを試してみました。アプリはnginxとuwsgiにあります。postgres もインストールしましたが、この問題については、DB 操作を実行しませんでした。

uwsgi プロセスによってメモリが解放されていないことがわかりました。newrelic のこのグラフでは、uwsgi プロセスが占有するメモリが ~100MB で停滞していることがわかりますが、停滞している間、ウェブサイト/アプリでのアクティビティはまったくありませんでした。

参考までに: app/uwsgi プロセスは、開始時に 56MB しか消費しませんでした。ab(apache ベンチマーク) でテストしていたときに、この ~100MB に達し、-n 1000 -c 10 またはその範囲でヒットしていました。

ここに画像の説明を入力

Nginx Conf

server 
{
      listen        80;
      server_name   <ip_address>;

      root        /var/www/mywebsite.com/;
      access_log  /var/www/logs/nginx_access.log;
      error_log   /var/www/logs/nginx_error.log;

      charset             utf-8;
      default_type        application/octet-stream;
      tcp_nodelay         off;
      gzip                on;

      location /static/ 
      {
        alias /var/www/mywebsite.com/static/;
        expires 30d;
        access_log off;
      }

      location / 
      {
          include uwsgi_params;
          uwsgi_pass unix:/var/www/mywebsite.com/django.sock;
      }
}

app_uwsgi.ini

[uwsgi]
plugins = python

; define variables to use in this script
project = myapp
base_dir = /var/www/mywebsite.com
app=reloc
uid = www-data
gid = www-data

; process name for easy identification in top
procname = %(project)

no-orphans = true
vacuum = true
master = true
harakiri = 30
processes = 2

processes = 2
pythonpath = %(base_dir)/
pythonpath = %(base_dir)/src
pythonpath = %(base_dir)/src/%(project)

logto = /var/www/logs/uwsgi.log
chdir = %(base_dir)/src/%(project)
module = reloc.wsgi:application

socket = /var/www/mywebsite.com/django.sock
chmod-socket = 666
chown-socket = www-data

更新 1: uwsgi ではなく、処理を高速化するために特定のデータ構造を保持する python プロセスのようです。

4

2 に答える 2