У меня есть сервер 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
Действительно таинственный. 64-битная ОС и python, харакири включены. ULIMIT? –
Я не знаком с ulimit, но я немного прочитал об этом и выполнил команду. Он возвратил 'unlimited'. Так что да, я не ограничил имеющиеся ресурсы или что-то еще. Добавление другого редактирования с более подробной информацией. –
А, думаю, я понял. У вас нет 'max-запросов' в вашем uWSGI .ini. Таким образом, ваши переводчики-питоны живут вечно и могут накапливать мусор. Попробуйте настроить его на что-то, например. 5000 и, надеюсь, утечка остановится. –