返回 登录
0

PREDIX机器故障排除

阅读35485

使用本文档件帮助您识别并解决可能会遇到的基本问题。

Eclipse故障排除

当在Eclipse中使用Predix机器SDK生成或运行Predix机器时您可能会遇到以下问题。

Eclipse容器生成错误:出现用于java.exe参数的帮助

条件

您使用Eclipse生成一个Predix机器运行时容器之后想要启动该容器时,出现java.exe参数的帮助。

原因

当您设置您的 JAVA_HOME 环境变量时,您或许是不是添加了结尾反斜杠或者就是添加了引号。

解决方案

从您的 JAVA_HOME 环境变量中删除结尾反斜杠或引号。

Eclipse容器生成错误:应用程序错误

条件

当您尝试使用脚本生成一个Predix机器容器时,出现以下错误:
图片描述

原因

您下载了不支持插件开发环境(PDE)的Eclipse版本。

解决方案

下载用于Java EE开发者的Eclipse Luna、Kepler(对于SDK 16.2.2和更低版本),或者Mars或Neon软件包(对于SDK 16.3.x和更高版本)。

Eclipse错误:目标平台中未发现捆绑包

条件

当您尝试导出SDK镜像图片以生成Predix机器容器时,出现以下错误:
图片描述

原因

错误消息中命名的捆绑包不再是SDK的一部分。它已被移除或重命名。
Predix机器SDK不会自动替换或移除重命名的捆绑包。

解决方案

之前的SDK版本中包括但是在更新版本中已被移除或重命名的捆绑包在捆绑包列表中出现一个警告。

移除已从容器中移除的捆绑包,用新版本替换重命名的捆绑包。

Eclipse调试错误:无法连接Predix机器的代理

条件

当您通过Eclipse调试Predix机器容器时,出现以下消息:
图片描述

原因

这是一个时机定时问题。Eclipse调试人员想要连接,但是如果机器速度和容器尺寸使容器启动变慢,在第一次尝试时可能会失败。

解决方案

等待直到容器完全启动并点击重试。

Eclipse错误:包括OPC-UA捆绑包的容器故障且运行时内存溢出

条件

在Eclipse中,如果您profile配置包括 com.ge.dspmicro.opcua-server 捆绑包的容器,profile配置操作会失败而且您运行时内存溢出。

原因

OPC-UA捆绑包每秒创建大量临时对象。profiler配置程序会为每个这样的临时对象存储许多系统信息。创建对象的堆栈轨迹会使用最大量的大量内存。

解决方案

  1. 将用于Eclipse的应用程序堆从1GB增加到2GB。(-Xmx2024m)。
  2. 减少mBProfiler内存使用量。
    a. 在Eclipse中,选择Run运行 > Profile Configurations配置文件组态。
    b. 在Profile Configurations配置文件组态中,选择您的OSGi运行时镜像图片。
    c. 选择mBProfiler选项卡。
    d. 降低最大堆栈轨迹深度字段中的值。

Javadoc错误:该元素既未连接源也未连接Javadoc,因此不会发现Javadoc。

条件

当想要在Eclipse中查看用于JavaDocs的mouseover/工具提示时,出现以下消息: Note: This element neither has attached source nor attached Javadoc and hence no Javadoc can be found.

原因

Maven Dependencies未设置。

解决方案

  1. 在您的Predix机器SDK下载位置,解压docs/apidocs.zip文件并提取所有文件。
  2. 在Eclipse中,打开Package Explorer视图。
    出现属性对话框。
  3. 在Maven Dependencies部分,找到您想要查看Javadoc信息的JAR文件,右击,选择属性。
  4. 点击Javadoc位置。
  5. 在Javadoc位置路径字段,点击浏览。
  6. 导航至Predix机器SDK下载位置/docs,选择apidocs文件夹,点击验证。
  7. 对每个JAR文件重复此步骤。

Predix机器故障排除

