我有一个网站,提供 7 个提要的时事通讯。每个用户都有自己的时事通讯过滤器,所以我必须为每个用户运行 7 个查询。
此外,当加载特定提要时,提要中的每个项目都会添加到 user_history 表中。只知道该物品已发送给该用户,不再发送。
那是另外 7 个查询。
他们还有 7 个,因为我做了一个 INSERT-SELECT 查询。我不会遍历每个项目并对其进行查询。
之后,我生成了一封电子邮件,该邮件也存储到数据库中并发送给用户。
因此,每个用户至少有 15 个查询。通知我的所有订阅者大约需要 25 分钟。
目前我有 2500 个用户,但我必须很快再注册 6000 个。我很担心这将如何运作。
这是一个使用 Kohana PHP 框架的应用程序。
运行时事通讯任务时,我有一个服务器的 htop 视频 - https://youtu.be/9VnkXVS51j4
这里奇怪的是核心 1 是 100% 加载的,而核心 2 不是。
这里有什么建议吗?我需要更多内核吗?
我正在考虑某种机制来生成所有电子邮件并将它们存储到数据库中。我希望在负载较低时(可能在凌晨 2 点)完成此消息生成。此外,我不想让服务器着火,运行将负载提高到 100% 的任务。我希望它轻轻地完成。
在整个晚上生成所有消息之后,我将运行 cron 作业,它将所有电子邮件发送给我的订阅者。
任何人都可以帮助我吗?