分类目录归档:网络

监控的盲点

【背景】
公司已经有较为完善的监控手段。monitor,通过累积量等一维数据监控自身的情况;智能监控,通过多维数据统计成功率和时耗。当然我们一直认为“一切尽在掌握”。

【问题】
某业务B_T的调用方发现出现超时的情况,排除网络问题,在我们看来只可能是后端服务S_T出问题了。而后查询对应的后端自身服务monitor监控正常,智能监控也变化ok。最后经后端童鞋深入排查,发现是自己server假死了。那么问题来了:
1) 为啥监控没啥变化
假死的server,在LB里面权重被放低了,所以请求量就少了,咋眼看去,monitor视图请求量几乎没变化(减少的很小),因此没有产生告警。而因为假死,所以正常的请求并未被S_T处理,所以智能监控不会被上报,成功率和时耗没有变。
2) 为啥其他业务没太大影响
S_T为很多业务服务,量大的服务,由于成功率都很高,所以通常不会有告警。而量小的业务(或者长尾业务)却很容易受到波动。
3) 为啥没有被LB完全踢掉
这个跟后端S_T的异常姿势有关系,由于是假死,偶尔处理一个请求,LB探测到S_T还alive,又会扔正常的业务数据过来,挂一会儿,又踢掉,周而复始。

【思考】
虽说根本上是后端的server开发者的问题,但是后台开发,监控为王。没有完美的程序,只有不完美的监控。这里暴露出来监控的一些特点,就是不能简单的通过自身的监控上报来判断服务质量,这样就会存在上诉的盲点,监控应该是一个纵深,立体化的过程。将调用方视角的后端服务质量纳入后端服务的监控范围,整合上下游的监控或许才能更加精准的为后端服务保驾护航。

linux下双网卡的ipv6设置问题(教育网)

对于教育网用户,双网卡情况下,网卡A走路由器上外网,网卡B走寝室网口上内网及ipv6

正常的隧道脚本

ip tunnel add sit1 mode sit remote 高校隧道地址 local 网卡B本地IP
ifconfig sit1 up
ifconfig sit1 add 2001:da8:6000:ff:0:5efe:网卡B本地IP/64
route -A inet6 add 2000::/3 gw fe80::5efe:高校隧道地址 sit1
在单网卡情况下,上ipv6没问题,但是双网卡下由于路由问题,就会导致ipv6隧道会走网卡A
的网关
添加一条路由解决问题:
route add 202.115.255.242 gw 网卡B本地IP

获取进程网络流量思路

网卡流量与基本特性均可在系统文件下读取或者通过C的socket库函数找到,唯独对获取整个进程的网络流量无从下手

无意中看到nethogs这个软件,可以统计进程的网络流量,粗略的看了下代码,基本思路:

获取进程pid,根据pid遍历/proc/pid/fd/下的所有socket描述符

通过ll命令查看是“19 -> socket:[1016545]”这种形式:

19是个网络套接字的描述符,socket:表明这是一个socket套接字,1016545是这个socket的nodeid

这个nodeid对应于/proc/net/{tcp, udp, tcp6, udp6}文件中的一行

例如:

5: 6401A8C0:C754 00000000:0000 0A 00000000:00000000 00:00000000 00000000     0        0 1016545 1 eeea6400 299 0 0 2 -1

根据这些信息可以获得进程所有网络描述符的通信情况,然后nethogs底层是通过libpcap来获取每个package长度来

计算一定时间内的网络数据流量总和,这部分还没细看,最近会慢慢研究下

浏览器内核(转)

浏览器最重要或者说核心的部分是“Rendering Engine”,可大概译为“解释引擎”,不过我们一般习惯将之称为“浏览器内核”。负责对网页语法的解释(如HTML、JavaScript)并渲染(显示)网页。

不同的浏览器内核对网页编写语法的解释也有不同,因此同一网页在不同的内核的浏览器里的渲染(显示)效果也可能不同,这也是网页编写者需要在不同内核的浏览器中测试网页显示效果的原因。

几种常见的浏览器内核简介:

Trident:Windows 下的 IE 浏览器使用的内核代号。除 IE 外,众多的 IE Shell(如 Maxthon )都使用这个内核。

Gecko:Mozilla Firefox 浏览器使用的内核代号。使用 Gecko 内核的浏览器也有不少,如 Netscape 、MozillaSuite/SeaMonkey 等。另外,Mozilla Thunderbird 也使用 Gecko 。

Presto:Opera 浏览器使用的内核代号,这是目前公认网页浏览速度最快的浏览器内核。

KHTML/WebCore:Konqueror/Safari 浏览器使用的内核代号。Konqueror 是 X 协议下的 KDE 桌面环境使用的浏览器和资源管理器,可以用在 Unix/Linux/BSD 系统中,据说 KDE 4.0 以后会有向 Windows 移植的计划;Safari 则是 Apple 用户中最受欢迎的浏览器。