如果您遇到Predix机器错误请试一下这些解决方案。

Predix机器构建错误

条件

当构建Predix机器样例时,您可能会收到这样的错误:
图片描述

原因

您没有在.m2/settings.xml文件中正确配置组态您的代理或其它Maven设置设定值。

解决方案

  1. 生成一个API密钥。
    a. 登录https://artifactory.predix.io
    b. 选择您的用户名。
    c. 输入您的密码。
    d. 点击解锁以填写API密钥字段。
    e. 复制密钥。
  2. 根据您自己网站的需求为Maven定义代理设置设定值。

注:

如果您在代理要求方面有问题,请询问您的网络管理员。
a. 在.m2/settings.xml文件中添加代理设定值。

注:

您可能还需要还可能必须为HTTPS协议设置代理设定值。
图片描述

b. 添加一个具有以下信息的服务器条目。(使用在第1步复制的API密钥。)
图片描述

注:

如果您是GE网络上的一名GE员工,请勿包括artifactory.external,参见步骤C。
c. 如果您是一名GE员工,添加以下服务器和配置库数据仓库条目。
图片描述
3. 如果您不在GE网络上,删除设定值中与devcloud.swcoe.ge.com相关的所有条目。

“Lock锁定”文件错误

如果您遇到“Lock锁定”文件错误,请尝试以下解决方案。

条件

在以下场景中可能会遇到这个问题:
• 如果Predix机器是作为一项服务安装的,或者机器启动时自动启动,Predix机器不启动,但未抛出错误,因此很难调试。
• 当设备上电时,如果您通过运行 start_predixmachine.sh 脚本直接从命令行启动Predix机器,您将会看到以下错误:
图片描述

原因

默认情况下,Predix机器会在
图片描述
文件夹下创建一个“Lock锁定”文件,如果机器断电或未正确关机,该文件仍然存在。

解决方案

如果您遇到这个问题,有两种可能的解决方案。建议采用第一个,因为首先它可以防止问题发生。
• 将PREDIXMACHINELOCK环境变量设置为指向/tmp或 /var/run/predixmachine,这样当机器重启或未正确关机时在
图片描述
文件夹中创建的“Lock锁定”文件会自动清除。
• 删除“Lock锁定”文件,然后重新运行 start_predixmachine.sh 脚本。

设备登记故障排除

在登记设备时您可能会遇到以下问题。

登记错误:用户无法进行登记登录

可能的原因

可能的解决方案

登记错误:授权请求无效

条件

登记一台设备时,收到以下错误:
图片描述
可能的原因
• 设备ID不存在。
• 激活码不正确。
可能的解决方案
• 在EdgeManager中创建设备。
• 确保使用了正确的EdgeManager激活码。

登记错误:无法进行登记,因为用户[用户名]未获授权登记该设备

用户未获授权登记设备

条件

在技术人员控制台中,收到以下错误消息:
图片描述

原因

在EdgeManager中用户未分配至该设备。

解决方案

管理员必须在EdgeManager中将用户分配至该设备。

登记错误:无法获得该客户端的>令牌

条件

在技术人员控制台中,用户/技术人员收到以下错误消息:
图片描述

可能的原因

• Predix机器代理设定值不正确。 • 用户未分配至技术人员角色。 可能的解决方案 • 管理员应在网页控制台中的配置组态选项卡上确认Predix机器的配置设定值。 • 管理员应确认用户分配至技术人员角色。

登记错误:分配的技术人员无法登记设备

条件

如果您正在以技术人员的身份测试技术人员控制台并尝试登记技术人员未获授权的设备,登录失败。然后,如果您使用相同的机器和浏览器尝试以正确分配的技术人员的身份登记设备,登记失败。

原因

错误技术人员登录的用户访问和认证(UAA)服务cookie在浏览器中持续存在。

解决方案

