运维指南
运维指南
运维相关
实例相关故障
网络相关故障
性能相关故障
运维相关
Linux 运维
- Linux 常用操作及命令
- 设置自定义数据
- 挂载数据盘
- 环境配置
- 上传文件
- 软件安装
- 访问公网
-
Windows 运维
- 挂载数据盘
- 上传文件
- 软件安装
- 系统相关
实例相关故障
登录相关
无法登录云服务器
端口问题
故障现象:
端口远程连接失败。
解决方法:
可能由远程访问端口非默认端口或端口设置不一致所致。
详见端口问题导致无法远程连接 。
CPU/内存占用率高问题
故障现象:
使用云服务器时,出现无法登录、服务速度变慢、实例突然断开情况。
解决方法:
可能存在 CPU 或内存荷载过高的问题,检查资源占用情况。
Windows 云服务器详见 Windows系统CPU与内存占用率高导致无法登录 。
Linux 云服务器详见 Linux系统CPU与内存占用率高导致无法登录 。
外网被隔离问题
故障现象:
云服务器出现违规事件或风险事件时,被进行部分隔离。
解决方法:
详见 外网被隔离导致无法远程连接 。
外网带宽占用高问题
故障现象:
带宽跑满或跑高,导致无法登录。
解决方法:
详见 [外网带宽占用高导致无法登录](https://cloud.tencent.com/document/product/213/10334) 。
安全组设置问题
故障现象:
服务器 telnet 无法连接,排查防火墙、网卡 IP 配置无误,回滚系统后仍然无法连接。
解决方法:
详见 安全组设置导致无法远程连接 。
关联密钥后无法使用密码
故障现象:
云服务器关联密钥后,无法使用密码登录,排查防火墙、网卡 IP 配置无误。
解决方法:
云服务器关联密钥后,云服务器 SSH 服务默认关闭用户名密码登录,请您使用密钥登录服务器。
密钥登录方式可参见 SSH 密钥 。
远程登录网络级别身份验证
故障现象:
使用 Windows 系统自带远程桌面连接,有时出现无法连接到远程计算机的问题。
解决方法:
详见 远程登录网络级别身份验证 。
xshell 无法密码登录
故障现象:
使用 xshell 进行登录时,无法使用密码登录云服务器。
解决方法:
您在安装系统时已选择密钥登录方式,如何使用密钥可参考 SSH 密钥 如需采用密码方式登录,可重装系统时选择密码登录,或者进入登录计算机修改 sshd 配置文件。
Windows 实例远程登录时验证错误
问题描述
通过远程桌面连接登录 Windows 实例时,出现 “发生身份验证错误,给函数提供标志无效” 或 “发生身份验证错误。要求的函数不受支持” 的报错,如下图所示:
问题分析
由于微软于2018年3月发布了一个安全更新,此更新通过更正凭据安全支持提供程序协议(CredSSP)在身份验证过程中验证请求的方式来修复 CredSSP 存在的远程执行代码漏洞。客户端和服务器都需要安装此更新,否则可能出现问题描述中的情况。 如上图所示,以下三种情况会引起远程连接失败:
- 情况一:客户端未修补,服务器安装了安全更新,并且策略配置为 “强制更新的客户端”。
- 情况二:服务器未修补,客户端安装了安全更新,并且策略配置为 “强制更新的客户端”。
- 情况三:服务器未修补,客户端安装了安全更新,并且策略配置为 “缓解”。
解决方案
方案一:安装安全更新(推荐)
安装安全更新,更新未修补的客户端/服务器端。不同系统对应的更新情况可参见 CVE-2018-0886 | CredSSP 远程执行代码漏洞。
注意:
各操作系统进入【Windows 更新】的方法有所不同。本方案以 Windows server 2016 为例。
- Windows Server 2012:【开始】- 【控制面板】-【系统与安全】-【Windows 更新】
- Windows Server 2008:【开始】- 【控制面板】-【系统与安全】-【Windows Update】
- Windows10:【开始】- 【设置】-【更新与安全】
- Windows 7:【开始】- 【控制面板】-【系统与安全】-【Windows Update】
服务器端(即 CVM 实例)进行系统更新的操作步骤如下:
说明:
客户端本地的升级操作,请直接执行 步骤5。
- 登录 云服务器控制台。
- 在 “云主机” 页面中,找到目标 CVM 实例,单击【登录】。如下图所示:
- 在弹出的 “登录Windows云服务器” 窗口中,选择 “浏览器 VNC 方式登录”,单击【立即登录】。如下图所示:
- 在弹出的登录窗口中,选择左上角的 “发送远程命令”,单击 Ctrl-Alt-Delete 进入系统登录界面。如下图所示:
在操作系统界面,选择【开始】> 【设置】。如下图所示:
在弹出的 “设置” 窗口中,选择【更新与安全】。如下图所示:
- 在 “更新和安全” 中,选择 “Windows 更新”,单击【检查更新】。如下图所示:
- 根据界面提示,单击【开始安装】。
- 安装完成后,重启实例,完成更新。
方案二:修改策略配置
在已安装安全更新的机器中,将【加密 Oracle 修正】策略设置为 “易受攻击” 。操作步骤如下:
注意:
Windows 10 家庭版操作系统中,没有组策略编辑器,可通过修改注册表来实现。操作步骤请参见 方案三
在操作系统界面,选择【开始】>【运行】,输入 gpedit.msc。如下图所示:
说明:
也可使用 “Win+R” 快捷键打开运行界面。
按 Enter,打开本地组策略略编辑器。
- 在左侧导航树中,选择【计算机配置】>【管理模板】>【系统】>【凭据分配】,双击【Endcryption Oracle Remediation】。如下图所示:
- 在 “Endcryption Oracle Remediation” 窗口中,选择 “已启用”,并将 “Protection Level” 设置为 “Vulnerable”。如下图所示:
- 单击【确定】,完成设置。
方案三:修改注册表
在操作系统界面,选择【开始】>【运行】,输入 regedit。如下图所示:
说明: 也可使用 “Win+R” 快捷键打开运行界面。
按 Enter,打开注册表编辑器。
在左侧导航树中,选择 “计算机 > HKEY_LOCAL_MACHINE > SOFTWARE > Microsoft > Windows > CurrentVersion > Policies > System > CredSSP > Parameters”。如下图所示:
说明:
若该文件夹路径不存在,请手动创建。
右键单击 “Parameters”,选择【新建】>【DWORD(32位)】,并将文件名称命名为 “AllowEncryptionOracle”。
双击新建的 “AllowEncryptionOracle” 文件,将 “数值数据” 设置为 “2”,单击【确定】。如下图所示:
重启本地计算机。
Windows 实例远程登录连接被拒绝
问题描述
Windows 使用远程桌面连接 Windows 实例时,提示 “连接被拒绝,因为没有授权此用户帐户进行远程登录。”。如下图所示:
问题原因
该用户未被允许通过远程桌面连接方式登录 Windows 实例。
解决方案
- 登录 云服务器控制台。
- 在 “云主机” 页面的实例列表中,选择待登录的 CVM 实例,单击【登录】。如下图所示:
- 在弹出的 “登录Windows云服务器” 窗口中,选择 “浏览器 VNC 方式登录”,单击【立即登录】。如下图所示:
- 在弹出的登录窗口中,选择左上角的 “发送远程命令”,单击 Ctrl-Alt-Delete 进入系统登录界面。如下图所示:
- 在操作系统界面,选择【开始】>【运行】,输入 gpedit.msc。
- 按 Enter,打开本地组策略略编辑器。
- 在左侧导航树中,选择【计算机配置】>【Windows 设置】>【安全设置】>【本地策略】>【用户权限分配】。如下图所示:
- 在右侧的策略列表中,双击打开【允许通过远程桌面服务登录】策略的属性。
- 在 “允许通过远程桌面服务登录 属性” 窗口中,检查允许通过远程桌面服务登录的用户列表是否存在需要登录的帐户。如下图所示:
- 是,请 提交工单反馈。
- 否,请执行下一步。
- 单击【添加用户或组(U)】,打开 “选择用户或组”。
- 在 “选择用户或组” 的窗口中,输入需要进行远程登录的帐户,单击【确定】。如下图所示:
Windows 实例无远程桌面服务进行登录的权限
问题描述
Windows 使用远程桌面连接 Windows 实例时,出现如下图所示的提示: 要远程登录,你需要具有通过远程桌面服务进行登录的权限。默认情况下,远程桌面用户组的成员有这项权限。如果你所属的组没有这项权限,或者远程桌面用户组中已经删除了这项权限,那么需要手动为你授予这一权限。
解决方案
- 登录 云服务器控制台。
- 在 “云主机” 页面中,选择连接异常的 CVM 实例,单击【登录】。如下图所示:
- 在弹出的 “登录Windows云服务器” 窗口中,选择 “浏览器 VNC 方式登录”,单击【立即登录】。如下图所示:
- 在弹出的登录窗口中,选择左上角的 “发送远程命令”,单击 Ctrl-Alt-Delete 进入系统登录界面。如下图所示:
- 在操作系统界面,选择【开始】>【运行】,输入 gpedit.msc。
- 按 Enter,打开本地组策略略编辑器。
- 在左侧导航树中,选择【计算机配置】>【Windows 设置】>【安全设置】>【本地策略】>【用户权限分配】。如下图所示:
- 在右侧的策略列表中,双击打开【拒绝通过远程桌面服务登录】策略的属性。
- 在 “拒绝通过远程桌面服务登录 属性” 窗口中,检查拒绝通过远程桌面服务登录的用户列表是否存在需要登录的帐户。
- 是,请将需要登录的帐户从列表中删除。
- 否,请 提交工单 反馈。
Mac 远程登录 Windows 实例异常
问题描述
Mac 通过 Microsoft Remote Desktop 远程连接登录 Windows 时,提示 “The certificate couldn’t be verified back to a root certificate.”。如下图所示: 或者 Mac 远程桌面连接(Remote Desktop Connection)时,提示 “远程桌面连接无法验证您希望连接的计算机是的身份。”。如下图所示:
解决方案
通过浏览器 VNC 方式登录实例,修改实例的本地组策略解决,详细操作步骤如下:
- 登录 云服务器控制台。
- 在 “云主机” 页面中,选择连接异常的 CVM 实例,单击【登录】。如下图所示:
- 在弹出的 “登录Windows云服务器” 窗口中,选择 “浏览器 VNC 方式登录”,单击【立即登录】。如下图所示:
- 在弹出的登录窗口中,选择左上角的 “发送远程命令”,单击 Ctrl-Alt-Delete 进入系统登录界面。如下图所示:
- 在操作系统界面,选择【开始】>【运行】,输入 gpedit.msc。如下图所示: 说明: 也可使用 “Win+R” 快捷键打开运行界面。
- 按 Enter,打开本地组策略略编辑器。
- 在左侧导航树中,选择【计算机配置】>【管理模板】>【windows组件】>【远程桌面服务】>【安全】,双击【远程(RDP)连接要求使用指定的安全层】。如下图所示:
- 在弹出的 “远程(RDP)连接要求使用指定的安全层” 窗口中,将 “远程(RDP)连接要求使用指定的安全层” 设置为 “已启用”,并将 “安全层” 选择为 “RDP”。如下图所示:
- 单击【应用】。
- 单击【确认】。
远程桌面无法连接 Windows 实例
适用场景
适用 Windows 远程连接 Window 实例时出现如下图所示的提示: 远程桌面由于以下原因之一无法连接到远程计算机:
- 未启用对服务器的远程访问
- 远程计算机已关闭
- 在网络上远程计算机不可用 确保打开远程计算机、连接到网络并且启用远程访问。
可能原因
导致出现以上提示的原因包括(不限于以下情况,请根据实际情况进行分析):
- 实例处于非正常运行状态
- 无公网 IP 或公网带宽为0
- 实例绑定的安全组未放通远程登录端口(默认为3389)
- 远程桌面服务未启动
- 远程桌面设置问题
- Windows 防火墙设置问题
排查步骤
检查实例是否处于运行状态
- 登录 云服务器控制台。
- 在 “云服务器” 页面的实例列表中,查看实例是否处于【运行中】。如下图所示:
- 是,检查服务器是否设置公网 IP。
- 否,请启动该 Windows 实例,再测试远程连接是否成功。
检查服务器是否设置公网 IP
在云服务器控制台检查服务器是否设置公网 IP。如下图所示:
- 是,检查实例是否购买公网 IP。
- 否,请 申请弹性公网 IP 并进行绑定,再测试远程连接是否成功。
检查是否购买公网带宽
检查公网带宽是否为0Mb(最少1Mbps)。
- 是,请通过 调整网络 将带宽调整到1Mbps或以上,再测试远程连接是否成功。
- 否,请执行下一步。
检查实例远程登录端口(3389)是否放通
- 在控制台单击需要登录的实例,进入实例信息页面。
- 在 “安全组” 页签下,检查实例的安全组是否放通远程登录接口(默认远程桌面端口:3389)。如下图所示:
- 是,请执行下一步。
- 否,请编辑对应的安全组规则,进行放通。操作方法请参考 安全组操作指南,再测试远程连接是否成功。
检查Windows实例的系统设置
- 使用 VNC 登录实例,排查 Windows 实例的系统设置。 说明: VNC 登录详细请参考 登录 Windows 实例 中的 “使用 VNC 登录” 。
- 在登录的实例系统中,单击【开始】,在【运行】中输入 services.msc,并按 Enter,打开 “服务” 窗口。
- 双击打开 “Remote Desktop Services” 的属性,检查远程桌面服务是否已启动。如下图所示:
- 是,请执行下一步。
- 否,请将 “启动类型” 设置为 “自动”,“服务状态” 设置为 “正在运行”(即单击【启动】,启动服务)。
- 单击【开始】,继续【运行】中输入 sysdm.cpl,按 Enter,打开 “系统属性” 窗口。
- 在 “远程” 页签中,检查远程桌面是否设置为 “允许远程连接到此计算机(L)”。如下图所示:
- 是,请执行下一步。
- 否,请将远程桌面设置为 “允许远程连接到此计算机(L)”。
- 单击【开始】,选择【控制面板】,打开控制面板。
- 在 “控制面板” 中,选择【系统与安全】>【Windows 防火墙】,打开 “Windows 防火墙”。
- 在 “Windows 防火墙” 中,检查 Windows 防火墙状态。如下图所示:
- 为 “启用” 状态,请执行下一步。
- 为 “关闭” 状态,请 提交工单 反馈。
- 在 “Windows 防火墙” 中,单击【允许应用或能通过 Windows 防火墙】,打开 “允许的应用” 窗口。
- 在 “允许的应用” 窗口中,检查 “允许的应用和功能(A)” 是否勾选 “远程桌面”。如下图所示:
- 是,请执行下一步。
- 否,请勾选 “远程桌面”,放通“远程桌面”。
- 在 “Windows 防火墙” 中,单击【启用或关闭 Windows 防火墙】,打开 “自定义设置” 窗口。
- 在 “自定义设置” 窗口中,将 “专用网络设置” 和 “公用网络设置” 设置为 “关闭 Windwos 防火墙(不推荐)”。如下图所示:
- 对 Windows 实例完成以上设置,再次测试是否可以远程登录成功。
无法登录云服务器
Windows 系统 CPU 与内存占用率高导致无法登录
操作场景
本文档介绍 Windows 云服务器因 CPU 与内存占用率高导致无法登录的排查方法和解决方案。
说明: 以下操作步骤以 Windows server 2012 R2 为例,根据操作系统版本的不同,详细操作步骤略有区别。
操作步骤
登录云服务器
- 使用远程桌面登录方式( 即 mstsc 方式)登录云服务器。
- 在本地主机中,使用 Windows+R 快捷键,打开运行框。
- 输入 mstsc,按 Enter,打开“远程桌面连接”界面。
在弹出的“远程桌面连接”窗口中,输入云服务器公网 IP 与登录密码,登录云服务器。
注意: 若云服务器负载高,将无法建立远程连接,需通过 VNC 方式登录云服务器。 即 “登录 云服务器控制台 > 单击右侧操作栏的【登录】> 选择 VNC 方式登录云服务器”。
查看进程占用情况
- 在云服务器中,右键单击 “任务栏”,单击【任务管理器】。如下图所示:
在打开的“任务管理器”中,即可查看资源占用情况。如下图所示:
说明: 您可单击 CPU 或内存,以升序/降序对进程进行排序。
进程分析
查看任务管理器中进程,分析与排查问题,以采取对应解决方案。
- 业务进程占用大量资源。如 IIS 、httpd 、PHP 、Java 等。
- 若当前业务量确实较大,则高负载是正常情况,需要考虑适当扩容。
- 若当前业务量不大,则需要进一步结合业务报错日志来分析,可能由于参数配置不当,导致空耗资源。
- 系统进程占用大量资源。如 svchost.exe 等。
- 可以通过网络查询核实是否系统进程。
- 系统进程多数位于 C:\windows\system32 目录下,并且有完善的签名以及描述介绍。
- 重启系统 或 关闭不需要且安全的系统进程。
- 既非业务进程,亦非系统进程占用大量资源。
- 进程命名奇怪,没有签名描述,不在 C:\windows\system32 目录下,异常进程消耗资源,云服务器可能中毒。
- 检测服务器的安全情况,必要时考虑备份数据,重装系统。
Linux 系统 CPU 与内存占用率高导致无法登录
操作场景
本文档介绍 Linux 云服务器因 CPU 与内存占用率高导致无法登录等问题的排查方法和解决方案。
操作步骤
登录与查看系统负载
- 登录云服务器。
- 通过第三方软件远程登录 Linux 云服务器。
***注意:*** *Linux 云服务器处于 CPU 高负荷状态时,可能出现无法登录状态。*
- 通过 VNC 方式登录云服务器。 即 “登录 云服务器控制台 > 单击右侧操作栏的【登录】> 选择 VNC 方式登录云服务器”。 注意: Linux 云服务器处于 CPU 高负荷状态时,控制台可以正常登录。
- 通过第三方软件远程登录 Linux 云服务器。
- 查看系统负载。 输入
top
命令,查看%CPU
列与%MEM
列,确定占用较多资源的进程。
终止进程操作
- 分析列出资源占用情况,记录需要终止的进程 PID 。
输入
K
,再输入需要终止进程的 PID ,回车终止。此处以终止 PID 为 23 的进程为例。注意: 若回车后出现
kill PID 23 with signal [15]:
,则继续回车使用默认设定即可。操作成功后,界面会出现
Send pid 23 signal [15/sigterm]
的提示信息。按回车确认即可。
CPU 空闲但高负载情况处理
问题描述
load average 是 CPU 负载的评估,其值越高,说明其任务队列越长,处于等待执行的任务越多。 通过 top 观察,类似如下图所示,CPU 很空闲,但是 load average 却非常高。
处理办法
输入 ps -axjf
指令查看进程状态,并检查是否存在 D 状态进程。如下图所示:
注意: D 状态指不可中断的睡眠状态。该状态进程无法被杀死,也无法自行退出。若出现较多 D 状态进程,可通过恢复该进程依赖资源或重启系统进行解决。
kswapd0 进程占用 CPU 较高处理
问题描述
Linux 系统通过分页机制管理内存的同时,将磁盘的一部分划出来作为虚拟内存。而 kswapd0 是 Linux 系统虚拟内存管理中负责换页的进程。当系统内存不足时,kswapd0 会频繁的进行换页操作。换页操作非常消耗 CPU 资源,导致该进程持续占用高 CPU 资源。
处理办法
- 输入
top
指令,找到 kswapd0 进程。 - 观察 kswapd0 进程状态。 若持续处于非睡眠状态,且运行时间较长并持续占用较高 CPU 资源,可将问题转向内存不足来排查。
- 输入
free
,ps
等指令,查询系统内进程的内存占用情况,做进一步排查分析。 - 根据内存占用情况,可重启系统或终止不需要且安全的进程。
关机和重启云服务器
对云服务进行关机,重启的操作时候,有非常少的概率出现失败的情况,失败的情况下可以对云服务进行如下情况的排查和处理。
可能导致关机/重启失败的原因
- 请排查云服务器的 CPU/内存的使用情况,当出现 CPU 使用率过高,或者内存耗尽的情况下,可能会导致在控制台关机/重启失败。
- Linux操作系统可以检查是否安装 ACPI 管理程序,命令
ps -ef | grep -w "acpid" | grep -v "grep"
查看是否有进程存在,如果不存在请安装 acpid 模块。 - Windows 操作系统可以排查是否存在 WindowsUpdate 过长导致关机失败,因为 Windows 在做某些补丁操作时,会在关闭系统的时候做一些处理,这个时候可能存在更新时间过长导致关机/重启失败。
- 初次购买 Windows 时,由于系统使用 Sysprep 的方式分发镜像,初始化过程稍长。在初始化完成之前,Windows 会忽略关机/重启的操作而导致关机/重启失败。
- 操作系统安装某些了软件,或者中了木马,病毒后,系统本身遭破坏,也可能导致关机/重启失败。
强制关机/重启功能
腾讯云提供强制关机/重启的功能,在多次尝试对云服务器进行关机/重启失败的情况下可以使用该功能。该操作会强制对云服务器进行关机/重启操作,可能会导致云服务器数据丢失或者文件系统损坏。
云服务器控制台关机操作中选中强制关机
云服务器控制台重启操作中选中强制重启
无法创建 Network Namespace
问题描述
当执行创建一个新的网络命名空间(Network Namespace)的命令时,命令卡住,无法继续。dmesg 信息:“unregister_netdevice: waiting for lo to become free. Usage count = 1”
问题原因
这是一个内核 Bug。 当前,以下内核版本都存在该 Bug:
- Ubuntu 16.04 x86_64 内核版本为 4.4.0-91-generic;
- Ubuntu 16.04 x86_64 内核版本为 4.4.0-91-generic;
解决方案
升级内核版本到 4.4.0-98-generic,该版本已经修复该 Bug。
操作流程
查看当前内核版本。
uname -r
查看是否有版本 4.4.0-98-generic 可升级。
sudo apt-get update
sudo apt-cache search linux-image-4.4.0-98-generic
显示如下信息表示源中存在该版本,可进行升级:
linux-image-4.4.0-98-generic - Linux kernel image for version 4.4.0 on 64 bit x86 SMP
安装新版本内核和对应的 Header 包。
sudo apt-get install linux-image-4.4.0-98-generic linux-headers-4.4.0-98-generic
重启系统。
sudo reboot
进入系统,检查内核版本。
uname -r
显示如下结果,表示版本更新成功:
4.4.0-98-generic
网络相关故障
国际链路时延
问题描述
北美地域云服务器登录时延太长。 因全国国际路由出口较少及某些其他原因,并发数大时,国际链路会非常拥塞并导致访问不稳定,对此腾讯云已经向运营商进行反馈。目前,购买了北美地域云服务器的客户若需要在国内进行管理运维。短时间内您可使用在中国香港地域购买云服务器,然后通过中国香港地域 CVM 进行中转登录的方法解决该问题。
解决方法
购买中国香港地域的 Windows 云服务器,在自定义配置页中 选购,( Windows 操作系统可以支持登录北美 Windows 和 Linux 这两类云服务器,推荐选购)作为“跳板机”。
注意: 您需要购买至少 1 Mbps 的带宽,否则跳板机无法登录。
购买成功后,登录中国香港地域的 Windows 云服务器: 从 Windows 机器登录有公网 IP 的 Windows 云服务器 控制台 VNC 登录 Windows 云服务器
在中国香港地域的 Windows 云服务器内,登录您位于北美地域的 CVM :
- 登录北美地域的 Linux 云服务器 从 Windows 机器使用密码登录有公网 IP 的 Linux 云服务器 从 Windows 机器使用密钥登录有公网 IP 的 Linux 云服务器
- 登录北美地域的 Windows 云服务器 从 Windows 机器登录有公网 IP 的 Windows 云服务器 控制台 VNC 登录 Windows 云服务器
网络无法访问
网络问题、防火墙设置、服务器负载过高等都可能导致网站无法访问的问题。本文将介绍网站无法访问的问题如何一步步进行排查定位。
服务器原因排查
服务器关机、硬件故障、CPU/内存/带宽使用率过高都可能造成网站无法访问,因此建议依次排查服务器的运行状态、CPU/内存/带宽的使用情况。
- 查看服务器运行状态。登录腾讯云的控制台,查看实例的运行情况,确认实例正常运行。如果状态非运行中,建议进行重启等相应处理。
- 查看资源使用情况。在实例的详情页,单击监控 tab 查看CPU/内存/带宽的使用情况。如果存在 CPU 使用过高的情况,请参考 CPU 使用率过高排查(Windows 系统) 和 CPU 使用率过高排查(Linux 系统) 进行定位;带宽使用过高的情况,参考 带宽利用率过高问题处理。
- 检查 Web 服务相应的端口是否被正常监听。下面以 HTTP 服务常用的 80 端口为例,介绍 Linux 和 Windows 系统下应该如何检查:
- Linux 系统 使用 netstat 查看 80 端口的监听情况,具体命令如下所示,-t 显示 tcp 端口,-p 显示进程标识符和对应的程序名,-l 显示监听套接字。
- Windows 系统 使用 netstat -ano|findstr :80 查看 80 端口的监听情况。根据进程 ID 可以查看正在监听的进程名。 如果端口没有被正常监听,请检查 Web 服务进程是否启动或者正常配置。
- 检查防火墙设置,是否放行 Web 服务进程对应的端口。 Linux 查看 iptables 是否放行 80 端口,Windows 系统则检查 Windows 防火墙设置。
网络问题
排除了服务器问题后,网站无法访问还可能是网络问题引起,这里可以使用 ping 命令 ping 目的服务器的公网 IP,确认是否有丢包或延时高的情况。如果存在,使用 MTR 进一步进行排查。具体请参考 服务器网络延迟和丢包处理。
安全组设置
安全组是一个虚拟防火墙,可以控制关联实例的入站流量和出站流量。安全组的规则可以指定协议、端口、策略等等。没有放通Web进程相关的端口也会造成网站无法访问。排除了服务器和网络问题后,需要对实例所属的安全组的规则进行检查。 可以在实例的详情页安全组tab查看实例使用的安全组以及对应安全组具体的出站以及入站规则,确认是否放通Web进程相关的端口。如果没有放通相应的端口,请编辑绑定的安全规则,进行放通。
域名备案解析问题
排除了上述三个问题后,可以尝试使用服务器公网 IP 进行访问。如果使用 IP 可以访问,而域名访问失败,则可能是域名备案或者解析的问题。
- 国家工信部规定,对未取得许可或者未履行备案手续的网站不得从事互联网信息服务,否则就属于违法行为。为不影响网站长久正常运行,想要开办网站建议先办理网站备案,备案成功取得通信管理局下发的 ICP 备案号后才能开通访问。如果您的域名没有备案,则需先进行 域名备案。 如果使用的是腾讯云的域名服务,可以在 控制台 > 域名与网站 > 域名管理 查看相应的域名情况。
- 域名解析没有正确配置,导致请求没有路由到对应的 Web 服务器也会导致网站无法访问。如果您使用的是腾讯云的域名服务,可以在 控制台 > 域名与网站 > 域名管理 ,单击对应域名的解析按钮,查看域名解析详情。
网站访问卡慢
一次完整的 HTTP 请求包括域名解析、建立 TCP 连接、发起请求、服务器接收到请求进行处理并返回处理结果、浏览器对 HTML 代码进行解析并请求其他资源、最后对页面进行渲染呈现。这其中经历了用户本地客户端、客户端到接入服务器之间的网络节点以及服务器,这三个环节中的任意一个出现问题,都有可能导致网站访问卡慢。
一. 本地客户端问题确认
本地客户端访问播测网站(ping.huatuo.qq.com),测试本地访问各域名的速度,确认本地网络是否存在问题。测试结果如下图,从结果中可以获知访问各个域名的延迟,以及网络是否正常。如果不正常请联系您的网络服务提供商进行协助定位解决。
二. 网络链路问题确认
若第一步确认没有异常,请进一步确认本地客户端到服务器之前网络是否有问题。
- 本地客户端 ping 服务器公网 IP,确认是否存在丢包或延时高的情况。
- 若存在丢包或时延高的情况,进一步使用 MTR 进行诊断。具体参考 服务器网络延迟和丢包处理。
- 若 ping 服务器 IP 无异常,可以使用 dig/nslookup 查看 DNS 的解析情况,排查是否 DNS 解析引起的问题。也可以通过直接使用 IP 访问对应页面,排查是否 DNS 的问题导致访问慢。
三. 服务器问题确认
如果客户端和网络链路都没有问题,进一步对 Web 服务器进行分析。是否系统资源不足、中病毒木马或者被 DDoS 攻击了。
- 登录 云服务器控制台 ,在云服务器详情页,单击 tab【监控】,可以查看实例资源使用情况。
- 若 CPU/内存/带宽/磁盘使用率过高,可能是服务器自身负载较高或者中毒等问题导致,请参考对应的文档进行排查:
四. 业务问题确认
- 若通过第三步定位到是服务器负载引起的资源消耗增大,则属于正常情况。可以通过优化业务程序,或升级现有的服务器配置或购买新的服务器分担现有服务器的压力解决。
- 若上述三步都正常,则建议查看日志文件,定位具体是哪一步导致服务器响应慢,进行针对性的优化。
云服务器网络延迟和丢包
本地访问云服务器或云服务器访问其他网络资源卡顿,Ping 发现存在丢包或时延较高,可能是骨干链路拥塞、链路节点故障、服务器负载高,系统设置问题等原因引起。在排除云服务器自身原因后,可以使用 MTR 进行进一步诊断。 MTR 是一款强大的网络诊断工具,其报告可以帮助确认网络问题的症结所在。下面将详细介绍 Linux 和 Windows 系统下 MTR 的使用方法以及如何对报告结果进行分析,其余操作系统请自行搜索。 在文章中,运行 MTR 的主机称为源主机,被查询的称为目的主机,可以针对源主机的操作系统查看相关的章节。
WinMTR 介绍和使用方法(Windows)
WinMTR:适用于 Windows 系统的免费网络诊断工具,集成了 Ping 和 tracert 的功能,具有图形界面,可以直观地看到各个节点的响应时间和丢包情况。 官方下载地址:http://winmtr.net/download-winmtr/(请登录腾讯云云服务器,并通过云服务器中的浏览器进行访问。)
WinMTR 的安装和使用
- 根据操作系统类型下载对应的安装包,解压,双击运行其中 WinMTR.exe,界面如下图。
- 在 Host 处输入目的服务器 IP 或域名,然后单击 Start,进行测试。
- 运行一段时间后,单击 Stop 结束测试。
- 查看测试结果。
结果各项数据简介: Hostname:到目的服务器要经过的每个主机 IP 或名称。 Nr:经过节点的数量。 Loss%:对应节点的丢包率。 Sent:发送的数据包数量。 Recv:接收到响应的数量。 Best:最短的响应时间。 Avrg:平均响应时间。 Worst:最长的响应时间。 Last:最近一次的响应时间。
MTR 介绍和使用方法(Linux)
MTR:Linux 平台上诊断网络状态的工具,继承了 Ping、traceroute、nslookup 的功能,默认使用 ICMP 包测试两个节点之前的网络连接情况。
MTR 安装
大多数的 Linux 发行版本都预装了 MTR,如果没有可以通过以下命令进行安装:
CentOS:
yum install mtr
Ubuntu:
sudo apt-get install mtr
MTR 相关参数说明
-h/—help:显示帮助菜单。 -v/—version:显示MTR版本信息。 -r/—report:结果以报告形式输出。 -p/—split:跟 —report 相对,每次追踪的结果分别列出来。 -c/—report-cycles:设置每秒发送的数据包数量,默认是 10。 -s/—psize:设置数据包的大小。 -n/—no-dns:不对 IP 地址做域名解析。 -a/—address:用户设置发送数据包的 IP 地址,主要用户单一主机多个 IP 地址的场景。 -4:IPv4。 -6:IPv6。
下面是一份从本机到服务器(119.28.98.39)的 MTR 报告,以此为示例,对返回结果进行说明。
Host:节点的 IP 地址或域名。 Loss%:丢包率。 Snt:每秒发送的数量包的数量。 Last:最近一次的响应时间。 Avg:平均响应时间。 Best:最短的响应时间。 Wrst:最长的响应时间。 StDev:标准偏差,偏差值越高,说明各个数据包在该节点的响应时间相差越大。
报告结果分析及处理
上面已经介绍了不同操作系统下,网络诊断工具的使用。下面介绍如何对报告进行分析。 由于网络状况的非对称性,遇到本地到服务器的网络问题时,建议收集双向的 MTR 数据(从本地到云服务器以及云服务器到本地)。
MTR 结果分析步骤
- 查看目的地 IP 是否丢包,目的地没有丢包基本证明网络正常。中间节点丢包可能是链路节点的 ICMP 限制或其他策略引起,但事实上并未丢包。因此查看 WinMTR/MTR 的结果时,首先查看最后的目的地是否有丢包,如果没有丢包,这证明网络没有问题。
- 目的地发生丢包,这继续往上看,定位出第一次丢包的节点。
- 如果丢包发生在目的服务器,则可能是目的服务器网络配置不当引起,请检查目的服务器的防火墙配置。 如果丢包开始于前三跳,一般为本地运营商网络问题,建议检查访问其他网址是否存在相同情况,存在则反馈给您的运营商进行处理。相反如果丢包发生在接近目的服务器的几跳,则可能为目的服务器运营商的网络问题,请 提交工单 进行反馈处理,工单上请附上本地到目的服务器,以及目的服务器到本地的 MTR 测试截图,以便工程师进行定位。
实例 IP 地址 ping 不通
故障现象
本地主机 ping 不通实例可能由以下问题导致:
- 目标服务器的设置不正确
- 域名没有正确解析
- 链路故障
在确保本地网络正常的前提下(即您可以正常 ping 通其他网站),可根据以下操作进行排查:
处理步骤
检查实例是否配置公网 IP
说明: 实例必须具备公网 IP 才能与 Internet 上的其他计算机相互访问。若实例没有公网 IP,内网 IP 外部则无法直接 ping 通实例。
- 登录 云服务器控制台。
- 在“实例列表”页面中,选择需要 ping 通的实例 ID/实例名,进入该实例的详情页面。如下图所示:
- 在“网络信息”栏,查看实例是否配置了公网 IP。
检查安全组设置
安全组是一个虚拟防火墙,可以控制关联实例的入站流量和出站流量。而安全组的规则可以指定协议、端口、策略等。由于 ping 使用的是 ICMP 协议,请确认实例关联的安全组是否允许 ICMP。执行以下操作,查看实例使用的安全组以及详细的入站和出站规则:
- 登录 云服务器控制台。
- 在“实例列表”页面中,选择需要安全组设置的实例 ID/实例名,进入该实例的详情页面。
- 选择【安全组】页签,进入该实例的安全组管理页面。如下图所示:
- 根据查看实例所使用的安全组以及详细的入站和出站规则,判断实例关联的安全组是否允许 ICMP。
- 是,请 检查系统设置。
- 否,请将 ICMP 协议策略设置为允许。
检查系统设置
判断实例的操作系统类型,选择不同的检查方式。
- Linux 操作系统,请 检查 Linux 内核参数和防火墙设置。
- Windows 操作系统,请 检查 Windows 防火墙设置。
检查 Linux 内核参数和防火墙设置
说明: Linux 系统是否允许 ping 由内核和防火墙设置两个共同决定,任何一个禁止,都会造成 ping 包 “Request timeout”。
检查内核参数 icmp_echo_ignore_all
- 登录实例。
执行以下命令,查看系统 icmp_echo_ignore_all 设置。
cat /proc/sys/net/ipv4/icmp_echo_ignore_all
执行以下命令,修改内核参数 icmp_echo_ignore_all 的设置。
echo "1" >/proc/sys/net/ipv4/icmp_echo_ignore_all
检查防火墙设置
执行以下命令,查看当前服务器的防火墙规则以及 ICMP 对应规则是否被禁止。
iptables -L
若返回如下结果,表示 ICMP 对应规则未被禁止,请 检查域名是否备案。
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT icmp -- anywhere anywhere icmp echo-request
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
ACCEPT icmp -- anywhere anywhere icmp echo-request
若返回结果 ICMP 对应规则被禁止,请启用该规则。
检查 Windows 防火墙设置
- 登录实例。
- 打开【控制面板】,选择【Windows 防火墙设置】。如下图所示:
- 在 “Windows 防火墙”界面,选择【高级设置】。如下图所示:
- 在弹出的 “高级安全 Windows 防火墙”窗口中,查看 ICMP 有关的出入站规则是否被禁止。
- 若如下图所示,ICMP 有关的出入站规则被禁用,请启用该规则。
- 若 ICMP 有关的出入站规则已启用,请 检查域名是否备案。
检查域名是否备案
说明: 如果您可以 ping 通公网 IP,而 ping 不通域名,可能是域名没有备案或者域名解析的问题导致。
国家工信部规定,对未取得许可或者未履行备案手续的网站不得从事互联网信息服务,否则就属于违法行为。为不影响网站长久正常运行,如需开办网站,建议您先办理网站备案,待备案成功取得通信管理局下发的 ICP 备案号后,才开通访问。
检查域名解析
ping 不通域名的另外一个原因是由于域名解析没有正确地配置。如果您使用的是腾讯云的域名服务,您可以执行以下操作,检查域名解析。
- 登录 域名服务控制台。
- 在“我的域名”管理页面,选择需检查域名解析的域名行,单击【解析】,查看域名解析详情。如下图所示:
其它操作
若上述步骤无法解决问题,请参考:
- 域名 ping 不通,请检查您的网站配置。
- 公网 IP ping 不通,请附上实例的相关信息和双向 MTR 数据(从本地到云服务器以及云服务器到本地),提交工单 联系工程师协助定位。 MTR 的使用方法请参考 服务器网络延迟和丢包处理。
域名无法解析(CentOS 6.x 系统)
现象描述
对操作系统为 CentOS 6.x 的云服务器,进行重启或者执行命令 service network restart
之后,云服务器无法解析域名。 同时,查看配置文件 /etc/resolv.conf,发现 DNS 信息被清空。
可能原因
在 CentOS 6.x 操作系统中,因为 grep 版本的不同,initscripts 的版本低于 9.03.49-1 存在缺陷。
解决思路
升级 initscripts 到最新的版本,并重新生成 DNS 信息。
处理步骤
登录云服务器,执行以下命令,查看 initscripts 的版本情况确认是否存在该问题。
$rpm -q initscripts
initscripts-9.03.40-2.e16.centos.x86_64
如上例所示,initscripts 版本 initscripts-9.03.40-2 低于存在的问题版本initscripts-9.03.49-1,存在 DNS 被清空的风险。
执行以下命令,将 initscripts 升级到最新的版本,并重新生成 DNS 信息。
cat /dev/null > /etc/resolv.conf
service network restart
yum makecache
yum -y update initscripts
升级完成后,执行以下命令,检查 initscripts 的版本信息,确认升级是否成功。
$rpm -q initscripts
initscripts-9.03.58-1.el6.centos.2.x86_64
显示的版本不同于之前版本,且高于 initscripts-9.03.49-1,操作升级成功。
性能相关故障
CPU 使用率过高(Linux 系统)
CPU 使用率过高,容易引起服务响应速度变慢、服务器登录不上等问题。可以使用 云监控,创建 CPU 使用率阈值告警,当 CPU 使用率超过阈值时,将及时通知到您。 CPU 使用率过高排查的步骤大致为:定位消耗 CPU 的具体进程,对 CPU 占用率高的进程进行分析。如果为异常进程,可能是病毒或木马导致,可以自行终止进程,或者使用安全软件进行查杀;如果是业务进程,则需要分析是否由于访问量变化引起,是否存在优化空间;如果是腾讯云组件进程,请 发起工单 联系我们进行进一步定位处理。 下面将介绍 Linux 系统下如何定位出 CPU 使用率过高的进程。
定位工具介绍:top 命令
top:Linux 系统下常用的监控工具,用于实时获取进程级别的 CPU 使用情况。下图是 top 命令的输出信息。
上半部分显示 CPU 和内存资源的总体使用情况: 第一行:系统当前时间,当前登录用户个数以及系统负载。 第二行:系统总进程数、运行中进程数、休眠、睡眠和僵尸进程数量。 第三行:CPU 当前使用情况。 第四行:内存当前使用情况。 第五行:swap 空间当前使用情况。
下半部分以进程为维度显示资源的占用情况。 PID:进程 ID。 USER:进程所有者。 PR:进程优先级 NI:NICE 值,NICE 值越小,优先级越高。 VIRT:使用的虚拟内存大小,单位 KB。 RES:当前使用的内存大小,单位 KB。 SHR:使用的共享内存的大小,单位 KB。 S:进程状态。 %CPU:更新时间间隔内进程所使用的 CPU 时间的百分比。 %MEM:更新时间间隔内进程所使用的内存的百分比。 TIME+:进程使用的 CPU 时间,精确到 0.01s。 COMMAND:进程名称。
问题定位及处理
使用工具定位 CPU 使用率高的进程
前面介绍了 top 工具,下面介绍如何利用该工具定位出 CPU 使用率高的进程。
- 通过 SSH 或者 VNC 方式登录实例 说明:CPU 使用率过高,容易引起服务器登录不上,此时可以尝试使用 VNC 登录的方式。使用 VNC 登录实例的方法详见 登录Linux 实例 相关小节。
- 输入 top 命令查看系统负载。
- 输入大写 P,进程按 CPU 使用率降序排列;通过排序,可以方便得获得占用 CPU 资源较多的进程,进行进一步的分析。
- 分析占用 CPU 高的进程。
- 如果为业务进程,建议分析业务程序是否有优化空间,进行优化或者提升实例的资源配置。
- 如果为异常进程,实例可能中毒,可以自行终止进程、使用安全软件进行查杀或者进行数据备份后,重装系统。
- 如果为腾讯云组件进程,占用 CPU 超过 20%,请 发起工单 联系我们进行进一步定位处理。 常见的腾讯云组件有: sap00x:安全组件进程 Barad_agent:监控组件进程 secu-tcs-agent:安全组件进程
使用 top 命令结束进程
- 键入小写 k,输入想要结束进程的 pid(默认为排序第一的进程),回车。
- 操作成功,界面会出现 Send pid 984 signal [15/sigterm] 的提示信息,回车确认即可。
kswapd0 进程占用 CPU 较高的处理
kswapd0 是 Linux 系统虚拟内存管理中负责换页的进程。Linux 系统通过分页机制管理内存的同时,将磁盘的一部分划出来作为虚拟内存。当系统内存不足时,kswapd0 会频繁的进行换页操作。换页操作非常消耗 CPU 资源,导致该进程持续占用高 CPU 资源。 如果使用 top 命令,看到 kswapd0 进程持续占用大量 CPU 资源,可以进一步使用 vmstat,查看系统的虚拟内存的情况,如果 si,so 也比较高,证明系统存在频繁的换页操作,当前的系统物理内存已经不能满足需要,考虑升级系统的内存。
CPU 使用率过高(Windows 系统)
CPU 使用率过高,容易引起服务响应速度变慢、服务器登录不上等问题。可以使用 云监控,创建 CPU 使用率阈值告警,当 CPU 使用率超过阈值时,将及时通知到您。 CPU 使用率过高排查的步骤大致为:定位消耗 CPU 的具体进程,对 CPU 占用率高的进程进行分析。如果为异常进程,可能是病毒或木马导致,可以自行终止进程,或者使用安全软件进行查杀;如果是业务进程,则需要分析是否由于访问量变化引起,是否存在优化空间;如果是腾讯云组件进程,请 发起工单 联系我们进行进一步定位处理。 下面将介绍 Windows 系统如何定位 CPU 使用率过高的问题。
定位工具介绍
任务管理器:Windows 自带的应用程序和进程管理工具,展示有关电脑性能和运行软件的信息,包括运行进程的名称,CPU 负载,内存使用,I/O 情况,已登录的用户和 Windows 服务的信息。可以通过快捷键 CtrL+Shift+Esc,或开始菜单右键单击任务管理器,或运行中输入 taskmgr 的方式打开。 进程:系统上所有正在运行的进程的列表。 性能:有关系统性能的总体统计信息,例如总体 CPU 使用量和正在使用的内存量。 用户:当前系统上有会话的所有用户。 详细信息:进程选项卡的增强版,显示进程的 PID、状态、CPU/内存的使用情况等进程的详细信息。 服务:系统中所有的服务(包括并未运行的服务)。
问题定位及处理
CPU 使用率过高可能由硬件因素、系统进程、业务进程或者木马病毒等因素引起,下面介绍如何定位到占用 CPU 的具体进程以及对如何对进程进行分析处理。
- 登录到 Windows 服务器。 说明:服务器负载较高时,远程连接可能失败,建议使用 VNC 方式登录到服务器。如何使用 VNC 方式登录Windows服务器详见登录 Windows 实例中 VNC 登录小节。
- 使用 Ctrl+Shift+Esc 或开始菜单右键单击任务管理器打开任务管理器,切换到详细信息 tab,单击 CPU 使进程按照 CPU 使用率降序排列。
- 分析占用 CPU 多的进程。占用 CPU 多的可能为系统、业务抑或是异常进程,下面将列举这三种情况该如何处理:
- 系统进程。 当发现系统进程占用大量 CPU 资源时,需要仔细检查进程名,不少病毒会通过使用跟系统进程相似的名称,迷惑用户的眼睛。例如:svch0st.exe、explore.exe、iexplorer.exe,要仔细甄别。其次要注意检查这些进程对应的可执行文件对应的位置,系统进程一般位于 c:\windows\system32,并且会有完善的签名和介绍,在任务管理器对应的进程处右键,单击打开文件位置,可以查看具体可执行文件的位置。如果进程位置也不是在 c:\windows\system32 目录下,服务器可能中了病毒,请手动或者使用安全工具进行查杀。 常见的系统进程有:System Idle Process(系统空间进程,显示CPU空闲时间百分比)、system(内存管理进程)、explorer(桌面和文件管理)、iexplore(微软的浏览器)、csrss(微软客户端/服务端运行时子系统)、svchost(系统进程,用于执行 DLL)、Taskmgr(任务管理器)、Isass(本地安全权限服务)等。
- 异常进程。如果占用大量 CPU 资源的是一些命名很奇怪的进程,可能为木马病毒进程。建议使用搜索引擎进行搜索确认,例如 xmr64.exe(挖矿病毒)等。确认后使用安全工具进行查杀。
- 业务进程。如果发现占用 CPU 资源的是您的业务进程(iis、httpd、php、java 等),建议进一步分析,例如当前业务量是否较大,则高负载时正常情况,建议考虑升级服务器配置;否则可以考虑业务程序是否存在优化空间,进行优化。
带宽利用率过高
当发现实例带宽利用率过高时,往往希望能够具体定位出是哪一个进程占用了带宽,进而进行相应的分析处理。本文将介绍 Linux 和 Windows 系统下如何使用对应的工具进行定位处带宽使用高的进程。
Linux下查看进程的带宽使用情况
NetHogs 介绍
NetHogs 是 Linux 平台下的一个开源命令行工具,用来实时统计各进程的带宽使用情况。在 CentOS 下可以使用如下命令进行安装:
yum install nethogs
NetHogs 使用方法
终端输入以下命令可以看到 NetHogs 的可用参数以及具体用法。
nethogs -h
下面介绍下常用的参数:
- -d:设置刷新的时间间隔,默认为 1s。
- -t:跟踪模式。
- -c:更新次数。
- device:设置要监控的网卡,默认是 eth0。
运行时可以输入以下参数完成相应的操作:
- q:退出。
- s:按发送流量进行排序。
- r:按接收流量进行排序。
- m:切换是显示各进程使用的网络速率亦或是使用的流量,或者使用流量的计量单位。切换顺序为 KB/s > KB > B > MB。
下图展示了在 Linux 实例上运行 nethogs -d 10 并按发送数据量进行排序的结果,以此为示例,介绍 NetHogs 的输出。通过切换按发送/接收流量排序,可以很方便的获取占用发送/接收流量较多的进程。
PID:进程 ID。 USER:运行该进程的用户。 PROGRAM:程序名或IP端口号。 DEV:流量要去往的网络接口。 SENT:进程每秒发送的数据量。 RECEIVED:进程每秒接收的数据量。
Windows下查看进程的带宽使用情况
Windows 资源监视器
资源监视器是 Windows下以进程为单位了解 CPU、内存、磁盘、网络等资源的使用情况的工具。 可以在任务管理器,性能 tab 单击打开资源监视器打开。
或者在运行中输入 resmon.exe,确定打开
单击资源监视器的网络 tab,就可以看到每个进程的带宽使用情况。单击发送,按发送数据量进行排序,单击接收按照接收数据量进行排序。排序后,可以方便的看到具体是哪个进程占用了网络资源。
结果分析及处理
知道占用资源较多的进程后,需要分析进程所属的类型,然后进行: