之前参与了系统调优,感觉挺有收获了,现在记录一下。
处理xml时,理清楚报文格式,避免使用jdom解析
我们在做压测的时候,发现有一个程序响应非常慢,使用jstack定位到慢的地方:解析xml报文。xml报文存储的是数据信息,存储的格式很简单。但是为啥这里会出现问题?我想可能是tps高的情况下,使用jdom解析xml时,会将整个xml报文整理成对象,这个操作即耗cpu又耗内存。我们就尝试使用最简单的字符串截取的方法,实现xml解析,tps果然提高了很多。
收获
在不同系统间做交互时,如果传递的信息比较简单,建议使用格式化的字符串,避免使用xml,json。
避免使用正则
我们在做一个功能的时候需要将一个以\t分隔的字符串的第某一位取出来。实现方法是:使用Stirng的split方法,将字符串转成数组,然后根据下标位置取出需要的数据。因为split底层还是使用的正则做的字符串分隔,这是非常消耗cpu的。我们尝试使用字符串截取的方式,实现了这个功能,tps得到了很大的提升。
收获
让你舒服的方法肯定不是性能最好的。
避免new对象,尽量可以控制创建对象的数量
我们格式化日期是经常使用simpledateformat对象,当时写的方法是每一次调用格式化日期都会new一个对象,高tps的情况下,new的对象多,多次gc,对影响程序的响应速度。我们尝试修改成单例,即每种日期模式只对应new一个对象,程序tps也得到了一定的提升。
收获
控制程序中实例化对象