腾讯云服务器告警ping不可达 腾讯云异常

icmp协议不可达指什么?

1.当路由器收到一份IP数据报但又不能转发时,就要发送一份ICMP“主机不可达”差错报文(ICMP主机不可达报文的格式如图6-10所示)。可以很容易发现,在网络上把接在路由器sun上的拨号SLIP链路断开,然后试图通过该SLIP链路发送分组给任何指定sun为默认路由器的主机。

创新互联建站是专业的长汀网站建设公司,长汀接单;提供做网站、网站设计,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行长汀网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!

2.在通过在路由器sun上运行netstat命令可以看到,当接通SLIP链路启动时就要在路由表中增加一项使用SLIP链路的表项,而当断开SLIP链路时则删除该表项。这说明当SLIP链路断开时,sun的路由表中就没有默认项了。但是我们不想改变网络上其他主机的路由表,即同时删除它们的默认路由。相反,对于sun不能转发的分组,对它产生的ICMP主机不可达差错报文进行计数。

3.在主机svr4上运行ping程序就可以看到这一点,它在拨号SLIP链路的另一端(拨号链路已被断开):

4.在主机b s d i上运行t c p d u m p命令的输出如图所示。

5.当路由器sun发现找不到能到达主机gemini的路由时,它就响应一个主机不可达的回显请求报文。 

如果把SLIP链路接到Internet上,然后试图ping一个与Internet没有连接的IP地址,那么应该会产生差错。但令人感兴趣的是,可以看到在返回差错报文之前,分组要在Internet上传送多远:

6.在发现该IP地址是无效的之前,该分组已通过了6个路由器。只有当它到达NSFNET骨干网的边界时才检测到差错。这说明,6个路由器之所以能转发分组是因为路由表中有默认项。只有当分组到达NSFNET骨干网时,路由器才能知道每个连接到Internet上的每个网络的信息。这说明许多路由器只能在局部范围内工作。

ping 主机不可达

如果是目的地不可达,则可能您的网卡本身没有连接;如果是超时,那么可能是您的网络本身不通或者对目的主机禁ping;如果是未知的主机名,那么可能是目的主机名不合法或该主机当前不在线。

试试删除网卡驱动,重启后先在自动获得IP地址的状态下ping A的地址,如果ping通,则再设置IP地址,不要让A与B的地址靠在一起。

ping指定的主机,当回响信息分别为目的地不可达、超时、未知的主机名时,分析各自可能的故障原因?

一、目的地不可达,可能出现原因:

1.对方服务器与外网断开连接;

2.对方服务器拒绝Ping入;

3.对方服务器拒绝Ping出;

4.自己计算机与外网已经断开连接。

二、超时,可能出现原因:

1、网卡安装或配置有问题。将网线断开再次执行此命令,如果显示正常,则说明本机使用的IP地址可能与另一台正在使用的机器IP地址重复了。如果仍然不正常,则表明本机网卡安装或配置有问题,需继续检查相关网络配置。

2、对方拒绝接收你发给它的数据包造成数据包丢失。大多数的原因可能是对方装有防火墙或已下线。

三、未知的主机名,可能出现原因:

1、对方主机不存在或者没有跟对方建立连接。

2、主机文件存在问题。

腾讯云带宽告警问题排查及解决

产品服务器设置了「外网带宽使用率 = 100%,统计粒度5分钟,连续1次满足条件则每1小时告警一次」告警策略,基本上我每天都收到多条告警信息。

放大一点查看数据:

服务器部署了 web 服务 和 用于存储图片资源,报表导出和资源(平均200KB左右,非 kb)一张,部分页面有时候会放好几张图片展示。如果是连续的浏览充电站、商城,或者导出报表,是很容易触发2次峰值而导致报警的。

刚才只是大约估计了一下可能的情况,排查问题还是要系统地去看,需要挑选了告警的时间区间,分别进行数据统计。

我们服务器对外的带宽服务有:

WEB 服务比较简单,nginx 上都有日志,可以通过日志的 bodysize 统计。其他两个是通过 socket 的,持续通讯的,所以我选择了数据日志的 log 进行大概统计。

