1  从最基础的地方做起,优化我们写的代码,降低必要的资源浪费。






a、避免频繁的使用 new 对象。对于整个应用仅仅须要存在一个实例的类。我们能够使用单例模式。

对于String连接操作,使用      StringBuffer或StringBuilder,对于工具类能够通过静态方法来訪问。





b、避免使用错误的方式,尽量不用 instanceof 做条件推断。使用java中效率高的类。比方ArrayList比Vector性能好。



 



2  html静态化



我们通过一个链接地址訪问。通过这个链接地址。server相应的模块处理这个请求,转到相应的jsp页面,最后生成我们要的数据。

可是。假设上千万个请求的话,有太多的高并发请求,那么就会加重server的压力,最坏的情况是把serverdown掉。那么怎样避免这样的情况的出现呢?假设我们把最初对test.



do

的请求结果保存成一个html文件,然后每次用户都去訪问这个html文件,这样就不用再去訪问server了,server的压力不就降低了?



那怎样自己主动的生成静态页面,当用户去訪问,会自己主动的生成test.html ,然后再显示给用户。



3  图片server分离



对于webserver来说。图片是最消耗资源的。于是我们有必要把图片与页面进行分离,我们把图片放到独立的图片server。这种架构能够减少提供页面訪问请求的server系统压力,而且能够保证系统不会由于图片的问题而崩溃。在图片server上,我们能够对不同的配置进行优化。



4  缓存



详细接触过的缓存机制是hibernate的缓存机制。为了避免每次都向数据库中取得数据,我们把用户经常訪问到的数据放到内存中,甚至缓存十分大的时候我们能够把内存中的缓存放到硬盘中。还有高级的分布式缓存数据库使用,都能够添加系统的抗压力。






 



5  分批传送



在做某项目的时候,一次传递的參数太多,并且数据库规定一次最多传递的參数最多是三万条。当时有五万条记录,那怎么传送呢?终于是分批传送,电梯里一次乘不下那么多的人,会报超重的bug,那就分批把人送上去。



另一次在考试系统中,假设那么多的考试人员同一时候提交到数据库中,数据库的压力增大,有时会被down掉,当时採用的方法是使用ajax异步传输,没有等待考生点击提交button的时候。就把考生的答案自己主动提交。这样也避免了突然断电考生前面做过的题出现丢失的现象。



6  数据库集群



当面对复杂的应用。用户大量訪问的时候,一台数据非常快无法满足需求。于是我们须要使用数据库集群或者库表散列。






我们在应用程序中安装业务和应用或者功能模块将数据进行分离,不同的模块相应不同的数据库或表,再依照一定的策略对某个页面或者功能进行更小的数据库散列。



7  DB优化



a、在数据库设计的时候就要考虑到后期的维护。数据库三范式是我们设计数据库索要遵循的原则。






b、索引的建立:建立索引要适当。假设一个表经经常使用来被查询,对于添加和改动非常少被用到,我们就能够为这个表建立索引。由于对于添加和改动和删除操作时,我们对索引的维护要大大超过索引给我们带来的效率。



c、表字段的类型选择要恰当



包含字段的长度、类型等,要依据实际存储的数据进行选择。长度不要过长。否则会影响效率。






d、外键要慎用,由于主键代表这一张表,而外键代表一群表,对表之间进行了关联。在删除改动等须要我们关联。



e、在数据库操作上



尽量使用prepareStatement,少用Statement。由于PrepareStatement是进行预编译的。



connection设置为readOnly。Connection是对书库连接。属于重量级,我们使用就可以。






连接池的使用。我们能够改动数据库默认的连接数。






8硬件上做到负载均衡


转载于:


1  从最基础的地方做起,优化我们写的代码,降低必要的资源浪费。






a、避免频繁的使用 new 对象。对于整个应用仅仅须要存在一个实例的类。我们能够使用单例模式。

对于String连接操作,使用      StringBuffer或StringBuilder,对于工具类能够通过静态方法来訪问。





b、避免使用错误的方式,尽量不用 instanceof 做条件推断。使用java中效率高的类。比方ArrayList比Vector性能好。



 



2  html静态化



我们通过一个链接地址訪问。通过这个链接地址。server相应的模块处理这个请求,转到相应的jsp页面,最后生成我们要的数据。

可是。假设上千万个请求的话,有太多的高并发请求,那么就会加重server的压力,最坏的情况是把serverdown掉。那么怎样避免这样的情况的出现呢?假设我们把最初对test.



do

的请求结果保存成一个html文件,然后每次用户都去訪问这个html文件,这样就不用再去訪问server了,server的压力不就降低了?



那怎样自己主动的生成静态页面,当用户去訪问,会自己主动的生成test.html ,然后再显示给用户。



3  图片server分离



对于webserver来说。图片是最消耗资源的。于是我们有必要把图片与页面进行分离,我们把图片放到独立的图片server。这种架构能够减少提供页面訪问请求的server系统压力,而且能够保证系统不会由于图片的问题而崩溃。在图片server上,我们能够对不同的配置进行优化。



4  缓存



详细接触过的缓存机制是hibernate的缓存机制。为了避免每次都向数据库中取得数据,我们把用户经常訪问到的数据放到内存中,甚至缓存十分大的时候我们能够把内存中的缓存放到硬盘中。还有高级的分布式缓存数据库使用,都能够添加系统的抗压力。






 



5  分批传送



在做某项目的时候,一次传递的參数太多,并且数据库规定一次最多传递的參数最多是三万条。当时有五万条记录,那怎么传送呢?终于是分批传送,电梯里一次乘不下那么多的人,会报超重的bug,那就分批把人送上去。



另一次在考试系统中,假设那么多的考试人员同一时候提交到数据库中,数据库的压力增大,有时会被down掉,当时採用的方法是使用ajax异步传输,没有等待考生点击提交button的时候。就把考生的答案自己主动提交。这样也避免了突然断电考生前面做过的题出现丢失的现象。



6  数据库集群



当面对复杂的应用。用户大量訪问的时候,一台数据非常快无法满足需求。于是我们须要使用数据库集群或者库表散列。






我们在应用程序中安装业务和应用或者功能模块将数据进行分离,不同的模块相应不同的数据库或表,再依照一定的策略对某个页面或者功能进行更小的数据库散列。



7  DB优化



a、在数据库设计的时候就要考虑到后期的维护。数据库三范式是我们设计数据库索要遵循的原则。






b、索引的建立:建立索引要适当。假设一个表经经常使用来被查询,对于添加和改动非常少被用到,我们就能够为这个表建立索引。由于对于添加和改动和删除操作时,我们对索引的维护要大大超过索引给我们带来的效率。



c、表字段的类型选择要恰当



包含字段的长度、类型等,要依据实际存储的数据进行选择。长度不要过长。否则会影响效率。






d、外键要慎用,由于主键代表这一张表,而外键代表一群表,对表之间进行了关联。在删除改动等须要我们关联。



e、在数据库操作上



尽量使用prepareStatement,少用Statement。由于PrepareStatement是进行预编译的。



connection设置为readOnly。Connection是对书库连接。属于重量级,我们使用就可以。






连接池的使用。我们能够改动数据库默认的连接数。






8硬件上做到负载均衡