2016-06-14 4 views
1

У меня есть сервер Apple MDM на python, и я пытаюсь преобразовать его из процесса командной строки в размещение с использованием Nginx и uWSGI. Я использую web.py для маршрутизации. Все работает гладко для большинства приложений. У меня есть то, что, по моему мнению, является хорошей базовой конфигурацией для Nginx и uWSGI, но сегодня утром после запуска менее чем за 24 часа я получаю эту ошибку при каждом запросе, который получает сервер. Там доступно много памяти, и я использую 64-битную версию python.MemoryError с использованием Nginx, uWSGI и web.py

EDIT1: SSL говорит о порте 8080, потому что перед ним маршрутизируется трафик SSL на этот порт.

EDIT2: Я изменил настройку процессов в uWSGI с 3 на 1, чтобы убедиться, что это проблема.

EDIT3: Это была свежая коробка от AWS. Установил мой сервер и его зависимости, nginx и uWSGI. У меня возникли проблемы с запуском uWSGI в качестве сервиса, а также были установлены и удалены версии aptitude и pip, прежде чем я в конце концов получил версию pip, запущенную с systemd. Вот как он работает сейчас, и он изящно останавливается, запускается и перезапускается.

[ 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 ] 

nginx.conf

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 ини

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 

Мне сказали, что у меня есть довольно плохой случай случайного SysAdmin Синдром, поэтому любая помощь и советы д. Просто для хорошей меры здесь выход 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-битная ОС и python, харакири включены. ULIMIT? –

+1

Я не знаком с ulimit, но я немного прочитал об этом и выполнил команду. Он возвратил 'unlimited'. Так что да, я не ограничил имеющиеся ресурсы или что-то еще. Добавление другого редактирования с более подробной информацией. –

+0

А, думаю, я понял. У вас нет 'max-запросов' в вашем uWSGI .ini. Таким образом, ваши переводчики-питоны живут вечно и могут накапливать мусор. Попробуйте настроить его на что-то, например. 5000 и, надеюсь, утечка остановится. –

ответ

1

Вы не max-requests набора в вашем uWSGI .ini. Таким образом, ваши переводчики-питоны живут вечно и могут накапливать мусор. Попробуйте настроить его на что-то, например. 5000 и, надеюсь, утечка остановится.

Если вы получите больше статистических результатов в будущем, и они опровергают версию max-requests, поделитесь им, пожалуйста. Удачи, Джеймс Фиттер.

Смежные вопросы