调度程序,它太重了吗?

时间:2013-03-28 05:54:38

标签: coldfusion

我的计划任务太重了,所以我的问题是,太重的计划任务可能会降低coldfusion服务器的负担?我的意思是有时我的计划任务超过了循环限制时间,无论如何我正在寻找其他方式来做同样的事情,但不要太沉重。

2 个答案:

答案 0 :(得分:3)

好吧,计划任务实际上只是对正常CF页面请求的自动调用。这意味着,如果您在浏览器窗口中手动调出计划任务URL,那么它也会超时吗?

请记住,服务器正在调用并运行计划任务,这意味着您可以拥有与实际用户不同的会话,CGI,请求和表单范围值。但是,您可以使用CFSETTING tag的requestTimeout属性来延长页面在超时之前完成任务所需的时间。 requestTimeout属性采用一个值,该值表示秒数,在此之后,如果没有来自服务器的请求,CF认为该页面没有响应。

但是,它在很大程度上取决于您的计划任务实际执行的内容。您可以通过各种方式将代码分解为组成部分,以便加快处理速度。也许弄清楚循环在做什么(并且确实需要做它正在做的所有事情)是一个好的开始。

答案 1 :(得分:0)

有几件事需要考虑。

首先,您的任务需要一段时间才能运行,并且当前超时。这里有一些事情需要调查:

  1. 不是调查,但您可以根据@ coldfusiondevshop的建议,通过requesttimeout为该请求设置<cfsetting>
  2. 您可以审核您的代码,看看它是否可以采用不同的编码方式,而不需要花费很长时间才能运行。由于通常作为一项任务完成的工作性质,这可能是不可能的。
  3. 根据您的ColdFusion版本(请始终使用CF版本标记您的问题,以及仅使用“ColdFusion”),您可以利用增强的调度CF10将任务拆分为更小的块并将它们链接在一起,从而使部分金额不太可能超时。这也不总是可行,但需要考虑。
  4. 要考虑的另一件事是,是否值得为您的任务运行单独的CF实例。除了你的任务超时,它也可能会减慢其他人的处理速度,同时它正在运行。你检查过了吗?对于单个任务,这可能有点过头了,但要记住,任务不需要需要由与站点其余部分相同的CF实例运行,这确实很有用。如果有很多任务会使CF实例的资源紧张,那么这是一个令人信服的案例。

    总结:通过<cfsetting>增加超时,然后审核您的代码,看看是否可以提高性能。我说的其他事情只是“奖励点”的建议。