提升应用系统运行性能和服务能力

目录

1、数据库方面

2、应用服务器方面

3、客户端方面

4、网络传输方面

5、其他方面


 

1、数据库方面

1.1、配置连接池:合理设置连接池的保有量,增长量,连接保持时长(正确评估系统的并发量,高峰期访问量,减少连接创建与销毁的开销)

1.2、优化表设计:对高频率连接查询进行数据冗余(尤其是数据量极大的表、将需要连接查询的主表字段冗余至从表),以单表查询的方式提供高效查询(以存储空间换查询效率)

2、应用服务器方面

2.1、缓存配置:将经常访问且又极少变化的数据进行缓存处理(从而减少对数据库的访问),直接提供响应和结果返回。(可以直接用HashMap,也可以使用缓存框架EhCache等)

2.2、日志记录:去除控制台打印和error以下的日志输出(仅记录error级别的日志到日志文件中。),以减轻IO与服务器系统资源。

2.3、每日检查错误日志,解决错误的问题,保证系统稳定运行无可控异常。

2.4、足够的服务器内存配置(监控系统内存使用情况,合理增加堆内存的配置,减少cg。)

3、客户端方面

3.1、利用客户端缓存:如:js、css文件缓存,ajax请求缓存等,减少客户端对服务器的请求量(对js、css等进行参数变更设置,以解决js、css文件的版本更迭 -- 参数不一样,客户端则会认为是不同的文件,则会进行重新下载(访问服务器)。-- 这里是很多新手程序员遇到缓存的问题,自己明明改了js的方法,但是为什么一直不生效,需要进行一次浏览器清理缓存才能生效。但是并不是所有用户都会自己清理缓存,我们也不应该要求用户手动清理缓存。

3.2、排序分组等复杂算法:把无需保密的或其有权限访问的数据运算、处理加工放至客户端进行(如:复杂的多规则排序,分组等),这样可以减轻服务器的压力,将其分摊至客户端,但相对增加了客户端的要求。(这种方式可以明显减少高并发,高访问量的服务压力,例:设运行需要消耗服务器X个资源,100个客户同时请求服务器,如果在服务器端运行则需要服务器提供100*X个资源。如果在客户端,则由每个客户端独自提供X个资源。只要客户端普遍都能支付得起X个资源,那么系统无论是100个客户还是10000个用户,那么访问都能稳定执行和响应。而放在服务端,则随着客户量的增加,系统很快就会到达瓶颈

4、网络传输方面

4.1、数据库数据传输:去除没必要的字段查询,使数据库仅返回有用的数据结构(列)。这样可以减少数据库服务器的网络带宽压力,同时也会减少数据库对磁盘的读取量(IO量),同时也会减少数据库对响应数据的缓存量(数据库会对请求结果进行缓存,在遇到相同的sql查询时,直接将内存中的结果返回给请求者,那么去除了没必要的字段,则会节省不少内存空间,也就减少的数据库缓存的清理频率。)

4.2、服务器数据传输:去除没必要的字段内容响应,使服务器仅返回有用的数据结构给客户端(Vo)。这样可以减少应用服务器的网络带宽压力,(如果是特意的封装Vo,则会增加服务器的资源开销,在这个矛盾之间,就看系统的并发量和访问量以及瓶颈的所在 -- 即,到底是网络导致了服务能力到达了瓶颈还是应用服务器CPU/内存资源无法提供更高的服务能力)(但,一般数据库查询时已经优化了字段传输,则此处的传输就不会需要太多的优化。)

5、其他方面

5.1、优质代码和SQL:这是对应工程师(数据库工程师、后端工程师、前端工程师)自身的经验与技能强度问题。

5.2、优秀的架构与布局:这是架构师自身的经验与技能强度问题。

 

你可能感兴趣的:(Java相关,前端,数据库,架构,性能,j2ee)