У меня есть веб-сайт, который обеспечивает рассылку новостей для 7 каналов. У каждого пользователя есть свои фильтры новостной рассылки, поэтому мне нужно выполнить 7 запросов для каждого пользователя.
Также, когда загружается конкретный канал, каждый элемент из канала добавляется в таблицу user_history. Просто чтобы знать, что этот элемент был отправлен этому пользователю, и не отправляйте его снова.
Это еще 7 запросов.
Их еще 7, потому что я делаю запрос INSERT-SELECT. Я не перебираю каждый элемент и не делаю для него запрос.
После этого я генерирую сообщение электронной почты, которое также сохраняется в базе данных и отправляется пользователю.
Так что это как минимум 15 запросов на пользователя. Требуется ~ 25 минут, чтобы уведомить всех моих подписчиков.
В настоящее время у меня 2500 пользователей, но я должен зарегистрировать еще 6000 в ближайшее время. Я беспокоюсь о том, как это будет работать вообще.
Это приложение использует Kohana PHP Framework.
У меня есть htop видео сервера при запуске задачи рассылки — https://youtu.be/9VnkXVS51j4
Странно то, что ядро 1 загружено на 100%, а ядро 2 — нет.
Любые предложения здесь? Нужно ли больше ядер?
Я имею в виду какой-то механизм, который генерирует все сообщения электронной почты и сохраняет их в базе данных. Я хочу, чтобы генерация этого сообщения производилась при низкой нагрузке, возможно, в 2 часа ночи. Также я не хочу поджигать сервер, выполняя задачу, которая повышает нагрузку до 100%. Я хочу, чтобы это было сделано нежно.
После того, как все сообщения будут сгенерированы в течение ночи, я запусту задание cron, которое отправит все электронные письма моим подписчикам.
Кто-нибудь может мне помочь с этим?
Задача ещё не решена.
Других решений пока нет …