读《构建高性能web站点》后感

其实现在我这本书只看了一半,但是有些想法我觉得还是得记录下来。
我一直是做系统运维的,作者应该是开发出身。书的第二章和第三章主要是讲网络 传输和服务器并发处理能力。
虽然这2部分离非常专业还是差的比较远,但是我觉得作者分析的思路还是很不错
的。普通的系统运维人员一般处理问题就是man一下或者google一下,翻翻WIKI,
查查mail list。但是书的作者因为是开发人员,所以他的视角从一开始就是源 码,系统函数来判断。
其实这样做是非常正确的我觉得,毕竟所有服务器软件最终都是调用系统函数,而 Linux的优势不就是开放源码呀。
其实刚开始这种分析方法帮我解决了几个nginx的问题,首先是epoll,这个I/O模
型到底有哪些优势,为什么会产生epoll,它主要解决了哪些问题,而作者关于那 个面馆的比喻也非常不错,很形象。
另外一个问题是sendfile()方法,启用这个和不启用的区别在哪里? 而作者通过
strace工具分析也很不错。可以抓取到各个系统函数的调用时间和次数。而通过
strace分析后发现使用sendfile()方法后write()方法就没有了,而write()方法就 是把文件从用户空间往内核空间中进行写。
另外一个是到底开多少nginx进程好呢? 这个在apache中是不需要配置的,它会自
己根据链接情况增加和减少。nginx进程太少可能就会让其它cpu闲置着,而开启太
多还会导致频繁的上下文切换。虽然这些时间对于1秒种来说是非常微小的,但是 累计起来就大了。
看到一半为什么要写读后感主要是觉得以后排除问题,特别是性能方面的问题有了
全新的解决思路,而这个思路就导致了我必须看下linux内核的源码以及系统软件 的源码,当然wiki还是必须要参考的。
##############################
Best regards
Timo Seven
() UNIX System Admin & MySQL DBA