PHP Cronjob导致数据库连接太多

时间:2012-07-18 10:46:41

标签: amazon-ec2 cron wget crontab amazon-rds

我有一个带有多个Cronjobs的EC2服务器,每分钟调用一次。大多数时候一切正常,但有时它会发生,一个cronjob(wget)需要很长时间,因为数据库和下一个wget调用。这会减慢数据库的速度,最终会导致许多wget调用和200多个数据库连接。大多数时候除了关闭RDS和EC2之外没有其他方法可以在没有cronjobs的情况下重新启动。

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

谢谢!

1 个答案:

答案 0 :(得分:1)

取决于您想要实现的目标。

  • 您是否希望扩展数据库以处理多个连接而不会失败?
如果每个cronjob电话都很重要,你就会这样做。你不能错过半处理请求。

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

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

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

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