zoukankan      html  css  js  c++  java
  • No sandboxworker process or sandbox hosts are currently avaliable

    最近项目遇到一个棘手问题,因为导致问题的原因很难找到,而且很难重现问题。

    当未知问题根源时,原因就会有很多,比如:

    1. 服务器环境配置
    2. 代码
    3. 产品BUG

    而且也已经向产品组反馈,没有得到有效帮助,只能继续追查环境配置和代码。 

    问题是这样的,在提交单据时,用户界面报错,查看详细信息,提示CommunicationException

    No sandboxworker process are currently available. 

    我们尝试使用多线程来创建案例记录,提高了问题重现的概率。 

    经过近近一个月的追查,发现一个部署配置项SandboxHostMaxWorkerProcesses,在DeploymentSettings表里面可以找到。

    系统已经配置非常多流程,而且所有插件和工作流都是注册在沙盒模式的。

    在我们这个case中,监控案例(incident)实体的工作流有38个,一旦案例状态发生变化,就会触发工作流,沙盒进程消耗的资源与工作流(异步服务需要与沙盒服务通讯)和插件个数成正相关。 

    后来经过摸索,把SandboxHostMaxWorkerProcesses配置设置为比较小的值,看是否会提高问题重现概率,问题重现的概率降低,几乎没有再发现此问题,欢迎各路大神指出根因。

    在日积月累的实践中发现并找到根因,找出真相,并解决问题,能够让你感到兴奋!

    昨天,我又遇到了类似的错误关键字:No sandbox hosts are currently avaliable

    在一次别人需要我解决一个问题

    原始问题是这样的:

    一个异步插件没有执行,也看不到流程执行记录。

    目标环境的部署架构是这样的:两台后端服务器,其中一台沙盒,另一台是异步服务器。

    检查步骤:

    1.首先检查的是异步服务器里面的“”Microsoft Dynamics 异步服务“”是否有启动(发现没有启动,设为自动,重启也没有自动启动,手动启动成功)。

    2.启动异步服务后问题依然存在,然后使用trace打日志,发现日志也没有记录,因为流程没有启动。

    3.登录异步服务器,查看事件日志(应用程序)。发现有异步服务的错误,CommunicationException,是通讯错误,错误详细中包含字样“No sandbox hosts are currently avaliable”。

    4.检查异步服务器是否能够ping通前端,沙盒服务器,检查异步服务器的域名,dns配置、防火墙等,都发现没有问题。

    在经历探索联想之后,我首先想到的是:异步服务器需要与沙盒服务器通讯,再看看事件日志发现,异步服务器能够ping通却无法访问沙盒服务,所以怀疑SPN出了问题。

    SPN,全称是Service Principle Name ,服务器主体名称 。

    如果在域用户帐户下运行服务,则必须为要使用的帐户手动注册SPN

    因为沙盒服务是使用域账号来登录的,所以需要检查SPN是否有正确注册。

    使用PowerShell 输入命令检查沙盒服务启动账户下,是否有注册SPN:

    setspn -L {HostName} {Domain/AccountName}  --HostName:代表沙盒服务器主机名; Domain/AccountName代表域账号

    发现其中一个SPN注册错误,域名错了,使用以下命令删除错误的注册:

    setspn -d ServiceClass/Host : Port AccountName --ServiceClass:指服务名,HOST:主机名

     然而,问题依然存在,还是没好!这是,我还是很淡定,因为问题存在很正常,而越有挑战性的问题,解决它也是一件让人欣喜的事。

    还是按照异步服务器没法访问沙盒服务器的线索来找答案。

    有哪些方法可以测试无法访问服务呢?如果没有一点点发散性思维,还真无法继续下去解决问题了。

    thinkpoint:

    1. SPN是完整的服务名/域名,

    2.看过一个同事使用nslookup来解析主机,输入主机名,能够看到IP和FQDN(Fully Qualified Domain Name)。

    于是使用nslookup这个命令输入沙盒服务器的主机名看看,发现确实不能够解析出来。

    难道沙盒服务器的配置有问题?SPN还有问题?经过确认SPN是没有问题的。

    线索在哪里呢?既然前端能够执行同步插件,而不能执行异步任务,说明,前端可以访问沙盒服务器,印证了沙盒服务器配置没有问题,问题是出在了异步服务器里。

    这个真相大查找的过程还真是让人刺激。

    异步服务器出了什么问题?

    无法访问其他机器?也不是,只是无法访问其他机器的服务。

    那是为什么?我就想,既然服务要注册SPN,一个包含域名的名称,所以,访问服务也是需要包含域名的一个完整地址咯?确实是的。

    因此,既然使用nslookup命令,无法解析出沙盒服务器,那应该是跟DNS配置有关。检查异步服务器的DNS配置,咋一看没问题,DNS服务器没问题,IP是正确的,但是细看发现,问题出在这里

    DNS后缀注册的时候少了个子域,应为xxx.mycompany.com,因为最底下的选项,使用这些错误的DNS后缀,导致无法访问其他服务器的服务。

    真相大白!也成功解决了问题!刺激!爽!

    希望对遇到相同问题的网友有帮助。

    如有问题或说得不对的地方,欢迎指正、交流。cheng32@sina.com

  • 相关阅读:
    HBase 负载均衡
    HBase的写事务,MVCC及新的写线程模型
    HBase RegionServer宕机处理恢复
    分布式事务实现-Percolator
    MVC框架
    06-JS中li移动第二种形式
    05-JS中li移动第一种形式
    04-JS中文档碎片
    03-JS中添加节点
    02-JS中父节点
  • 原文地址:https://www.cnblogs.com/tcli/p/6931614.html
Copyright © 2011-2022 走看看