0

我有一个带有多个 Cronjobs 的 EC2 服务器,每分钟调用一次。大多数时候一切正常,但有时会发生,一个 cronjob (wget) 由于数据库而需要很长时间,然后进行下一个 wget 调用。这会减慢数据库的速度,最终我会收到许多 wget 调用和超过 200 个数据库连接。大多数时候,除了关闭 RDS 和 EC2 并在没有 cronjobs 的情况下重新启动之外,别无他法。

我想知道: 1. 对 cronjobs 有什么更好的解决方案(我必须获取大量数据并将其存储在 RDS 中)?2. 如何确保每个 URL 只运行一个 wget?3. 为什么 RDS 需要几分钟才关闭连接?我必须更改哪个参数?

谢谢!

4

1 回答 1

1

取决于你想要达到什么。

  • 您想扩展您的数据库以处理多个连接而不会失败吗?

如果每个 cronjob 调用都很重要,你会这样做。而且您不能错过半处理请求。

为了优化这一点,你首先要弄清楚你的时间花在了哪里。它是在服务器端处理,还是纯粹的数据。

  • 如果您不介意部分请求或跳过的呼叫

一个快速的解决方法是使用 wget 超时选项之一(假设 wget 是你所有的 cronjobs 所做的)请注意,这可能会使调用饿死。如果请求总是需要超过超时时间,它将永远不会执行。

更强大的解决方案是确保一次只有一个 cronjob 实例处于活动状态。IIRC Perl 有一个简单的 CPAN 解决方案。

于 2012-07-18T11:00:16.737 回答