我正在使用
更新群集ML 4.2.9服务器上的 XDBC 服务器配置admin:appserver-set-max-time-limit($config,$id,$maxTimeLimit )
admin:save-configuration-without-restart()
但是,在设置此配置后,MarkLogic指定了两种持久保存此更改的方法。
- 管理员:保存配置,而无需重新启动()
- 管理员:保存配置()
醇>
对于1,ML文档说明 “如果使用此功能保存任何需要重新启动服务器的更改(”冷“更改,例如App Server端口分配更改),则更改将在下次MarkLogic Server重新启动时生效(尽管它们将保存在配置)“
有人可以告诉我,admin:appserver-set-max-time-limit
是冷变还是热。意思是,如果我使用admin:save-configuration-without-restart()
(我打算使用),我的更改是否会尽快有效。
否则,我将不得不按计划的活动滚动这些更改,以便可以考虑服务器停机时间。
由于
答案 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?我可以看到配置更改已存储(虽然它们无效)