单页面多次跨服务器连接mssql速度优化解决方案

场景:

0、原始所有数据库均为access,为了优化速度,将容量占比最大的文章表升级为mssql数据库,并且迁移到了另一台服务器;

1、程序与mssql数据库不在同一内网;

2、连接一次约200-400ms,程序首页进行了6次连接,导致页面响应时间长达2.2-2.6s;

 

问题分析:

将程序页面复制到mssql服务器,通过ip连接自身数据库6次,响应时间仅为200-400ms。将程序页面复制到其他web服务器,响应时间仍为2s+。说明与服务器性能无关,主要为网络问题。

单次响应时间长达200-400ms,应为请求通过各网络节点+web服务器防火墙、安全组出/入+sql服务器防火墙、安全组出/入时,累计产生的延迟。同时,每次请求都会重复这些步骤,最终导致响应总时间长达2s+。

 

解决方案:

将首页需要连接的6个模块内容的数据,在后台数据提交阶段,就同时保存到同服务器的专用access表里(正则表达式也在此环节应用,首页直接读取结果,不用每次访问都执行一次。此优化也能提升1s)。该表,仅保存首页需要读取的数据字段及内容,如6个模块的标题、mssql数据库的id、添加时间、及部分过滤后的content。

由于仅保存小部分刚需内容,所以该表数据库很小,响应速度很快。且该表内数据,仅最新的几条是实际使用。其余过期数据为冗余数据,有必要时,可全部清楚进一步提升响应速度。

 

总结:

该解决方案虽有点怪异,但针对该特殊场景,仍具有一定价值。缺点是增加了程序的复杂程度。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章