跳至内容

当我使用会话管理器连接到 Amazon EC2 实例时,为什么会收到 "Plugin with name Standard_Stream not found" 错误?

3 分钟阅读
0

我尝试使用会话管理器(AWS Systems Manager 的一项功能)连接到我的 Amazon Elastic Compute Cloud (Amazon EC2) 实例。但是,我收到了 "Plugin with name Standard_Stream not found" 错误消息。

简短描述

如果 AWS Systems Manager Agent (SSM Agent) 无法创建建立会话所需的文件,您会收到以下错误消息:

"Your session has been terminated for the following reasons: Plugin with name Standard_Stream not found.Step name: Standard_Stream"

如果您的实例上的存储空间不足,或者您同时打开的文件过多,则通常会出现此问题。

要确定出现问题的原因,请检查您的系统日志以查找特定的错误消息。然后,根据您查找到的错误,执行以下故障排除操作。

解决方法

对 "No space left on device" 错误进行故障排除

根分区上必须具有足够的空间,以供 SSM Agent 创建启动会话所需的临时数据。如果您收到 "No space left on device" 错误消息,则必须增加根文件系统上的可用空间。首先,从根分区中移除未使用的文件。如果空间仍然不足,则可以使用弹性卷来增加 Amazon Elastic Block Store (Amazon EBS) 卷的大小。或者,使用以下方法之一在操作系统 (OS) 级别扩展根文件系统。

使用 SSH 或 EC2 Serial Console 扩展根文件系统

完成以下步骤:

  1. 使用 SSHEC2 Serial Console 连接到您的实例。
    **注意:**要使用 EC2 Serial Console,必须配置对 EC2 Serial Console 的访问权限。有关要求的更多信息,请参阅 EC2 Serial Console 的先决条件

  2. 要检查根分区上的可用空间,请运行以下命令:

    df -Th

    输出示例:

    $ df -Th
    
    Filesystem Type Size Used Avail Use% Mounted on
    
    devtmpfs devtmpfs 4.0M 0 4.0M 0% /dev
    
    tmpfs tmpfs 3.9G 0 3.9G 0% /dev/shm
    
    tmpfs tmpfs 1.6G 440K 1.6G 1% /run
    
    /dev/nvme0n1p1 xfs 8.0G 2.0G 6.0G 25% /
    
    tmpfs tmpfs 3.9G 0 3.9G 0% /tmp
    
    /dev/nvme0n1p128 vfat 10M 1.3M 8.7M 13% /boot/efi
    
    tmpfs tmpfs 782M 0 782M 0% /run/user/1000
  3. 要查看块设备和根分区的名称和文件系统类型等详细信息,请运行以下 lsblk 命令:

    lsblk -f

    输出示例:

    $ lsblk -f
    NAME          FSTYPE LABEL           UUID                                 MOUNTPOINT
    nvme0n1
    ├─nvme0n1p1   xfs    /               abcd123-abcd-1234-abcd-abcdef1234 /
    └─nvme0n1p128
  4. 要扩展分区,请运行以下命令:

    sudo growpart /dev/nvme0n1 1

    **注意:**请将 nvme0n1 替换为分区名称。

  5. 要验证是否已扩展分区,请重新运行 lsblk 命令。在输出中,确保分区大小与卷大小相同。

  6. 要扩展文件系统,请根据您的文件系统类型运行以下命令之一。
    ext4 卷:

    sudo resize2fs /dev/nvme0n1p1

    **注意:**请将 nvme0n1p1 替换为分区名称。
    XFS 卷:

    sudo xfs_growfs -d /

使用救援实例扩展根文件系统

如果您无法使用 SSH 连接到无法访问的实例,则在与无法访问的实例相同的可用区中创建一个救援实例。有关说明,请参阅**如何对因资源过度使用而未通过状态检查的 EC2 Linux 实例进行故障排除?**上的对 "No space left on device" 错误进行故障排除将根卷挂载到救援实例后,扩展文件系统

对 "Too many open files" 错误进行故障排除

如果超出 inotify 资源的最大限制,则 SSM Agent 无法创建建立会话所需的新文件描述符。如果同时打开的文件或文件描述符过多,或者内核的 inotify 子系统超出其最大实例或监视配额,则会出现此问题。有关更多信息,请参阅 man7 网站上的 inotify

要对此问题进行故障排除,请执行以下操作。

重启或重新启动您的实例

要重启所有进程并释放正在使用的 inotify 资源,请重启停止并启动实例。

**注意:**当停止或启动某个实例时,该实例的公有 IP 地址将发生变化。最佳做法是使用弹性 IP 地址(而不是公有 IP 地址)将外部流量路由到您的实例。如果您使用的是 Amazon Route 53,则在公有 IP 地址发生变化时可能需要更新 Route 53 DNS 记录

在停止并启动实例之前,请执行以下操作:

增加您的 inotify 配额

如果在重启或重新启动后仍然遇到问题,请完成以下步骤以增加实例上的 inotify 配额:

  1. 运行以下命令检查 inotify 配额:
    cat /proc/sys/fs/inotify/max_user_watches
    cat /proc/sys/fs/inotify/max_user_instances
    **注意:**默认情况下,max_user_watches8192max_user_instances128
  2. 要临时增加最大配额值,请运行以下命令:
    sudo sysctl fs.inotify.max_user_watches=newwatchesquota
    sudo sysctl fs.inotify.max_user_instances=newinstancesquota
    **注意:**请将 newwatchesquota 替换为 max_user_watches 的新配额,并将 newinstancesquota 替换为 max_user_instances 的新配额。上述命令会更新配额,在下次重启实例之前有效。最佳做法是先通过临时更改来测试更新后的值。
  3. 要使配额更新永久生效,请将以下参数添加到 /etc/sysctl.conf 文件中:
    echo "fs.inotify.max_user_watches = newwatchesquota" >> /etc/sysctl.d/20-fs-inotify.conf
    echo "fs.inotify.max_user_instances = newinstancesquota" >> /etc/sysctl.d/20-fs-inotify.conf
    **注意:**请将 newwatchesquota 替换为 max_user_watches 的新配额,并将 newinstancesquota 替换为 max_user_instances 的新配额。
  4. 重启实例以应用更改。

**注意:**最佳做法是在修改实例后监控系统性能,验证更新后的配额是否符合您的系统要求。

相关信息

为什么无法使用会话管理器连接到 Amazon EC2 实例?

在 Amazon EC2 实例上增加 Amazon EBS 卷的大小后,如何扩展 Linux 文件系统?

AWS 官方已更新 5 个月前