商城如何解决高并发问题面试
Ⅰ java程序员面试时被问到:如何在j2ee项目中处理高并发量访问 该怎么回答 请仔细看题干再回答
你好,高并发系统的设计需要注意一下几点:
尽量使用缓存,包括用户缓存,版信息缓存等,多花点内存权来做缓存,可以大量减少与数据库的交互,提高性能。
用jprofiler等工具找出性能瓶颈,减少额外的开销。
优化数据库查询语句,减少直接使用hibernate等工具的直接生成语句(仅耗时较长的查询做优化)。
优化数据库结构,多做索引,提高查询效率。
统计的功能尽量做缓存,或按每天一统计或定时统计相关报表,避免需要时进行统计的功能。
能使用静态页面的地方尽量使用,减少容器的解析(尽量将动态内容生成静态html来显示)。
解决以上问题后,使用服务器集群来解决单台的瓶颈问题。
基本上以上述问题解决后,达到系统最优。
至于楼上有人提到别用JAVA来做,除非是低层的连接数过大(如大量的端口占用需求),这种情况下考虑直接C来写,其他的可以用JAVA来做。
Ⅱ 面试Java开发时问到高并发怎么处理的,还有sql优化有哪些办法,有哪位大神知道啊,新手!!
Java开发高并发的处理方法:
最基础的地方做起,优化我们写的代码,减少必要的资源浪费
避免频繁的使用new对象,对于整个应用只需要存在一个实例的类,我们可以使用单例模式。对于String连接操作,使用StringBuffer或StringBuilder,对于工具类可以通过静态方法来访问。
避免使用错误的方式,尽量不用instanceof做条件判断。使用java中效率高的类,比如ArrayList比Vector性能好。
图片服务器分离
对于web服务器来说,图片是最消耗资源的,于是我们有必要把图片与页面进行分离,我们把图片放到独立的图片服务器。这样的架构可以降低提供页面访问请求的服务器系统压力,并且可以保证系统不会因为图片的问题而崩溃。在图片服务器上,我们可以对不同的配置进行优化。
缓存
具体接触过的缓存机制是hibernate的缓存机制。为了避免每次都向数据库中取得数据,我们把用户常常访问到的数据放到内存中,甚至缓存十分大的时候我们可以把内存中的缓存放到硬盘中。还有高级的分布式缓存数据库使用,都可以增加系统的抗压力。
分批传送
在做某项目的时候,一次传递的参数太多,而且数据库规定一次最多传递的参数最多是三万条,当时有五万条记录,那怎么传送呢?最终是分批传送,电梯里一次乘不下那么多的人,会报超重的bug,那就分批把人送上去。
还有一次在考试系统中,如果那么多的考试人员同时提交到数据库中,数据库的压力增大,有时会被down掉,当时采用的方法是使用ajax异步传输,没有等待考生点击提交按钮的时候,就把考生的答案自动提交,这样也避免了突然断电考生前面做过的题出现丢失的现象。
DB优化
在数据库设计的时候就要考虑到后期的维护,数据库三范式是我们设计数据库索要遵循的原则。
索引的建立:建立索引要适当,如果一个表经常用来被查询,对于增加和修改很少被用到,我们就可以为这个表建立索引,因为对于增加和修改和删除操作时,我们对索引的维护要大大超过索引给我们带来的效率。
表字段的类型选择要恰当。包括字段的长度、类型等,要根据实际存储的数据进行选择,长度不要过长,否则会影响效率。
外键要慎用,因为主键代表这一张表,而外键代表一群表,对表之间进行了关联,在删除修改等需要我们关联。
在数据库操作上。 尽量使用prepareStatement,少用Statement,因为PrepareStatement是进行预编译的。
connection设置为readOnly,Connection是对书库连接,属于重量级,我们使用即可。
连接池的使用,我们可以修改数据库默认的连接数。
Ⅲ 面试问题:面试的时候,问实际项目中如何处理高并发问
线程池控制线程数,事件循环实现非阻塞io,多利用缓存,分布式横向扩容。
Ⅳ 如何解决高并发问题
建议采用缓存处抄理,按照你说的这种数据量,基于redis的缓存完全可以满足,存取速度可以10W+的,另外,拟采用的hashMap 是ConcurrentHashMap还是其他,页面展示是增量查询还是直接所有的再查询一次,socket数据接收你是用的netty还是mina,这都需要经过仔细的斟酌考虑设计的。有这么大的并发的需求,完全可以考虑做分布式集群的,估计这只是领导想要的目标吧
Ⅳ 商城高并发怎么测试
工具非常简单易用,只需要设置几项内容就可以对于个服务端进行压测.在这里比较注意的就是测试内模式这里,工具主要容提供两种测试模式分别是
应答模式:当连接接收服务端响应后马上进行下一次请求消息发送
间隔模式:连接根据设置的间隔时间来进行发送请求消息
消息编辑
在发起测试之前还需要给工作添加测试消息,明确工具向服务器发送那些消息内容
Ⅵ java电商项目面试官问我高并发多线程怎么解决
这个很简单,高并发有多种解决方法:
1、从代码上分入手,必须得保证代码没有冗余,专不要有属废代码;
2、从服务器上入手,高并发一台服务器并发量有限,我们可以采用多台服务器来分担压力;
3、从存储方便入手,像我们一般高并发但是数据却可以不用存到数据库中的,我们就存在内存中,因为读内存的速度是数据库的N倍。
Ⅶ 商城如何处理高并发,怎么使用memcache做缓存
其实相于应用程序数据库间块内存区域些高频访问数据放其避免每都请版求数据库至权于所用memcachedredis自程序hashmap块区域共享且容易管理集群环境更便使用
些做直接数据序列化存redisstring或memcached些其做利用redis特数据结构存储些关系例用sorted set存排行榜string用计数set做些倒排索引、用户友关系类我觉些都称缓存
Ⅷ 今天被问到怎么解决高并发问题
建议采用缓存处理,按照你说的这种数据量,基于redis的缓存完全可以满足,版存取速度可以10W+的,另权外,拟采用的hashMap 是ConcurrentHashMap还是其他,页面展示是增量查询还是直接所有的再查询一次,socket数据接收你是用的netty还是mina,这都需要经过仔细的斟酌考虑设计的。有这么大的并发的需求,完全可以考虑做分布式集群的,估计这只是领导想要的目标吧
Ⅸ Java面试总结如何处理项目的高并发,大数据
这个很简单,高并发有多种解决方法: 1、从代码上分入手,必须得保证代码没有冗余,内不要有废代码; 2、从服容务器上入手,高并发一台服务器并发量有限,我们可以采用多台服务器来分担压力; 3、从存储方便入手,像我们一般高并发但是数据却可以不...
Ⅹ java程序员面试时如何回答“如何在j2ee项目中处理高并发量访问”
尽量使用缓抄存,包括用袭户缓存,信息缓存等,多花点内存来做缓存,可以大量减少与数据库的交互,提高性能。