cron периодичность и объем работы - PullRequest
0 голосов
/ 25 июля 2011

Я работаю над проектом блога агрегации.Одной из основных задач является получение RSS-каналов блогов и их обработка.В настоящее время у меня около 500 блогов, но их количество будет со временем неуклонно увеличиваться (скоро должно достигнуть тысяч).

В настоящее время (все еще бета-версия) у меня есть cron, которая периодически получает все RSS-каналы один раз в день,Но при этом вся обработка и сетевой ввод-вывод включаются только один раз в день.

Должен ли я:

  1. Сохранить текущую ситуацию (все сразу)
  2. Производить почасовую выборкуof number_of_blogs / 24 (постоянное время выполнения задания cron)
  3. Измените периодичность cron, чтобы сделать постоянное число RSS-загрузок (10 блогов за меньшее время)

или есть другие идеи?

Я нахожусь на виртуальном хостинге, поэтому я очень благодарен за снижение загрузки ЦП и сети :)

Ответы [ 3 ]

2 голосов
/ 26 июля 2011

Я использовал систему, которая адаптирует частоту обновления канала, описанную в этом ответе .

Вы можете сэкономить ресурсы, если используете условные HTTP GET для получения каналов, которые его поддерживают. Сохраните значения заголовков Last-Modified и ETag из ответа HTTP. При следующей попытке укажите их значения в заголовках запросов If-Modified-Since и If-None-Match .

Теперь, если вы получили код ответа HTTP 304, вы знаете, что фид не изменился. В этом случае полный канал больше не был отправлен, только заголовок, сообщающий, что новых сообщений нет. Это уменьшает пропускную способность и обработку данных.

1 голос
/ 26 июля 2011

Я хотел бы рассмотреть вопрос об использовании Google App Engine для извлечения и обработки «сырой» информации и отправки ее в виде пакетов в пакетах управляемого размера на веб-сервер. GAE имеет свою собственную систему заданий cron и может работать независимо 24/7.

В настоящее время используется аналогичная система для получения информации о вакансиях с нескольких веб-сайтов и ее компиляции для еще одного блестящего способа компенсировать требования к пропускной способности и обработке.

1 голос
/ 25 июля 2011

У меня была похожая ситуация, но не так много блогов :) Раньше я импортировал их один раз в 24 часа, но для экономии нагрузки на процессор я использовал sleep() после каждого блога, например sleep(10);и это держало меня в безопасности.

...