Здравствуйте, у меня есть сервер со 100 клиентскими сайтами, каждый со своей базой данных. Мне нужно, чтобы каждый из них запускал задание cron каждые 24/7 минут, чтобы проверить, есть ли у клиента настроил публикацию сообщения в это время, если это так, установите для is_published значение 1 в таблице сообщений. Мой вопрос: без тестирования производительности 100 заданий cron каждую минуту будут значительно замедлять работу моего сервера? Я знаю, что это расплывчато, но я запускаю Linux-сервер с 1024 МБ оперативной памяти на порту 10 МБ / с.

0
Naterade 20 Мар 2014 в 19:18
В заданиях cron нет ничего особенного, они такие же, как и любой другой процесс.
 – 
Barmar
20 Мар 2014 в 19:21
Нагрузка не слишком велика, но, безусловно, есть лучшие способы справиться с задачей. Вы можете определить, когда должно быть опубликовано каждое сообщение, и вести дельта-список вакансий и время, чтобы пойти, пока работа не будет опубликована. Следите за этим списком. По мере поступления новых вакансий они попадают в список. Если вам нужно 100 списков, по одному на сайт (чтобы каждый издатель не знал, когда другие настроили публикацию статей), пусть будет так; вы можете поддерживать интегрированный список, который включает информацию об идентификаторе сайта/базы данных, а также информацию о статье и информацию о времени публикации.
 – 
Jonathan Leffler
20 Мар 2014 в 19:27

2 ответа

Лучший ответ

Да, это плохая идея по ряду причин. Нагрузка на сервер - одна из них. Вы действительно хотите вложить свои аппаратные средства в установку флага is_published в сотнях баз данных? Заботятся ли клиенты о задержке до одной минуты? Что произойдет, если количество клиентов будет расти быстрее, чем вы ожидаете?

Есть способ попроще. Просто имейте столбец с PostedTime в таблице posts. Затем создайте представление, которое использует этот столбец:

create view v_posts as
    select p.*, (PostedTime >= now()) as is_published
    from posts;
6
Gordon Linoff 20 Мар 2014 в 19:22
О, фантастическая идея! Я бы не подумал об этом. Это на самом деле решает многие проблемы для меня. Спасибо, Гордон.
 – 
Naterade
20 Мар 2014 в 19:41

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

1
Mārtiņš Briedis 20 Мар 2014 в 19:21