被忽视的time命令

如果要选 Linux 下最容易被忽视的命令,time 应该算一个。简单来说,它是一个用来计算命令运行时间的工具,之所以说它容易被忽视,一方面很多人根本不知道 time 的存在,而是习惯在命令启动前后记录两个时间戳,然后手动计算命令运行时间;另一方面很多人虽然知道 time 的存在,但是却并没有真正理解它的含义。

继续阅读

如何快速判断配置文件的路径

最近使用 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 段,但是并不能确认它们的准确性,所以我打算自己收集,进而甄别真假百度蜘蛛。

继续阅读