以下是我的 nginx access.log 日志格式:

可以通过配置调整 ngx_http_log_module 的 log format,如:

可以看出 nginx 日志的 body_bytes_sent 是字节,所以可以通过以下指令查看数据量($10 是 body_bytes_sent 所在位置,需要根据实际调整;grep 内容是某一分钟的时间):

最终实际查看一天下来的流量也400MB,几个高峰的分钟段也就几M,都在预期合理的范围,并且形成不了持续的拥堵情况。

Web Socket 只有 connect 时的信息会写在 nginx access log 上,不过平时通讯的信息都有手动写相应的 access log(注意排除 业务的log信息)。经统计 web socket 的 access log 比较小,一天只有十几M的数据,基本可以忽略。

注意:心跳包也需要统计进去。

桩agent 是通过端口直连的,没有经过 nginx,log 比较分散,统计了几个大的agent的 log(只统计 access log),占用的大小都不大,基本不形成高峰。但由于数量多,没有最终确定某个时间段的高峰值。

通过 nginx 配置,限制最大的带宽,可以稍微缓解一次访问的压力。避免一个大文件的访问,就长期占用了所有的外网带宽。

Nginx 限流有两种方式:

ngx_http_limit_req_module 模块提供限制请求处理速率能力,使用了漏桶算法(leaky bucket)。下面例子使用 nginx limit_req_zone 和 limit_req 两个指令,限制单个IP的请求处理速率。

==在 nginx.conf http 中添加限流配置:==

==配置 server,使用 limit_req 指令应用限流==

上面例子限制 10r/s,如果有时正常流量突然增大,超出的请求将被拒绝,无法处理突发流量,可以结合 burst 参数使用来解决该问题。

burst 译为突发、爆发,表示在超过设定的处理速率后能额外处理的请求数。当 rate=10r/s 时,将1s拆成10份,即每100ms可处理1个请求。

此处,burst=20 ,若同时有21个请求到达,Nginx 会处理第一个请求,剩余20个请求将放入队列,然后每隔100ms从队列中获取一个请求进行处理。若请求数大于21,将拒绝处理多余的请求,直接返回503.

不过,单独使用 burst 参数并不实用。假设 burst=50 ,rate依然为10r/s,排队中的50个请求虽然每100ms会处理一个,但第50个请求却需要等待 50 * 100ms即 5s,这么长的处理时间自然难以接受。

因此,burst 往往结合 nodelay 一起使用。

nodelay 针对的是 burst 参数,burst=20 nodelay 表示这20个请求立马处理,不能延迟,相当于特事特办。不过,即使这20个突发请求立马处理结束,后续来了请求也不会立马处理。burst=20 相当于缓存队列中占了20个坑,即使请求被处理了,这20个位置这只能按 100ms一个来释放。

这就达到了速率稳定,但突然流量也能正常处理的效果。

ngx_http_limit_conn_module 提供了限制连接数的能力,利用 limit_conn_zone 和 limit_conn 两个指令即可。下面是 Nginx 官方例子:

limit_conn perip 10 作用的key 是 $binary_remote_addr,表示限制单个IP同时最多能持有10个连接。

limit_conn perserver 100 作用的key是 $server_name,表示虚拟主机(server) 同时能处理并发连接的总数。

需要注意的是:只有当 request header 被后端server处理后,这个连接才进行计数。

使用独立的云存储,专门存放资源文件。

Agent 与桩之间是通过外网连接的,可以考虑多加一台服务器,与 产品服务是一个内网的。Agent 先连接到一台转发服务器,与 ECMP直接通过内网连接。

端口转发参考:《Agent端口映像》

鉴于当前告警实际对访问的影响可忽略,将触发次数调整为2次再告警。(后面再也没有收到告警了~)

《 Nginx 的两种限流方式 》

《 常用的服务器日志分析命令 》


当前文章:腾讯云服务器告警ping不可达 腾讯云异常
当前路径:http://cdiso.cn/article/ddjgihh.html

其他资讯