之前写了高性能服务的总结,现在想完善一下,主要从以下四个方面讨论高性能的注意点:
1.cpu
- 服务使用tomcat作为web应用服务器,用nio方式代替bio方式,减少在高并发下上下文的切换;
- 减少同一台其他服务的干扰,尤其是cpu密集型的程序,例如爬虫、redis之类的;
- 空间换时间,能缓存的尽量缓存,减少cpu计算时间;数据量较大的结果可以做多级缓存;
- 尽量减少不必要对象的生成,减少gc时间;可以通过优化程序,使用线程池等方式;
- 在线的计算能离线的尽量离线提前计算好;
2.io
- 尽可能的少记录log,只记录关键log;
- 顺序读写替换随机读写;
- 异步化操作;
3.memory
- 保持机器内存充裕,尽量保持无swap;
- 给服务分配足够的内存,jvm参数调优;
- 进程内缓存的同时不要占用old区太多的空间,离major gc阀值保持距离(如果超过就等着频繁major gc吧),减少major gc的次数;
- 避免内存泄露(很幸运,编码的时候还没遇到过);
4.network
- 禁用nagle;
- 窗口拥塞的情况下限流;
- 适当增大初始化时拥塞窗口大小(没试验过,aliapp有此介绍);
总结的一般,算是笔记吧,与大家共勉;