2016-06-14 6 views
1

私はPython Apple MDMサーバーを持っています。コマンドラインプロセスからNginxとuWSGIを使ってホストされるように変換しようとしています。私はルーティングのためにweb.pyを使用しています。すべてのことが円滑に実行されています。私はNginxとuWSGIの両方にとって良い基本設定と思われるものを持っていますが、今日の午前中は24時間以内に実行した後、サーバーが受信するすべてのリクエストでこのエラーが発生します。たくさんのメモリがあり、64ビット版のPythonを使っています。Nginx、uWSGI、web.pyを使ったMemoryError

EDIT1:SSLトラフィックをそのポートにルーティングするロードバランサがあるため、SSLはポート8080で話しています。

EDIT2:uWSGIのプロセス設定を3から1に変更して、それが問題かどうかを確認しました。

EDIT3:AWSの新鮮な箱です。私のサーバーとその依存関係、nginx、およびuWSGIをインストールしました。サービスとしてuWSGIを実行することに問題があり、最終的にsystemdを実行しているpipバージョンを取得する前に、​​とpipバージョンをインストールしてアンインストールしました。それが今実行されていて、正常に停止、開始、再起動しています。

home = /path/to/app/virtualenv/ 
chdir = /path/to/app/ 
module = server:application 
logto = /var/log/uwsgi/%n.log 
rlogdate = [ %%a %%b %%d %%Y %%H:%%M:%%S ] 
logformat = %(method) %(status) %(addr) %(uri) wid: %(wid) 
log-encoder = format ${strftime:[ %%a %%b %%d %%Y %%H:%%M:%%S ]} ${msgnl} 
gid = ubuntu 
uid = ubuntu 
vhost = false 
socket = 127.0.0.1:9000 
master = true 
processes = 3 
harakiri = 20 
limit-as = 128 
memory-report 
no-orphans 

のini

user www-data; 
worker_processes auto; 
pid /run/nginx.pid; 

events { 
     worker_connections 768; 
     # multi_accept on; 
} 

