应用反映缓慢,按出现问题的情况分:
一,硬件资源没充分利用
1.程序问题,查程序是否有锁的竞争
2.程序没有充分利用硬件资源,本来有双核的,却使用单线程;没有用缓存;数据库链接没有用缓存池
二,硬件资源有充分利用,但利用得不正确
1,程序中线程空循环,没有等待,而造成CPU的SU时间过多
2,程序中线程切换频繁,造成CPU的SY时间过多
3,程序向大文件写内容或写文件过于频繁,造成CPU的WA时间过多
4,程序用在和数据库建立链接的网络时间过多,造成CPU的DA时间过多
三,硬件资源利用充分,且利用的方式正确
1,垂直伸缩:加内存,升级为多核CPU
2,水平伸缩:增加服务器
1)如在增加的服务器上部署完整的应用,则称:集群
2)如在增加的服务器上有部署应用的部份组件,EJB,则称为分布式
3)多台服务器的分配策略:哪台空闲则分向哪台,如是取图片之类的静止内容,则固定分向某台
4)增加为多台后,应用要做相应的调整:重写HTTP SESSION,用MEMCACHE实现;使用分布式缓存MEMCACHE;上传的文件要放在特定的文件服务器中,文件服务器做分布式
四,由于所依赖的外部系统,如数据库,反映缓慢所导致
1,数据库的链接数不能水平伸缩,减少与数据库打交道的次数
1)页面缓存
2)页面部件缓存
3)数据缓存
4)按功能拆分数据库,如商品一个库,用户一个库
2,当数据量庞大时,查询速度降低
1)折分表,安装多一台数据库服务器,再复制一个相同的数据库
2)多个数据库采取的策略为:一个数据库作主数据库,只进行写操作,另外一个数据库作为从库,只进行读操作,两者中的数据可进行对称复制或非对称复制