在Marklogic 4.2.9中设置Max Time Out是否需要重新启动服务器?

时间:2012-09-03 15:26:26

标签: marklogic

我正在使用

更新群集ML 4.2.9服务器上的 XDBC 服务器配置
admin:appserver-set-max-time-limit($config,$id,$maxTimeLimit )
admin:save-configuration-without-restart()

但是,在设置此配置后,MarkLogic指定了两种持久保存此更改的方法。

  
      
  1. 管理员:保存配置,而无需重新启动()
  2.   
  3. 管理员:保存配置()
  4.   

对于1,ML文档说明 “如果使用此功能保存任何需要重新启动服务器的更改(”冷“更改,例如App Server端口分配更改),则更改将在下次MarkLogic Server重新启动时生效(尽管它们将保存在配置)“

有人可以告诉我,admin:appserver-set-max-time-limit是冷变还是热。意思是,如果我使用admin:save-configuration-without-restart()(我打算使用),我的更改是否会尽快有效。 否则,我将不得不按计划的活动滚动这些更改,以便可以考虑服务器停机时间。

由于

3 个答案:

答案 0 :(得分:2)

我刚刚运行了xquery

admin:appserver-set-max-time-limit($config,$id,$maxTimeLimit )
admin:save-configuration-without-restart()

并设置$ maxTimeLimit = 60秒,我仍然可以看到其他XQueries运行超过1分钟。所以,我想这个改变需要冷启动服务器。

但是,如果有人知道,请告诉我。

答案 1 :(得分:2)

这是一个热门变化。您可以在管理界面中看到这一点:“最长时间限制”旁边没有星号(*)。

但是你的代码看起来很有趣,我认为这就是为什么它不起作用。再看看http://docs.marklogic.com/5.0doc/docapp.xqy#display.xqy?fname=http://pubs/5.0doc/apidoc/admin.xml&category=Admin+Library&function=admin:save-configuration-without-restart

上的示例
let $config := admin:get-configuration()
let $spec := admin:forest-set-enabled($config, 
  xdmp:forest("myForest"), fn:true() )
return
  admin:save-configuration-without-restart($spec)

您的代码缺少admin的参数:save-configuration-without-restart(),因此它什么都不做。此外,保存新版本的配置至关重要。 XQuery变量通常是不可变的,因此示例使用新变量来完成此操作。您也可以回收相同的变量名称,但重要的是要了解这是重用而不是变异。

let $config := admin:get-configuration()
let $config := admin:forest-set-enabled($config,
  xdmp:forest("myForest"), fn:true() )
return
  admin:save-configuration-without-restart($config)

或者这更接近我通常所做的事情,使用xdmp:set进行变异。我不会在大多数应用程序代码中使用xdmp:set,但是对于部署而言,好处大于引入可变性的缺点。

declare variable $CFG := admin:get-configuration() ;

xdmp:set(
  $CFG, admin:forest-set-enabled($CFG, xdmp:forest("myForest"), fn:true())
,
admin:save-configuration-without-restart($CFG)

测试此方法的一种方法是查看管理员界面。如果它无法反映您的更改,无论是否重新启动,您的代码都会出现问题。

答案 2 :(得分:0)

@mblakele这是我使用的实际代码

xquery version "1.0-ml"; 

import module namespace admin = "http://marklogic.com/xdmp/admin" 
          at "/MarkLogic/admin.xqy";

declare variable $maxTimeLimit := 60;
declare variable $defaultTimeLimit := 60;

if ($defaultTimeLimit<=$maxTimeLimit) 
then ( 
    let $config := admin:get-configuration()
    let $groupid := admin:group-get-id($config, "Default")
    let $ids:= admin:group-get-xdbcserver-ids($config, $groupid)
    return (
            for $id in $ids 
                        return 
            let $new_config := admin:appserver-set-max-time-limit($config,$id,$maxTimeLimit )
                let $final_config := admin:appserver-set-default-time-limit($new_config,$id,$defaultTimeLimit )
                return admin:save-configuration-without-restart($final_config)

))
else ()

这对我有用,我可以在管理界面中看到超时值已更新。但是,当我运行另一个通常需要超过60秒的XQuery时,它不会超时。有什么理由吗? 此外,http://docs.marklogic.com/5.0doc/docapp.xqy#display.xqy?fname=http://pubs/5.0doc/apidoc/admin.xml&category=Admin+Library&function=admin:save-configuration-without-restart的示例并未讨论使用admin:forest-set-enabled($config,xdmp:forest("myForest"), fn:true() )

是否真的需要调用admin:forest-set-enabled?我可以看到配置更改已存储(虽然它们无效)