http { 

     ## 
     # Basic Settings 
     ## 

     sendfile on; 
     tcp_nopush on; 
     tcp_nodelay on; 
     keepalive_timeout 65; 
     types_hash_max_size 2048; 
     # server_tokens off; 

     # server_names_hash_bucket_size 64; 
     # server_name_in_redirect off; 

     include /etc/nginx/mime.types; 
     default_type application/octet-stream; 

     ## 
     # SSL Settings 
     ## 

     ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE 
     ssl_prefer_server_ciphers on; 

     ## 
     # Logging Settings 
     ## 

     access_log /var/log/nginx/access.log; 
     error_log /var/log/nginx/error.log; 

     ## 
     # Gzip Settings 
     ## 

     gzip on; 
     gzip_disable "msie6"; 

     # gzip_vary on; 
     # gzip_proxied any; 
     # gzip_comp_level 6; 
     # gzip_buffers 16 8k; 
     # gzip_http_version 1.1; 
     # gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; 

     ## 
     # Virtual Host Configs 
     ## 

     include /etc/nginx/conf.d/*.conf; 
     include /etc/nginx/sites-enabled/*; 
} 
#mail { 
#  # See sample authentication script at: 
#  # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript 
# 
#  # auth_http localhost/auth.php; 
#  # pop3_capabilities "TOP" "USER"; 
#  # imap_capabilities "IMAP4rev1" "UIDPLUS"; 
# 
#  server { 
#    listen  localhost:110; 
#    protocol pop3; 
#    proxy  on; 
#  } 
# 
#  server { 
#    listen  localhost:143; 
#    protocol imap; 
#    proxy  on; 
#  } 
#} 

サイト対応

server { 
    listen 80; 

    location ^~ /static/ { 
     root /path/to/app/; 
    } 

    location/{ 
     include uwsgi_params; 
     uwsgi_pass 127.0.0.1:9000; 
    } 
} 
server { 
    listen 8080; 

    ssl on; 
    ssl_certificate /path/to/app/certs/ssl.crt; 
    ssl_certificate_key /path/to/app/certs/ssl.key; 

    location ^~ /static/ { 
     root /path/to/app/static/; 
    } 

    location/{ 
     include uwsgi_params; 
     uwsgi_pass 127.0.0.1:9000; 
     uwsgi_param UWSGI_CHDIR /path/to/app/; 
     uwsgi_param UWSGI_PYHOME /path/to/app/virtualenv/; 
     uwsgi_param UWSGI_SCRIPT server; 
    } 
} 

uWSGI nginx.conf

[ Tue Jun 14 2016 10:29:22 ] Traceback (most recent call last): 
    File "/path/to/app/virtualenv/local/lib/python2.7/site-packages/web/application.py", line 237, in process 
    File "/path/to/app/virtualenv/local/lib/python2.7/site-packages/web/application.py", line 565, in processor 
    File "/path/to/app/virtualenv/local/lib/python2.7/site-packages/web/application.py", line 77, in reload_mapping 
MemoryError 
[ Tue Jun 14 2016 10:29:22 ] 
[ Tue Jun 14 2016 10:29:22 ] Traceback (most recent call last): 
    File "/path/to/app/virtualenv/local/lib/python2.7/site-packages/web/application.py", line 237, in process 
    File "/path/to/app/virtualenv/local/lib/python2.7/site-packages/web/application.py", line 566, in processor 
    File "/path/to/app/virtualenv/local/lib/python2.7/site-packages/web/application.py", line 237, in <lambda> 
    File "/path/to/app/virtualenv/local/lib/python2.7/site-packages/web/application.py", line 246, in process 
    File "/path/to/app/virtualenv/local/lib/python2.7/site-packages/web/application.py", line 477, in internalerror 
MemoryError 
[ Tue Jun 14 2016 10:29:22 ] 
[ Tue Jun 14 2016 10:29:22 ] Traceback (most recent call last): 
    File "/path/to/app/virtualenv/local/lib/python2.7/site-packages/web/application.py", line 237, in process 
    File "/path/to/app/virtualenv/local/lib/python2.7/site-packages/web/application.py", line 581, in processor 
    File "/path/to/app/virtualenv/local/lib/python2.7/site-packages/web/application.py", line 237, in <lambda> 
    File "/path/to/app/virtualenv/local/lib/python2.7/site-packages/web/application.py", line 246, in process 
    File "/path/to/app/virtualenv/local/lib/python2.7/site-packages/web/application.py", line 477, in internalerror 
MemoryError 
[ Tue Jun 14 2016 10:29:22 ] 
[ Tue Jun 14 2016 10:29:22 ] Traceback (most recent call last): 
    File "/path/to/app/virtualenv/local/lib/python2.7/site-packages/web/application.py", line 237, in process 
    File "/path/to/app/virtualenv/local/lib/python2.7/site-packages/web/application.py", line 566, in processor 
    File "/path/to/app/virtualenv/local/lib/python2.7/site-packages/web/application.py", line 237, in <lambda> 
    File "/path/to/app/virtualenv/local/lib/python2.7/site-packages/web/application.py", line 246, in process 
    File "/path/to/app/virtualenv/local/lib/python2.7/site-packages/web/application.py", line 477, in internalerror 
MemoryError 
[ Tue Jun 14 2016 10:29:22 ] 
[ Tue Jun 14 2016 10:29:22 ] Traceback (most recent call last): 
[ Tue Jun 14 2016 10:29:22 ] File "/path/to/app/virtualenv/local/lib/python2.7/site-packages/web/application.py", line 279, in wsgi 
[ Tue Jun 14 2016 10:29:22 ]  [ Tue Jun 14 2016 10:29:22 ] result = self.handle_with_processors() 
[ Tue Jun 14 2016 10:29:22 ] File "/path/to/app/virtualenv/local/lib/python2.7/site-packages/web/application.py", line 249, in handle_with_processors 
[ Tue Jun 14 2016 10:29:22 ]  [ Tue Jun 14 2016 10:29:22 ] return process(self.processors) 
[ Tue Jun 14 2016 10:29:22 ] File "/path/to/app/virtualenv/local/lib/python2.7/site-packages/web/application.py", line 246, in process 
[ Tue Jun 14 2016 10:29:22 ]  [ Tue Jun 14 2016 10:29:22 ] raise self.internalerror() 
[ Tue Jun 14 2016 10:29:22 ] File "/path/to/app/virtualenv/local/lib/python2.7/site-packages/web/application.py", line 477, in internalerror 
[ Tue Jun 14 2016 10:29:22 ]  [ Tue Jun 14 2016 10:29:22 ] import debugerror 
[ Tue Jun 14 2016 10:29:22 ] MemoryError[ Tue Jun 14 2016 10:29:22 ] 

私は偶然システム管理者のかなり悪いケースを持っていると言われてきましたシンドローム、ので、すべてのヘルプ/アドバイスはありがたいですd。ちょうど良い測定のためにここでは、あなたのuWSGIの.iniでmax-requests設定されていませんproc/meminfo

MemTotal:  7657772 kB 
MemFree:   5971508 kB 
MemAvailable: 7145084 kB 
Buffers:   225528 kB 
Cached:   900756 kB 
SwapCached:   0 kB 
Active:   1142912 kB 
Inactive:   358288 kB 
Active(anon):  380568 kB 
Inactive(anon): 11956 kB 
Active(file):  762344 kB 
Inactive(file): 346332 kB 
Unevictable:   0 kB 
Mlocked:    0 kB 
SwapTotal:    0 kB 
SwapFree:    0 kB 
Dirty:    48 kB 
Writeback:    0 kB 
AnonPages:  375008 kB 
Mapped:   55840 kB 
Shmem:    17616 kB 
Slab:    129300 kB 
SReclaimable:  106084 kB 
SUnreclaim:  23216 kB 
KernelStack:  3120 kB 
PageTables:   6672 kB 
NFS_Unstable:   0 kB 
Bounce:    0 kB 
WritebackTmp:   0 kB 
CommitLimit:  3828884 kB 
Committed_AS:  602572 kB 
VmallocTotal: 34359738367 kB 
VmallocUsed:   0 kB 
VmallocChunk:   0 kB 
HardwareCorrupted:  0 kB 
AnonHugePages: 143360 kB 
CmaTotal:    0 kB 
CmaFree:    0 kB 
HugePages_Total:  0 
HugePages_Free:  0 
HugePages_Rsvd:  0 
HugePages_Surp:  0 
Hugepagesize:  2048 kB 
DirectMap4k:  71680 kB 
DirectMap2M:  7923712 kB 
+0

本当に不思議です。 64ビットOSとpython、harakiriが有効になっています。 ulimit? –

+1

私はulimitに精通していませんが、少し読んでコマンドを実行しました。それは無制限に戻った。だから、私は利用可能なリソースや何かを制限していません。さらに関連性のある情報を少し追加した別の編集を追加する。 –

+0

ああ、私はそれを得たと思う。 uWSGI .iniに 'max-requests'が設定されていません。したがって、あなたのPythonインタプリタは永遠に生きていて、ゴミが溜まるかもしれません。それを何かに設定してみてください。うまくいけば、漏れは止まるでしょう。 –

答えて

1

の出力です。したがって、あなたのPythonインタプリタは永遠に生きていて、ゴミが溜まるかもしれません。それを何かに設定してみてください。うまくいけば、漏れは止まるでしょう。

今後さらに統計結果が得られ、max-requestsバージョンの反証がある場合は、それらを共有してください。幸運にも、James Fitterです。

関連する問題