`
mengqingyu
  • 浏览: 333096 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

海量数据、高并发优化方案

阅读更多
一.应用服务器负载均衡
1.链路负载均衡
通过DNS解析域名时,将客户端的访问解析成不同的IP,分配到不同的入口,同时尽可能保证所访问的入口是所有入口中可能较快的一个。
2.软件负载均衡
访问时生成页面的任务会被分配给其中一台服务器完成,这个过程要保证公正、公平、平均。
3.硬件负载均衡

二.页面优化
1.减少请求次数
通过合并CSS和Javascript文件来减少请求次数或是将资源文件分布在多个域名下来绕过浏览器并发加载的限制。
2.压缩CSS和Javascript代码。
通过对文件代码内容删除换行和空格来减少代码存储空间。
3.优化图片
通过对图片进行截取和缩放大小来优化图片,加快图片加载速度。
4.静态化
利用FreeMarker将数据库数据静态化成html文件来提高访问速度。适用场合:对于含有不要求实时性的内容的网页可使用,如网站首页,各模块首页的新闻,公告等等。

三.java设计优化
1.设计模式
单例模式、代理模式、享元模式、装饰者模式、观察者模式。
2.缓存
如:使用Ehcache可以结合AOP,做业务层的方法缓存,以类名、方法名、参数名作为key,结果对象作为value。适用场合:对数据不经常更新,查询方式比较固定。
3.缓冲
如:JDK的IO包中BufferedWriter
4.多线程
适用场合:群发邮件,大批量处理图片,写日志。典型的消费者生产者模式
5.对象池
如:数据库连接池C3P0、线程池Executors、Apache的对象池Jakarta Commons Pool
6.分布式缓存
分布式缓存框架Terracotta,可实现分布式session、EhCachc等共享。

四.java程序优化
1.String
String的replace、substring内存泄露问题,StringTokenizer取代split方法,charAt方法代替startsWith、endsWith方法,StringBuilder取代String并初始化预估的capacity。
2.List
查询优先使用ArrayList,插入删除优先使用LinkedList。如果插入数据在数组最后一位,则ArrayList性能好于LinkedList。遍历实现了RandomAccess接口的集合性能由高到低依次排序:索引下标>迭代器>增强for
3.Map
hashCode方法决定集合的性能。
4.优化集合访问代码
创建集合对象时,初始化预估的capacity可提高性能。尽量使用内部元素来取代方法调用。
5.NIO
使用MappedByteBuffer来取代传统IO来进行文件读写。
6.引用
在适当时候缓存可以用弱引用或是软引用来实现,如:WeakHashMap。
7.异常
尽量避免在循环体内使用异常捕获。
8.位运算代替乘除运算

五.数据库优化
1.分表
通过对记录ID取膜或时间维度的规则进行分表。
2.分区
Oracle数据库支持分区,可以根据某个列的数据规则进行分区。
3.中间表
将原数据根据想得到的目标数据进行一系列的处理做出一套中间表,直接从中间表中进行查询,通过定时调度定时更新中间表。适用场合:对数据内容实时性要求不高,如:数据分析。
4.历史归档
可根据时间整理出很少用到的数据集抽到历史表中,数据表只留常用数据,可以利用对象序列化反序列化来实现。适用场合:对历史数据极少访问。
5.列式存储
MySQL开源数据仓库Infobright,对高压缩比数据存储,查询速度可提高5~60倍,免费版不支持DML语句,不支持高并发,只能支持10多个并发查询,可通过load导入csv数据文件。适用场合:对数据不经常更新并且实时性要求不高,如:数据分析。
6.查询缓存
MySQL Query Cache,Oracle Result Cache,可通过修改数据库配置文件来实现查询缓存,sql语句作为key,结果作为value的缓存方式,当数据表发生改变时相应的cache就会失效。适用场合:对数据不经常更新,查询方式比较固定。注:支持表连接,但不支持函数
7.建索引
对于使用较复杂的sql,对大数据量表查询时候,可采用建索引的方式,将涉及到的查询条件字段,可提高查询速度。
8.sql优化
sql语句中,select后尽量明确字段名来代替*来减少查询列。尽量少使用in关键字,可通过left join和exists关键字取代。
9.存储过程
存储过程只需编译一次,适用场合:当对数据库进行复杂操作时。如:多表的查询,计算,更新。
10.数据库服务器集群,读写分离。

六.JVM调优。
1.确定堆内存大小(-Xmx、-Xms)。
2.合理分配新生代和老年代(-XX:NewRatio、-Xmn、-XX:SurvivorRatio)。
3.确定永久区大小(-XX:Permsize、-XX:MaxPermSize)。
4.选择垃圾收集器(CMS、G1等)、对垃圾收集器合理设置。
5.禁用显示GC(-XX:+DisableExplicitGC)。
6.禁用类元数据回收(-Xnoclassgc)。
7.禁用类验证(-Xverify:none)。
    8.jvm增加内存参数-Xms256M -Xmx1024M  -XX:MaxNewSize=512m -XX:MaxPermSize=512m

七.需求上解决:如果性能瓶颈的模块的需求是可有可无,可以考虑屏蔽掉此需求。

八.性能调优工具
1.JMeter、LoadRunner:性能测试、压力测试。
2.JConsole、JProfiler:监控堆信息、线程、永久区使用情况、类加载情况等。
3.Visual VM:故障诊断、性能监控。
分享到:
评论

相关推荐

    大型网站应用之海量数据和高并发解决方案总结.docx

    ### 大型网站应用之海量数据和高并发解决方案 #### 一、网站应用背景 随着互联网的迅猛发展,用户数量激增,对于网站而言,如何高效处理海量数据及应对高并发访问成为了关键技术挑战之一。在初期阶段,一个简单的...

    高并发海量数据解决方案(J2EE)

    在J2EE环境中,处理高并发和海量数据是一项复杂...以上就是处理高并发海量数据时,J2EE环境下的主要解决方案和技术要点。这些技术和策略的灵活运用,可以帮助开发者构建出能够应对大规模并发和海量数据挑战的高效系统。

    网站海量数据和高并发解决方案(一).docx

    综上所述,解决网站海量数据和高并发问题通常需要结合多种策略,包括但不限于缓存、静态化、数据库优化、负载均衡、分布式架构和异步处理等。具体实施时,需根据业务需求和现有基础设施进行选择和定制。

    高并发网站解决方案.doc

    《高并发网站解决方案:应对海量数据处理挑战》 在当今数字化时代,互联网应用与服务面临着前所未有的挑战,尤其是高并发场景下的数据处理能力。本文基于《高并发网站解决方案.doc》的文档内容,深入探讨了在高并发...

    JavaWeb并发编程与高并发解决方案.docx

    高并发场景下的系统设计需要关注如何高效处理海量请求,确保系统的稳定性和响应速度。 ##### 高并发特点 - **短时间内处理大量请求**:系统需要能够在短时间内处理成千上万甚至更多的用户请求。 - **资源优化**:...

    Java秒杀系统方案优化 高性能高并发实战

    ### Java秒杀系统方案优化与高性能高并发实战 在当今互联网快速发展的背景下,高并发、高性能成为了考验系统架构的关键指标之一。特别是在电商领域中的“秒杀”活动,短时间内会有大量用户同时访问,这对系统的稳定...

    基于SQL*Loader的海量数据装载方案优化.pdf

    但需注意,这种方式可能会影响其他数据库操作,因此在高并发环境下需谨慎使用。 6. **预排序和预分区**:如果数据源已经按主键或其他索引字段排序,SQL*Loader可以更快地加载数据。对于大型表,预分区策略也可以...

    海量数据处理优化

    海量数据处理涉及多个层面的技术优化,包括数据层架构的设计、数据同步方案的选择、图片存储与缓存策略、分布式缓存技术的应用、数据库性能优化等。通过综合运用这些技术和方法,可以有效提升系统的性能和稳定性,...

    海量数据处理与高可用性方案

    总的来说,海量数据处理与高可用性方案的核心是通过数据库优化、分区策略和智能负载均衡来提升系统性能和稳定性。通过这些措施,可以有效地解决大数据环境下的处理挑战,提高服务的可用性,降低故障风险,从而保障...

    高并发高流量网站架构

    【高并发高流量网站架构】是指在Web2.0时代,由于用户导向的网站设计理念,新兴网站面临的大规模用户访问和海量数据处理挑战。这类网站需要能够承受极高并发的访问,处理大量数据,并且需要具备良好的扩展性和高可用...

    构建海量数据仓库解决方案

    海量数据仓库的特点包括巨大的数据量、大量的并发用户、需要高稳定性以及复杂的管理需求。同时,常见的问题如ETL的性能、查询延迟、管理复杂性和硬件成本需要通过精心设计和优化来解决。 针对大型数据仓库的挑战,...

    互联网高并发+高可用+海量用户架构实践

    ### 互联网高并发+高可用+海量用户架构实践 #### 一、单点系统可用性架构与优化方向 **互联网架构师的任务**:确保架构设计紧密贴合业务需求,任何脱离实际业务需求的设计都难以发挥最大价值。 **互联网架构的...

    Mysql海量数据存储和解决方案之-分布式DB方案.docx

    在当今大数据时代,面对每日数十亿的页面浏览量(PV),传统的单机MySQL数据库无法满足高并发和海量数据的处理需求。为了解决这一问题,分布式数据库(分布式DB)方案应运而生,通过水平切分、垂直切分、主从复制(M...

    高并发系统优化

    ### 高并发系统优化 在当今互联网时代,随着用户数量的激增以及业务需求的多样化,高并发场景下的系统稳定性、响应速度变得尤为重要。本文将详细介绍如何针对高并发场景进行系统优化,涵盖单机优化、分层设计、...

    海量数据的设计(十三讲)

    这讲将关注于在处理大数据时如何调整数据库的初始化参数,以适应高并发、大数据量的场景,包括内存分配、并行度设置等。 第三讲:海量数据之分区 分区是数据库管理大规模数据的有效手段,可以改善查询性能和管理...

    05_能够支撑高并发+高可用+海量数据+备份恢复的redis的重要性.zip

    本资料包聚焦于如何利用Redis来支撑高并发、实现高可用性、处理海量数据以及进行有效的备份与恢复,以提升系统的稳定性和效率。 首先,让我们讨论高并发。在互联网应用中,处理大量并发请求是基础需求。Redis支持...

Global site tag (gtag.js) - Google Analytics