我正在尝试在 lua 中为 Citrix Netscaler 编写一个策略扩展,它计算字符串的 base64 并将其添加到标头中。大多数时候该函数工作得很好,但不止几次我看到ns.log
它的执行被以下消息终止 -
终止执行,函数超出时间限制。
在文档中我找不到确切的时间限制(从我看到的大约 1 毫秒,这对我来说没有意义)或如何配置它。
所以我的问题是:这个属性是否可配置,如果可以,如何配置?
我正在尝试在 lua 中为 Citrix Netscaler 编写一个策略扩展,它计算字符串的 base64 并将其添加到标头中。大多数时候该函数工作得很好,但不止几次我看到ns.log
它的执行被以下消息终止 -
终止执行,函数超出时间限制。
在文档中我找不到确切的时间限制(从我看到的大约 1 毫秒,这对我来说没有意义)或如何配置它。
所以我的问题是:这个属性是否可配置,如果可以,如何配置?
为什么你需要去'lua'?使用策略表达式,您可以执行 text.b64encode 或 text.b64decode 。我没有回答您的问题,但您可能不知道 Netscaler 中的内置编码器/解码器。
虽然我没有任何官方文档,但我相信任何策略的最大执行时间都是 10 毫秒。柜台也证实了这一点。在 shell 上执行以下命令:
nsconmsg -K /var/nslog/newnslog -d stats -g 10ms -g timeout
您将看到所有具有这些名称的计数器。当您的脚本正在执行时,您可以运行
nsconmsg -d current-g 10ms -g timeout
这将让您实时查看计数器。当它失败时,您将看到值增加。
我想说您可以在脚本运行时在 ns.log 上打印时间以确认这一点。我不确切知道您在做什么,但请记住,netscaler 策略应该执行非常简短的执行,毕竟您正在处理一个数据包并且数据包的规模是纳秒级的。