从浏览器中删除UAA cookie,以允许分配的技术人员登记设备。
登记错误:删除的设备仍处于可达状态
如果您在EdgeManager中删除一个具有可达状态的已登记设备,该设备仍然处于可达状态,而且您无法创建另一个具有相同名称或ID的设备。

原因

每条从设备发送至云端的成功登记请求都包含一个UAA令牌。该令牌在15分钟内有效。

解决方案

至少等待15分钟。

验证

15分钟后,创建一个具有相同名称/ID的设备。

登记错误:Docker镜像图片超时

条件

当为EdgeManager中登记的设备部署Docker镜像图片时,您可能会收到超时错误,如以下示例所示:
图片描述

原因

对于Raspberry Pi等小内存或低消能耗的设备来说Docker镜像图片可能非常大(例如,超过100MB),因此需要更多时间。

解决方案

  1. 更改软件包过期超时设定值。
    a. 导航至/configuration/machine并打开com.proximetry.osgiagent.impl.DeviceService.cfg文件。
    b. 将package.expiration.timeout属性的值更改为比默认值 1000更高的值。
  2. 更改HTTP客户端套接字超时过期设定值。
    a. 导航至/configuration/machine并打开com.ge.dspmicro.httpclient.config文件。
    b. 将com.ge.dspmicro.httpclient.socket.timeout属性的值更改为比默认值 I”600000”更高的值。

注:

如果在更新登记的Predix机器代理容器时发生这种情况:
1. 删除现有的Predix机器代理容器。
2. 重新安装容器。
3. 重新登记设备。
4. 如上所述更改超时配置组态。
5. 将更新从云端推送到Predix机器代理。

登记错误:身份认证失败

条件

当尝试在EdgeManager中登记Predix机器代理容器时,出现以下错误:
图片描述

原因
您的证书登记共享的密码不正确,或者网络时间协议(NTP)未正确设置。
解决方案
通过以下其中一个步骤解决问题。
• 如果您共享的密码不正确,纠正与您的证书相关的密码。
• 在您的设备上设置正确的NTP日期。以下示例显示了如何在Raspberry Pi上设置NTP日期。
1. 在您的设备上,打开vi/etc/system/ timesyncd.conf文件。
2. 取消对 NTP 的注释并添加一个NTP服务器。例如:
图片描述
3. 将NTP的系统设置为同步时间。
图片描述
4. 重启时间同步服务。

验证

  1. 使用以下其中一种方式确定时间状态:
    图片描述

结果应指示 Synchronized to time server
图片描述

图片描述
确认 NTP synchronized 属性值为 yes。
2. 确认日期正确。
图片描述

网页控制台错误故障排除

当使用Predix机器网页控制台时您可能会遇到以下问题。

网页控制台错误:容器重启时配置组态属性被清除

条件

您已经在Predix机器网页控制台中设置配置组态属性然后运行样例时,Predix机器重启时配置组态属性丢失。

原因

容器重启时浏览器缓存被清除。

解决方案

在您想要运行的样例的相应样例CONFIG文件中设置您的配置属性组态。例如,如果您正在运行订阅机器适配器样例,在图片描述
location>/samples/sample-apps/sample/configuration/machine/com.ge.dspmicro.sample.subscriptionmachineadapter.config文件中设定设置配置组态属性。

网页控制台错误:ModbusIOException

条件

Predix机器网页控制台上出现以下异常: net.wimpi.modbus.ModbusIOException: Premature end of stream (Header truncated)

原因

在第一次成功通信之后,Modbus机器适配器缓存了TCP/IP连接用于执行性能。Modbus机器适配器XML配置组态文件中的订阅 updateInterval 太长,因此设备关闭了缓存的连接。
Modbus机器适配器创建一个新连接并在缓存的连接稳定时进行第二次尝试,因此虽然有异常数据仍被成功提取。

解决方案

增加设备上的连接超时设定值,或缩短Modbus机器适配器XML配置组态文件中的订阅 updateInterval 。

容器错误故障排除

