Поиск лучших практик по созданию читателя / агрегатора каналов на Cron

У меня есть социальная сеть, которая начинает набирать обороты и имеет расширяющуюся базу пользователей. В настоящее время мы разрешаем пользователям импортировать свои блоги, каналы flickr и twitter. Мы используем php-библиотеку simplepie для чтения каналов, а затем проверяем БД, чтобы убедиться, что у нас нет повторяющейся записи для каждого найденного элемента канала. Если элемент фида новый, мы сохраняем его в БД. Каждое средство обновления каналов запускается на своем собственном cron. Итак, у нас есть один для каналов Twitter, один для flickr и один для блогов.

Я заметил, что сайт становится вялым, и это наиболее вероятно, когда выполняются задачи cron. Должен быть способ сделать это лучше. Есть предположения?


person phirschybar    schedule 13.10.2009    source источник


Ответы (2)


Общая идея прекрасна, я бы не стал этого менять.

Если вы уверены, что именно задачи cron вызывают проблемы с производительностью, я бы запустил их на отдельном сервере. Наличие «пакетного сервера» для выполнения такого рода заданий отдельно от интерфейсного веб-сервера - довольно распространенное решение.

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

person Ben James    schedule 13.10.2009
comment
благодаря. Я думаю, что могло быть причиной того, что это был долгий тайм-аут (20 секунд) при вызове (через curl) для удаленного чтения канала. Я думаю, что когда он зависал на нескольких каналах, это вызывало задержку в сети. Не уверен, но сокращение тайм-аута, похоже, значительно помогло. Спасибо за совет. - person phirschybar; 15.10.2009

Бен Джеймс хорошо замечает, что вам нужно быть на 100% уверенным, что это cron's причина. Я бы не стал сразу покупать новый сервер, пока вы не сможете оптимизировать то, что у вас уже есть.

Какой тип медлительности вы испытываете?

  1. Сетевая задержка?
  2. Задержка базы данных?
  3. Общая загрузка страницы менее отзывчива (внешний код?)
  4. Все? и т.д;

Сделайте анализ, а затем знайте, где оптимизировать, когда у вас есть все переменные.

person Jakub    schedule 13.10.2009