高并发下提高访问效率的常见手段
1)尽量使用缓存,包括用户缓存,信息缓存等,多花点内存来做缓存,可以大量减少与数据库的交互,提高性能。
2)用jprofiler等工具找出性能瓶颈,减少额外的开销。
3)优化数据库查询语句,减少直接使用hibernate等工具的直接生成语句(仅耗时较长的查询做优化)。
4)优化数据库结构,多做索引,提高查询效率。
5)统计的功能尽量做缓存,或按每天一统计或定时统计相关报表,避免需要时进行统计的功能。
6)能使用静态页面的地方尽量使用,减少容器的解析(尽量将动态内容生成静态html来显示)。
7)不要频繁的new对象,对于在整个应用中只需要存在一个实例的类推荐使用单例模式;对于String的连接操作,使用StringBuffer或者StringBuilder;对于utility类型的类通过静态方法来访问。
8)避免使用错误/异常的方式,如Exception可以控制方法推出,但是Exception要保留stacktrace消耗性能,除非必要;不要使用 instanceof做条件判断,尽量使用比的条件判断方式;使用JAVA中效率高的类,比如ArrayList比Vector性能好。
9)出现超时的情况,一般说明并发数量已经超过了数据库所能处理的极限,数据库无限等待导致超时,此时建议采用线程池的方案,支付宝的单号就是用的线程池的方案进行的。数据库update不是一次加1,而是一次加几百甚至上千,然后取到的这 1000个序号,放在线程池里慢慢分配即可,能应付任意大的并发,同时保证数据库没任何压力。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.