Javascript Netsuite中的脚本执行指令计数超过错误
我有一个计划脚本,它在销售订单上执行一些计算和更新自定义标题字段,每30分钟运行一次 随着Netsuite中订单数量的增加,我开始收到错误消息“发生了意外错误” 执行时间:677.15秒 脚本使用:75 错误:超出SSS\u指令\u计数\u“ 超出脚本执行指令计数。 堆栈跟踪:已计划 请帮我摆脱这个错误Javascript Netsuite中的脚本执行指令计数超过错误,javascript,netsuite,suitescript,Javascript,Netsuite,Suitescript,我有一个计划脚本,它在销售订单上执行一些计算和更新自定义标题字段,每30分钟运行一次 随着Netsuite中订单数量的增加,我开始收到错误消息“发生了意外错误” 执行时间:677.15秒 脚本使用:75 错误:超出SSS\u指令\u计数\u“ 超出脚本执行指令计数。 堆栈跟踪:已计划 请帮我摆脱这个错误 p、 s:对于所提到的问题,没有现成的答案。如果循环中的某些逻辑需要很长时间才能完成,我通常会出现此错误。造成此问题的另一个常见原因是无限循环 NetSuite已经建立了检测“失控脚本”的内部机
p、 s:对于所提到的问题,没有现成的答案。如果循环中的某些逻辑需要很长时间才能完成,我通常会出现此错误。造成此问题的另一个常见原因是无限循环 NetSuite已经建立了检测“失控脚本”的内部机制这包括无限循环。一旦捕获,这些脚本将被终止,并抛出SSS\u指令\u COUNT\u excelled错误消息。如果收到此错误,NetSuite建议您检查脚本中的for循环,以确保它们包含终止条件或可以满足的条件 <>你也可以考虑下面的点 NetSuite管理对的使用
nlapiLogExecution(类型、标题、详细信息)
治理模型旨在防止不合理的过度日志记录,这可能会对共享同一数据库的其他NetSuite客户的性能产生负面影响。治理模型并不旨在影响适当使用nlapiLogExecution()
的公司(或脚本)
治理模式如下:
在60分钟的时间内,一家公司可以在其所有脚本中对nlapiLogExecution()进行多达100000次的调用
如果NetSuite在60分钟内检测到给定脚本过度记录日志(并使公司接近100000 nlapiLogExecution()调用限制),NetSuite会将有问题的脚本的日志级别更改为更高的下一级别。有问题的脚本将继续执行,但其日志级别将根据脚本的不同从调试变为审核,或从审核变为错误,或从错误变为紧急
脚本执行日志的容量由同一数据库上的客户共享。为了进一步防止日志记录过多,脚本执行日志受NetSuite数据库每个实例上的总存储限制控制。在每个NetSuite服务器上,如果存储日志的数据库表达到此限制,则所有日志(跨该服务器上的所有客户)被清除。因此,NetSuite建议您使用自定义记录存储信息
例子
ABC公司有10个脚本在60分钟内运行。如果10个脚本中有一个调用
nlapiLogExecution('DEBUG', 'My log', x.getID())
在20分钟内,NetSuite将提高脚本的日志级别70000次
对日志级别的更改将出现在脚本的脚本部署页面的日志级别字段中(见图)。在下图中,如果违规脚本的日志级别最初设置为调试,NetSuite将增加日志级别以进行审核。这意味着读取的代码行
nlapiLogExecution('DEBUG', 'My log', x.getID())
将继续执行,但不会记录任何内容,因为脚本的日志级别已提升为审核
将通知脚本所有者
如果NetSuite检测到一个脚本日志记录过多,则会通知脚本所有者。脚本所有者会收到警告,指出该脚本是其公司的主要贡献者,可能超过100000日志记录阈值(在给定的60分钟时间段内)
NetSuite通过电子邮件发送通知,并将日志项添加到脚本的执行日志中。电子邮件和NetSuite生成的日志都会提醒脚本所有者脚本的日志级别已提高
参考:[脚本日志管理]NetSuite中没有适当的文档说明允许的脚本行数。正如@rockstar所说 NetSuite已经建立了检测“失控”的内部机制 包含无限循环的“脚本” 我面临着同样的错误,即使没有任何无限循环 您应该采取的第一种方法是尝试通过减少循环数或不必要的脚本语句来优化脚本
如果这不可能或仍然没有帮助,您可能可以在处理一定数量的数据后
yield
您的脚本,以重置脚本语句的使用情况。感谢您的回复,但是yield创建了一个新的计划脚本,并重置了治理,如果您注意到我的脚本使用情况:75。那么我的脚本使用情况已经用完了吗?yield计划一个新实例并从其产生的位置恢复。您的脚本使用点还没有用完。@prasun您可能需要在NS帮助中心查看SuiteScript Governance
和Governance on script Logging
。不过,您在生成或重新计划脚本的上下文中是正确的,但始终建议您这样做微调和优化你的代码。以后是最后的选择。