环境:
java 1.7
SSM架构
Oracle 11g 数据库
tomcat 部署
服务器操作系统是linux,具体版本未知
业务情景:
上传、查看图片的一个页面功能。由于没有专门的服务器,全家老小都在一个oracle数据库里,因此要将图片转为base64格式存在数据库里(clob类型)。开发的时候自测上传和查看都没问题,上传一般会消耗十几秒,而打开页面会加载十几个压缩图(保存前压缩,保存时向数据库存原图base64和压缩图base64),两三秒就能出来。上传和获取缩略图的代码都在同一个类中。
问题情景:
某日,客户集中进行上传,上传并发量推测为几十,此时打开页面会出现明显延时,上传是否受影响不清楚。
因为是公司项目,不方便贴出代码,请见谅。
尝试过的方法 :
因为出现明显卡顿,我用自己的电脑运行项目进行访问(本地项目运行时连接的数据库就是生产数据库),发现加载页面并无卡顿。由此我推测卡顿问题与数据库性能无关,可能是并发的访问请求争抢服务器与数据的连接数造成的。但由于我经验极少,不知道该从什么角度入手分析这个问题,且该并发情景很可能只发生这一次,客户和上级都没有要求对此进行优化。原本想通过线程池限制上传并发数,但因为不要求优化就没能进行实验。
我想要达到的结果:
尽管不需要优化,我还是想知道该如何分析并解决此类问题,以免以后再遇到。这里希望加载页面不受明显影响,上传速度可以被牺牲,因为加载页面原本时间短,而上传原本就很耗时,保证加载速度可以有效保护用户体验。