某个项目,因为监控尚不完善,所以我时常会人肉查查状态,终于有一天发现了异常:
如图所示,服务器发送了大量的 reset,在我 watch 的时候还在发,多半有问题。
某个项目,因为监控尚不完善,所以我时常会人肉查查状态,终于有一天发现了异常:
如图所示,服务器发送了大量的 reset,在我 watch 的时候还在发,多半有问题。
某个项目把服务器从 CentOS 操作系统从 5 升级到了 7(3.10.0-693),一切都很顺利,直到我在服务器上闲逛的时候,无意间发现了一个「大问题」:网卡 eth0 在 RX 上存在丢包(dropped)现象,丢得还很有规律,每一两秒丢一个包!
如果要选 Linux 下最容易被忽视的命令,time 应该算一个。简单来说,它是一个用来计算命令运行时间的工具,之所以说它容易被忽视,一方面很多人根本不知道 time 的存在,而是习惯在命令启动前后记录两个时间戳,然后手动计算命令运行时间;另一方面很多人虽然知道 time 的存在,但是却并没有真正理解它的含义。
如果有人说你的 HTTP 接口响应慢,那可能是他的电脑慢,也可能是网络本身慢,还可能是你的服务器慢,总之想搞清楚到底是哪里慢并不是一件简单的事情,好在有一些小工具可以帮你快速做出正确的判断。
同事在使用 sftp 连接服务器的时候出现错误信息:session is down,已经自行检查了服务器地址,端口,用户名,密码等种种可能出现低级失误的地方,结果找不到原因。
如果你有几房姨太太的话,那么想让她们和平共处,多半是痴人说梦。对程序员而言,虽然他们不会有娶几个老婆的好运气,但是很可能会遇到在同一个系统里使用多个版本的软件的情况,一旦处理不好,同样会焦头烂额。
最近使用 pip 的时候感觉速度太慢了,感觉有必要改成豆瓣的豆瓣的镜像,可我记不清 pip 的配置文件路径了,当然可以用搜索引擎查询一下,不过还有更快的方法:strace!
shell> strace -eopen pip 2>&1 | grep pip.conf open("/etc/xdg/pip/pip.conf", O_RDONLY) = ... open("/etc/pip.conf", O_RDONLY) = ... open("/root/.pip/pip.conf", O_RDONLY) = ... open("/root/.config/pip/pip.conf", O_RDONLY) = ...
如此一来,我们很容易就能看出配置文件的路径,甚至还能看出多个配置文件的加载顺序。此外,通过此技巧还能看到一些意想不到的信息,比如 nginx 的例子:
shell> strace -eopen /usr/local/nginx/sbin/nginx 2>&1 | grep conf open("/usr/local/nginx/conf/nginx.conf", O_RDONLY) = ... open("/usr/local/nginx/conf/mime.types", O_RDONLY) = ... open("/etc/resolv.conf", O_RDONLY) = ... open("/etc/nsswitch.conf", O_RDONLY) = ...
除了 nginx.conf 等常见的配置文件,我们还可以发现其加载了 nsswitch.conf 等不常见的配置文件,通过研究这些细节,可以让我们更透彻的理解问题。
系统写好了,能不能顺利上线?一般来说我们需要做一些压力测试来判断。比如系统预计每天一百万的接口访问量,并且访问时段主要集中在早八点到晚八点,那么平均下来 RPS 大约是 22 次左右,不过用户的访问量通常不会很平均,假设峰值流量是平均流量的 3 到 5 倍的话,那么我们可以推断出项目要想顺利上线,RPS 至少应该达到 66+ 次,110+ 次更好。由此可见上线前用压力测试工具测试 RPS 是一个很重要的环节。
虽然百度的口碑并不好,但是不可否认的是,它一直是中文搜索中的霸主,所以对大多数中小型商业公司而言,都对百度蜘蛛的抓取行为予以放行,不过还有很多非法的蜘蛛,它们会通过 User-Agent 把自己伪装成百度蜘蛛,此时如果单纯以 User-Agent 来判断是否是百度蜘蛛就不合适了。虽然网上能找到很多现成的百度蜘蛛 IP 段,但是并不能确认它们的准确性,所以我打算自己收集,进而甄别真假百度蜘蛛。