пятница, 22 июля 2011 г.

Re: Nokogiri + 70Mb XML + 512RAM on Server

Как вариант: можно попробовать стандартные *nix-утилиты по управлению приоритетом процесса.

Например:

nice -n 20 some_very_intensive_cpu_using_process

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

--
С уважением,
Сергей Кузнецов.




2011/7/22 Igor Kasyanchuk <igorkasyanchuk@gmail.com>
это не то. у меня импорт делает скрипт по крону а не сам сайт по
нажатию кнопочки или линка.
вот как раз скрипт и занимал 50% памяти и начинались дикие очень дикие
тормоза (я даже хоум страницу не открыл).

On Jul 22, 12:59 pm, Ciur Eugen <ciur.eu...@gmail.com> wrote:
> >Мне впринципе не так уж важно будет ли скрипт работать
> >1 мин или 5 мин, главное что бы сайт работал.
>
> Eсть такая вещь как delayed job  или background job - любой таск которой
> занимает много времени отправляем в бэкграунд.http://railscasts.com/episodes?utf8=%E2%9C%93&search=background+tasks
> а еще есть такая классная вещь как:https://github.com/tra/spawn
> просто напишите
> spawn do
>   # some lenthy process
> end
> и все что внутри блока уйдет в бэкграунд как другой процесс.
>
> 2011/7/21 Igor Kasyanchuk <igorkasyanc...@gmail.com>
>
>
>
>
>
>
>
>
>
> > Подскажите как можно сделать следущее, есть файлик 70Мб (ХМЛ), и надо
> > его парсить и писать даные в базу (удаляя старые, ну или можно
> > обновлять, не знаю что быстрее будет). Но вот когда начинается процес
> > обработки xml сервер глохнет намертво, смотрю px aux а процес занял
> > 54% памяти, и сам сайт уже не отвечает. Скажите если ли другие решения
> > такой проблемы? Мне впринципе не так уж важно будет ли скрипт работать
> > 1 мин или 5 мин, главное что бы сайт работал. Спасибо
>
> >  doc = Nokogiri::XML(File.read("#{FILE_NAME}.xml"))
>
> >  doc.xpath("//forecast").each do |forecast|
> >    city_id = forecast.attributes["city"]
>
> >    next unless city_id
>
> >    city_id = city_id.to_s.to_i
>
> >    city = City.find_by_weather_city_id(city_id)
>
> >    next unless city
> >    city.weathers.except_today.delete_all
>
> > --
> > --
> > Данное сообщение отправлено Вам, так как Вы являетесь подписчиком группы
> > "RubyOnRails to russian" на группах Google.
> > FAQ группы находится по адресу:http://ru.wikibooks.org/wiki/RubyFAQ
>
> >  Для того, чтобы отправить сообщение в эту группу, пошлите его по адресу
> > ror2ru@googlegroups.com
> >  Чтобы отменить подписку на эту группу, отправьте сообщение по адресу:
> > ror2ru-unsubscribe@googlegroups.com
> >  Дополнительные варианты находятся на странице группы
> >http://groups.google.com/group/ror2ru?hl=ru
>
> --http://blog.eugen.co

--
--
Данное сообщение отправлено Вам, так как Вы являетесь подписчиком группы "RubyOnRails to russian" на группах Google.
FAQ группы находится по адресу: http://ru.wikibooks.org/wiki/RubyFAQ

 Для того, чтобы отправить сообщение в эту группу, пошлите его по адресу
ror2ru@googlegroups.com
 Чтобы отменить подписку на эту группу, отправьте сообщение по адресу: ror2ru-unsubscribe@googlegroups.com
 Дополнительные варианты находятся на странице группы http://groups.google.com/group/ror2ru?hl=ru

--
--
Данное сообщение отправлено Вам, так как Вы являетесь подписчиком группы "RubyOnRails to russian" на группах Google.
FAQ группы находится по адресу: http://ru.wikibooks.org/wiki/RubyFAQ
 
Для того, чтобы отправить сообщение в эту группу, пошлите его по адресу
ror2ru@googlegroups.com
Чтобы отменить подписку на эту группу, отправьте сообщение по адресу: ror2ru-unsubscribe@googlegroups.com
Дополнительные варианты находятся на странице группы http://groups.google.com/group/ror2ru?hl=ru

Комментариев нет:

Отправить комментарий