关于未来网站访问速度及后台查询速度的优化建议

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 1、 数据库设计:数据库内所有表结构均添加索引 调整原因: 近日数据库压力很大,经查有些大数据量表的查询速度很慢,导致数据库服务器CPU一直持续90%-100%,将这些表添加索引后,CPU很快变正常。

1、 数据库设计:数据库内所有表结构均添加索引

调整原因:

近日数据库压力很大,经查有些大数据量表的查询速度很慢,导致数据库服务器CPU一直持续90%-100%,将这些表添加索引后,CPU很快变正常。

2、 将大数据表做分库、分区处理:

具体操作如下:

1)、将大数据表与主数据库分离,单独新建一个数据库,然后将这些表做分区;

2)、将数据插入到消息队列内,后台利用windows计划任务执行(5分钟执行一次)C#控制台程序将消息队列内的数据批量(消息队列内有50000条记录,一次性插入到数据表内)插入到相应的数据表内;

调整原因:

例如:用户访问日志,每次用户访问一个页面的时候我们之前的操作是直接将数据插入数据库,这样做对数据库的访问及操作太大,严重影响其他数据插入、查询的效率,利用分库、分区、消息队列完成此操作的好处是用户访问页面的时候不直接对数据库操作,而是在消息队列内积累一定数量的数据后批量插入数据库,只执行一次数据库操作,而且因为数据库分离的原因,对其他的查询及插入不会有影响;

3、 图片站点分离:

具体操作如下:

1)、新创建一个二级域名,并将二级域名做CDN处理;

2)、网站前台所有图片均使用这个二级域名;

调整原因:

用户访问网站时,如果图片和网站都放在一个站点内,会使得所有操作都在一个站点内进行,一个站点在CPU内的进程有限,都被图片使用了,会影响其他用户的正常下单及其他操作,这样操作的好处是可以减轻一个站点的压力分流到另外一个站点,如果有条件还可以多建立几个图片站点放到不同服务器上(但要做集群操作),JS及CSS也同样可以做这样的操作。

4、 数据缓存:

具体操作如下:

将一些不经常改变的数据,比如商品信息、商品图片信息、分类信息等在程序内做缓存处理。

调整原因:

近日发现业务数据库执行的SQL句中,图片的信息每分钟要查询数据库2000多次甚至更多,这样频繁的去查数据库会给数据库造成很大的压力,如果做了缓存处理之后就不会对数据查询那么频繁了,如果有条件的话可以配置一个高速缓存服务器(但目前还不知道如何操作)

5、 CSS、JS、图片缓存问题:

具体操作如下:

每次图片、CSS、JS有调整后上传覆盖后,将页面内这些文件后面增加版本号,例如一个图片名称为test.jpg的图片被覆盖后在页面上这个图片后面增加版本号:test.jpg?v=1000,CSS、JS同理。

调整原因:

因为有的时候客户在一天内频繁替换一张图片,而替换后由于CDN缓存问题导致图片一直维持原来的状态,无法变为替换后的图片,这样做的是为了告诉CDN服务器这个图片有改变了,需要CDN重新读取,而不是读取缓存,增加版本号后图片马上就会变为新替换的图片。

6、 CSS、JS压缩问题:

具体操作如下:

利用程序,将页面内所有JS合并为1个JS并进行压缩,CSS同理。

调整原因:

这样做的好处是减少浏览器解析JS及CSS的次数,增加解析速度,使得网站访问速度变快;

7、 根据雅虎军规对网站访问速度进行优化(雅虎军规详见附件):

具体操作如下:

根据第三方网站(http://gtmetrix.com)及火狐的组件(Yslow)的提示对网站内不足的地方进行逐一优化,另网站内需要制作图片延时加载。

调整原因:

LifeVC网站未优化之前网站打开速度为22.68秒,优化之后:8.78秒;

 

8、 订单跟踪:

订单从生成到完结,没一步不要有日志,每个状态的转换都必须要有日志跟着,否则订单一旦出错,都不知道是什么人做了操作,查都不知道在哪里查。

       调整原因:

有些时候会出现一些异常订单,因为没有日志,导致不知道这个订单是怎么变成这样的。

9、 接口方面:

所有跟第三方的接口,接收与发送数据都要记录原始档案,接收到的什么就存什么。

调整原因:

运营期间,如果出现了错误,我们可以直接拿出原始档,与第三方公司理论,不然我们只能吃哑巴亏。

 

本人新浪微博:http://weibo.com/i/1741159542

目录
相关文章
|
运维 Kubernetes Cloud Native
云原生技术:容器化与微服务架构的完美结合
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术以其灵活性和高效性成为企业的新宠。本文将深入探讨云原生的核心概念,包括容器化技术和微服务架构,以及它们如何共同推动现代应用的发展。我们将通过实际代码示例,展示如何在Kubernetes集群上部署一个简单的微服务,揭示云原生技术的强大能力和未来潜力。
|
存储 分布式计算 算法
Flink四大基石——4.Checkpoint容错机制
Flink四大基石——4.Checkpoint容错机制
382 1
|
11月前
|
运维 Cloud Native 持续交付
云原生技术深度探索:重塑现代IT架构的无形之力####
本文深入剖析了云原生技术的核心概念、关键技术组件及其对现代IT架构变革的深远影响。通过实例解析,揭示云原生如何促进企业实现敏捷开发、弹性伸缩与成本优化,为数字化转型提供强有力的技术支撑。不同于传统综述,本摘要直接聚焦于云原生技术的价值本质,旨在为读者构建一个宏观且具体的技术蓝图。 ####
|
消息中间件 缓存 NoSQL
奇怪的缓存一致性问题
奇怪的缓存一致性问题
266 9
|
监控 测试技术 Android开发
淘宝短视频流工程重构(下):实践篇-1
淘宝短视频流工程重构(下):实践篇
215 8
|
人工智能
AI生图美学在淘宝的实践应用(2)
AI生图美学在淘宝的实践应用
554 8
如何做好技术选型
在软件开发领域,几乎每天都有新的技术框架诞生、更新,一些新的概念更是层出不穷,技术选型时,难免让人无从抉择。对于技术选型,我个人有以下几点建议。
2033 0
|
敏捷开发 前端开发 JavaScript
实践总结|前端架构设计的一点考究(上)
本文总结了作者在日常/大促业务的“敏捷”开发过程中产生的疑惑,并尝试做出思考得到一些解决思路和方案。在前端开发和实践过程中,梳理了一些简单设计方案可以缓解当时 “头疼” 的几个敏捷迭代问题,并实践在项目迭代中。
288 0