准备写第一本电子书,关于Java的性能调优
给自己定个计划,通过写作的方法总结Java性能调优方法的知识点。
前言
大概在10年前,也就是2004年,第一次接触到Java应用性能测试这个领域,算来有10年了。
不过遗憾的是,每次都研究的不深,大体上都是跑跑压力测试,看看测试结果,发现不能满足要求,就试试看能不能找到一些瓶颈所在,修复后继续测。一般重复几轮之后,发现性能能满足要求了(或者是难于达到更高),就欢天喜地的结束了——大多数情况下,性能调优通常都不是一件容易的事情,自然也往往不会令人愉悦。
前前后后,陆陆续续的调了这么多年,搞定过不少问题,也积累了一些经验。但是都停留在比较肤浅的水准,而且不成体系,还经常出现忘记上次是怎么搞定类似问题的尴尬……
另外,即使是这半桶水,也找不到合适的方式可以分享给团队成员。
所以打算将一些相关的知识,如工具,技巧,方法,理念,经验,教训……整理记录下来,一方面可以得到一份系统的资料用于团队分享和学习,另一方面也可以借此机会重新好好学习一下相关知识。
准备
关于写的方式,原本准备用blog的形式。但是前不久看到gitbook的介绍,感觉用gitbook用书的形式来写可以让内容整理的更好一些。
当然“书”这个词,似乎有些“大”。感觉上可能用教程,资料,tips之类的更贴切一些。不过不管了,虽然心虚了点,但是“书”这次词用着还是感觉更爽一些,就让我虚荣一把把。
计划
计划就是没有什么具体计划,内容方面大体上只能是想到哪写到哪,至于时间完全无法保证……
我只能说尽力了。毕竟前不久才给自己列了一份2014年的学习计划,沉甸甸的,让我压力很大。
如果一定要列一个计划,那么大概会有一下内容吧:
查看并监控系统资源
profile 分析
传统的性能调优方式,通过一些profile工具,在运行时收集并统计信息,以供分析。
线程分析
这个目前主要是通过 thread dump 分析,我的最爱了。
JVM 内存分析
感觉最有技术难度的就是这种事情了,成也不成貌似都没有把握,颇有碰运气的感觉。
不过说到底还是技术不到家,底气不足,希望借此机会加强一下。
IO 分析
包括文件IO和网络IO,在考虑数据库是否要算在里面?如果是的话,貌似范围大了点,尤其我也不是DBA……
问题
语言
有个很头疼的问题,就是用什么语言来写这本书:中文,还是english?
最后的想法是,放在github上的这份,先用中文,目标是整理好资料,先搞定内容。将来给公司整理的时候,再用我那蹩脚的english重新写一遍。
gitbook
第一次用gitbook,貌似网上也没有找到合适的教程或者资料,不清楚是否能如它自己描述的那么美好。
姑且信它,试试看。