Как сделать JSDOM более ресурсосберегающим - PullRequest
0 голосов
/ 10 января 2012

Я использую мои сценарии node.js и jsdom getratings.js из проекта getratings github для очистки отзывов пользователей с таких сайтов, как NewEgg, BestBuy и т. Д.

Сценарий размещен на микроэкземпляре EC2.Он работает нормально до тех пор, пока к услуге не будет отправлено более 12 одновременных запросов.Кроме того, использование ресурсов и памяти на хосте очень велико, и ответ клиенту занимает вечность.

Я пытался устранить утечки памяти.После завершения обработки запросов использование памяти в конечном итоге уменьшается, но пики использования очень высоки.

Мне было интересно, можно ли что-нибудь сделать, чтобы сделать обработку html через jsdom более эффективной всроки использования ресурсов.

Ответы [ 2 ]

1 голос
/ 05 июля 2012

Ответ Пола очень полезен для расширения с помощью узла, но я думаю, что в этом виноват Amazon EC2.Микроэкземпляр блокируется после определенного (небольшого) количества разгрузки процессора.Смотри: http://docs.amazonwebservices.com/AWSEC2/latest/UserGuide/concepts_micro_instances.html

0 голосов
/ 25 апреля 2012

Возможно, вы захотите выполнить ручную очистку от мусора, если посмотрите на этот сайт. Он дает общий способ сделать это.

Мое предложение будет убирать после каждого запроса. Но, возможно, это может быть слишком много. Вы также можете увеличить количество сокетов, которые могут быть созданы вашей машиной. Опять же, код находится на сайте, указанном ниже. Я выложу основы, которые я взял из его статьи.

http://dev.caustik.com/websvn/filedetails.php?repname=sprites&path=%2Fsprites-server%2Ftrunk%2Freadme.txt

you need to increase ulimit to handle more than ~1024 connections:

ulimit -n 1048576

You also need to run node using this command line:

node --trace-gc --expose-gc --nouse-idle-notification sprites.js

Вам нужно будет вызвать функцию gc () для сбора мусора после этого.

...