2016-01-16 3 views
0

У меня проблема с OpenShift. В настоящее время я пытаюсь добавить django_geoip в мое приложение django. Однако, когда я пытаюсь инициализировать свою базу данных, OpenShift убивает ее. Я думаю, что нужно слишком много памяти.
Если я запускаю код обновления ./manage.py geoip_update (я также попытался запустить с поЬирами), это выход:Как запустить код, который требует слишком много ОЗУ на OpenShift?

Downloading zipfile from ipgeobase.ru... 
INFO:import:Downloading zipfile from ipgeobase.ru... 
Extracting files... 
INFO:import:Extracting files... 
Updating locations... 
INFO:import:Updating locations... 
Updating CIDR... 
INFO:import:Updating CIDR... 
61% 

После 61% от CIDR обновления он выходит из строя. Если я следую за журнал или я вошел через SSH, он disconects меня:

/var/lib/gems/1.9.1/gems/net-ssh-2.9.2/lib/net/ssh/ruby_compat.rb:30:in `select': closed stream (IOError) 
from /var/lib/gems/1.9.1/gems/net-ssh-2.9.2/lib/net/ssh/ruby_compat.rb:30:in `io_select' 
from /var/lib/gems/1.9.1/gems/net-ssh-2.9.2/lib/net/ssh/transport/packet_stream.rb:75:in `available_for_read?' 
from /var/lib/gems/1.9.1/gems/net-ssh-2.9.2/lib/net/ssh/transport/packet_stream.rb:87:in `next_packet' 
from /var/lib/gems/1.9.1/gems/net-ssh-2.9.2/lib/net/ssh/transport/session.rb:183:in `block in poll_message' 
from /var/lib/gems/1.9.1/gems/net-ssh-2.9.2/lib/net/ssh/transport/session.rb:178:in `loop' 
from /var/lib/gems/1.9.1/gems/net-ssh-2.9.2/lib/net/ssh/transport/session.rb:178:in `poll_message' 
from /var/lib/gems/1.9.1/gems/net-ssh-2.9.2/lib/net/ssh/connection/session.rb:461:in `dispatch_incoming_packets' 
from /var/lib/gems/1.9.1/gems/net-ssh-2.9.2/lib/net/ssh/connection/session.rb:222:in `preprocess' 
from /var/lib/gems/1.9.1/gems/net-ssh-2.9.2/lib/net/ssh/connection/session.rb:206:in `process' 
from /var/lib/gems/1.9.1/gems/net-ssh-2.9.2/lib/net/ssh/connection/session.rb:170:in `block in loop' 
from /var/lib/gems/1.9.1/gems/net-ssh-2.9.2/lib/net/ssh/connection/session.rb:170:in `loop' 
from /var/lib/gems/1.9.1/gems/net-ssh-2.9.2/lib/net/ssh/connection/session.rb:170:in `loop' 
from /var/lib/gems/1.9.1/gems/rhc-1.36.4/lib/rhc/ssh_helpers.rb:198:in `block in ssh_ruby' 
from /var/lib/gems/1.9.1/gems/net-ssh-2.9.2/lib/net/ssh.rb:215:in `start' 
from /var/lib/gems/1.9.1/gems/rhc-1.36.4/lib/rhc/ssh_helpers.rb:173:in `ssh_ruby' 
from /var/lib/gems/1.9.1/gems/rhc-1.36.4/lib/rhc/commands/tail.rb:40:in `tail' 
from /var/lib/gems/1.9.1/gems/rhc-1.36.4/lib/rhc/commands/tail.rb:21:in `run' 
from /var/lib/gems/1.9.1/gems/rhc-1.36.4/lib/rhc/commands.rb:294:in `execute' 
from /var/lib/gems/1.9.1/gems/rhc-1.36.4/lib/rhc/commands.rb:285:in `block (3 levels) in to_commander' 
from /var/lib/gems/1.9.1/gems/commander-4.2.1/lib/commander/command.rb:180:in `call' 
from /var/lib/gems/1.9.1/gems/commander-4.2.1/lib/commander/command.rb:180:in `call' 
from /var/lib/gems/1.9.1/gems/commander-4.2.1/lib/commander/command.rb:155:in `run' 
from /var/lib/gems/1.9.1/gems/commander-4.2.1/lib/commander/runner.rb:421:in `run_active_command' 
from /var/lib/gems/1.9.1/gems/rhc-1.36.4/lib/rhc/command_runner.rb:72:in `run!' 
from /var/lib/gems/1.9.1/gems/commander-4.2.1/lib/commander/delegates.rb:12:in `run!' 
from /var/lib/gems/1.9.1/gems/rhc-1.36.4/lib/rhc/cli.rb:37:in `start' 
from /var/lib/gems/1.9.1/gems/rhc-1.36.4/bin/rhc:20:in `<top (required)>' 
from /usr/local/bin/rhc:23:in `load' 
from /usr/local/bin/rhc:23:in `<main>' 

Я только предполагаю, что это было тяжелое использование памяти. Я попытался очистить мою базу данных и удалил файлы журнала, чтобы я был уверен, что это не проблема с пропускной способностью (превышена дисковая квота).
Мой вопрос: Как запустить эту команду, чтобы она работала? Могу ли я как-то ограничить необходимые ресурсы?

ответ

0

Ну, я узнал, что это было вызвано созданием geoip, создающим таблицу django_geoip_iprange, которая имеет около ~ 218 000 записей. Geoip, вероятно, загружает все эти ips в память, а затем сохраняет их в базе данных. Мне удалось импортировать таблицу django_geoip_iprange с localhost, поэтому django_geoip должен быть полностью функциональным.
Кроме того, я должен иметь возможность использовать ulimit, чтобы ограничить ресурсы. Пока не тестировал.