支撑高访问量
WEB应用随着访问量的增长,通常其瓶颈会出现在CPU或内存上,网络IO或磁盘IO出现瓶颈的几率较低!
增加CPU后:
要做到增加CPU后系统的服务能力线性增长,要求系统能够随着CPU的增加,响应速度提升或同时可用于处理请求的线程增加,主要下面三种情况,增加CPU后系统的服务能力无法线性增长
1、锁竞争激烈
锁竞争激烈造成很多线程都在等待锁,此时即使增加CPU,却无法让线程得到更快的处理!
2、用于支撑并发请求的线程数是固定的
java应用中,依靠多个线程来支撑高并发量,如启动的线程数是固定的,那么即使CPU增加了,系统的服务能力也不会提升!
3、单线程任务
增加CPU不会带来任何的提升
增加内存后:
增加能存后,主要有如下两种情况增加内存后无法是系统服务线性增长
1、cache的集合大小是固定的
系统通常会通过增加cache来提升性能,而为了避免资源消耗过多,多会限制cache的集合大小,如这个大小是固定的,增加能存无法起到应有的作用。
2、JVM堆内存是固定的
JVM堆通常是在启动参数中设定的,而过增加内存不调整JVM堆大小,增加能存后,系统的服务能力提升无法提升
支撑大数据量
数据量增加到一定程度后,数据库的读写速度大幅度下降,除了数据库软件本身要做到在CPU、磁盘或内存增加后提升响应速度外,从数据库本身也可以做一些优化,主要优化手段是分表。