运行或启动Predix机器容器时您可能会遇到以下问题。

容器错误:未发现Java keytool

条件

当您想要运行Predix机器容器时,出现以下错误消息: ![图片描述](http://img.blog.csdn.net/20170523135411635?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvTUlOTUlOMA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)

原因

Predix机器启动脚本在启动时使用keytool命令生成默认密钥。keytool必须是您的系统路径的一部分,因此可以通过启起动脚本对其进行定位。

解决方案

http://openjdk.java.net/install/Oracle下载JDK(不是JRE)。下载JDK之后,将SDK bin目录添加至您的系统路径。

容器错误:活动有效捆绑包列为不活动无效

条件

您的捆绑包处于活动状态有效,但是当您使用scr.list命令列出服务时,您的服务被列为不活动状态无效。

可能的原因

• 配置组态文件丢失。 • 服务中的项目未满足。 • 在您的捆绑包内部的permission.perm文件中存在错误条目。

可能的解决方案

• 将所需的服务 id==-1 配置组态文件添加到服务。
• 如果服务ID不是 -1,使用(scr.component{service#})命令回顾服务的详细信息。回顾未满足的项目列表并解决这些问题。
• 如果未满足的项目列表未列出原因但服务无效,可能是许可的问题。
o 如果您正在捆绑包中使用permissions.perm文件,它们可能不正确。您既可以删除permissions.perm文件,也可以添加所有许可: (java.security.AllPermission “” “”) 然后重试。
o 如果这样可以修复服务,然后在Predix Machine container location/configuration/machine/predix.prs文件中启用mbs.debug=10行,以便在控制台中显示用于解决许可问题的调试信息。

许可安全异常错误:拒绝访问

条件

出现以下许可安全异常错误:
java.security.AccessControlException: access denied (“java.io.FilePermission” “.”“read”)

原因

正在调用解决方案回调函数的Predix机器线程需要执行操作的许可。Predix机器捆绑包(已限制许可)尝试在超过其许可设置的回调函数中执行代码。您可以在捆绑包管理的线程中执行回调函数代码,您也可以将代码包装到如下解决方案中所示示例的访问代码中。

解决方案

将 AccessController.doPrivileged() 添加到您的解决方案应用程序中的回调函数方法中:
图片描述

Modbus适配器错误:SocketTimeoutException

条件

Modbus适配器出现以下异常:
图片描述

原因

Modbus适配器XML配置组态文件中规定的 unit id 或 register address 无效。在每个读取间隔内,Modbus适配器读取每个无效节点两次。如果多个节点无效,这就需要更多时间。

修复措施

确保 unit id 或 register address 在设备上有效,它们是在XML配置组态文件
图片描述

注:

参见配置组态Modbus机器适配器

容器升级故障排除

在升级Predix机器容器时您可能会遇到以下问题。

Predix.PRS文件脚本覆盖

条件

在执行Predix机器升级时,如升级Predix机器容器所述,有些配置组态文件被列入白名单而且在升级过程中不会被覆盖。这不包括predix.prs文件,该文件在升级过程中被覆盖。

原因

这是符合设计的行为有意为之,但是请参见可能解决方法的修复措施。

修复措施

考虑以下选项来防止在升级过程中覆盖predix.prs文件。
• 使预配置的组态predix.prs成为您的更新包的一部分。如果您上传相同的predix.prs文件,它会自行替换,不会干扰您目前的配置组态。另外,如果您需要更改配置组态,您可以通过EdgeManager在您的更新包中编辑predix.prs并将其推送到您的设备。
• 如果您不需要更新predix.prs,请勿将其包括在您的更新包中。更新程序覆盖配置组态,因此如果没有新的predix.prs文件要覆盖,就不会覆盖。
• 也可以将predix.prs添加到您设备的配置组态安装脚本的白名单中。这些脚本可以通过Predix EdgeManager进行编辑,也可以在上传软件包之前进行编辑。

验证

评论