我需要定期运行长 MySQL 查询的长后端作业,这需要几个小时才能完成。我设置了延迟作业 gem 来安排这项工作。
当这个进程运行时:
- 这项工作会减慢我的 Rails 前端服务器的速度吗(即,响应简单用户的请求需要更长的时间)?
- 繁重的计算发生在哪里:在我的 Rails 服务器中,还是在 MySQL 服务器中?
- MySQL服务器会被我预定的作业占用,没有人可以同时访问MySQL吗?
谢谢你。
我需要定期运行长 MySQL 查询的长后端作业,这需要几个小时才能完成。我设置了延迟作业 gem 来安排这项工作。
当这个进程运行时:
谢谢你。
您的问题的答案是:这取决于
如果您的任务是处理器密集型的,它可能会减慢 Rails 服务器的速度。如果您担心 DJ 工作人员会影响前端盒,请将它们移至另一个可以访问共享数据库的盒子。您的工作盒需要项目设置,但不需要与您提供页面的盒子相同。
这完全取决于您如何编写任务。通常,rails 应用程序执行简单的选择/插入/更新/删除。实际计算是在 Rails 中完成的。但是您可以指定涉及复杂连接的选择语句或利用数据库中的函数。这可以将复杂字段的计算卸载到数据库
这取决于您的数据库配置为接受的连接数。通常在生产级服务器中,从查询的大小来看,您不会在这里看到问题。但是您应该考虑有多少活动连接以及允许多少。每个 rails 实例都算作一个连接,以及 DJ 的每个工作人员。
在每种情况下,实际性能将取决于几个因素。您创建了多少连接,您在工作人员和数据库之间传输了多少数据。你在哪里工作。
如果rails服务器和mysql服务器在同一台机器上,那么会有一些影响。但是您的操作系统和 MySQL 一起,非常有能力将影响最小化,而无需您进行太多其他干预。根据您的部署方式,您始终可以使用“nice”命令,并降低延迟作业的优先级,从而最大限度地减少它对您网站响应能力的影响。