性能优化总结

性能测试工具:
1. ab。
2. python脚本。
3. jstack,jstat,btrace,jsoncole。

数据层面:
1. 避免n+1,无论后端数据访问的是mysql,mongoDB还是cache,都应该避免循环远程IO操作。
2. sql提前做explain,注意索引的建立是否合理。
3. mysql合理的配置,比如禁用query cache,合理的innoDB cache等。
4  经常删的表,定期做一下表维护。

jython代码:
1.避免在热方法中动态import,因为存在全局锁。
2.避免使用jython原生的json,使用性能更好的jackson。
3.静态的数据尽可能提前初始化。
Class A{
        private static String someValue =null;
        static {
            someValue = initSomeValue()
        }
        public String getSomeValue(){
            return someValue;
        }
}
优于
Class B{
        private static String someValue =null;
        public String getSomeValue(){
            if(someValue!=null){
                return someValue
            }else{
                  someValue = initSomeValue()
                  return initSomeValue
            }
        }
}
4. 使用spring redis client需要修改默认pool配置。

系统层面:
1. 关注TCP/IP connection的连接情况,尽量使用连接池。
2. 任何外部资源的调用都需要设置timeout。
3. 选择合适的框架,避免选用一些性能很差的开源框架,并做性能评估。
4. 合理的GC参数设置,如堆内存大小设置,NewRatio,UseParallelGC
5. 利用多线程提升性能,如考虑并行加载。
6. 利用Http cache和ETag节约网络开销,开启http gzip,模板字符串压缩。
7. 不要使用自动产生SQL的ORM框架。
8. 网络传输避免使用java自带的序列化。

最后:
1. 不要过于关注性能,比如Java反射其实没有网上宣传的那么慢,关键是找到系统的性能瓶颈。
2. 了解一些系统正常指标,如平均响应时间,TPS,GC时间等。知道什么数据是快,才知道什么数据是慢。

猜你喜欢

转载自san-yun.iteye.com/blog/1942908
今日推荐