商城网站优化 Myth丶恋晨 2022-06-15 00:21 305阅读 0赞 在一次正常的活动促销之后,客服开始陆续反馈有用户反应在抢标的时候打不开网页或者APP,在打开的时候标的就已经被抢光了,刚开始没有特别的上心,觉得抢标不就是这样吗,抢小米[手机][Link 1]的时候也不就这样吗?随着活动继续推进,有更多的用户强烈抗议,用户领了加息卷或者抵现卷之后抢不上标的,认为是平台作假故意不让使用以达到节省资源。 一、分析过程 其实以前也会有陆续的用户反馈不减少,给客户以小米抢手机为例子忽悠了过去,这次用户反馈太过强烈,才让我们重视了起来。我们前端一共三款产品,app、官网、H5,其中app使用量最大,官网其次,H5平时使用量极少但是做活动期间流量会暴增(活动一般都是H5[游戏][Link 2]居多,H5也便于推广[营销][Link 3]),前端的三款产品都是分别使用lvs负载到后端的两台web[服务器][Link 4]中(如下图),这次用户反馈基本在web和app端,所以重点观察这四台服务器。 ![174101ih1hee1i75741i0k.png][] 首先怀疑[网络][Link 5]带宽是否被涌满,找到网络工程师通过工具来监控,在抢标的时候带宽最高使用率只有70%左右,随排除之;再次怀疑web服务器是否抗不住了,使用top命令查看官网负载的两台服务器,在抢标的瞬间会飙到6-8左右,抢标后也慢慢的恢复了正常,app两台服务器高峰到10-12,随后也恢复正常。 跟踪web服务器业务日志,发现在数据库更新层报请求不到新的数据库连接或者数据库连接已经用完,认为是数据库的最大连接数太小,于是调整mysql数据库最大连接数为以往的3倍;下次抢标的时候继续观察业务日志,发现已经不报数据库链接的相关错误了,但还是很多用户反馈抢标时候打不开页面。 继续跟踪web服务器,在抢标时使用命令(ps -ef|grep httpd|wc -l)查看httpd得连接数有1千左右,随机查看apache配置文件中设置的最大连接数为1024(apache默认的最大连接数为256),原来抢标期间连接数已经到达最大连接数,很多用户在抢标的过程中已经获取不到http连接导致页面无响应或者app一直在等待中。于是调整apache配置文件中的最大连接数为1024\*3。 在抢标过程中继续观察,apache的连接数在抢标的时候仍然可以飙到2600-2800之间,根据客服反馈,仍然有很多用户反馈抢标的问题,但比之前稍微好一点,但是有零星的用户反馈已经抢到标的,最后又给回退了。然后继续观察数据库服务器,使用top命令和MySQLWorkbench查看mysql主库和从库的各项负载吓一跳(如下图),mysql服务器主库的各项指标均已经达到峰值,而从库几乎没有太大压力。 ![174101klcbhho1j1awlcpl.jpeg][] 跟踪代码发现,三端的业务代码全部连接主库,从库只有后台的查询业务在使用,于是立刻启动改造;将除过抢标过程中的查询外,其它页面或者业务的所有查询改造为查询从库,改造之后观察,发现主库的压力明显减少,从库的压力开始上来了。如下图: ![174102z11qq71vv1961wv7.jpeg][] 根据客服的反馈,改造之后抢到标回退的问题几乎没有了,抢标过程中页面打不开或者打开慢的问题有一定的缓解但仍有部分用户反馈此问题,根据上面各项目分析结果得出: * 1 负载的两台服务器均已经达到处理的极限,需要配置更多的服务器来负载。 * 2 mysql主库的压力明显减少,但是从库的压力却上去了,需要将现在的一主一从已从改为一主多从的模式。 * 3 彻底解决这些问题,需要综合考虑平台的整体优化,如:业务优化(去掉业务中热点)、增加缓存、部分页面静态化(可以使用雅虎和谷歌的前端优化规则,网上也有很多的测试网站可以[评测][Link 6])等等。 > 当时根据这些情况写了一份优化的报告,见下文: 二、优化报告 1、背景 随着公司业务不断发展,业务量和用户量的激增,官网pv也从最初的xxx-xxx到现在的xxx-xxxx,APP活跃用户更是大幅增加;因此也对平台目前的技术架构有了更大的挑战。特别是近期平台标源紧张的情况下,满标的时间更是越来越短。服务器的压力也越来越大;因此需要升级目前的[系统][Link 7]架构,以支持更大的用户量和业务量。 2、用户访问示意图 ![174102c66didpdgdomdypb.jpeg][] 目前平台有三款产品面对用户,平台官网、平台APP、平台小网页;其中平台官网和平台APP的压力比较大。 3、存在的问题 用户抢标的时候问题集中在以下几个方面: 1、网页或者APP打不开 2、网站或者APP打开慢 3、抢标过程中转账成功后,因为服务器负责压力大更新失败,再次退款 4、数据库连接数用完,导致满标后添加投资记录失败,回退标的进度 4、分析 通过对近期的服务器参数,并发量,以及系统日志等进行深入的分析,得出: 1、平台官网、平台APP抢标过程中服务器压力巨大,其中平台APP问题更加突出,抢标高峰期间单台APP服务器apache最大连接数已经接近2600,接近apache最大的处理能力; 2、数据库服务器压力巨大,数据库压力主要在两个时期比较突出。 2.1)当平台做活动的时候,官网、小网页、APP访问量巨增,导致数据查询量跟着巨增,当到达数据库处理极限时,就会表现出网站打开慢等问题; 2.2)当用户抢标的时候,用户抢标的压力又分为两个阶段:抢标前和抢标中。抢标前,因为满标速度很快,用户提前打开抢标页面不断刷新,这样数据库的查询压力会不断增大,如果抢标的用户量非常大,会导致在抢标之前将数据库连接数用完;抢标中,单次购买大概会涉及15张左右表进行更改查询,每个标的份额1000万大概每次会有100-200人左右购买完成满标,以中间值150人计算,在几秒的时间内需要对数据更新2000-3000次(仅仅是更新,不包括查询 ),产生大量并发,可能会导致更新失败或者连接超时,从而影响到用户投标和系统正常满标。 5 [解决方案][Link 8] 1、web服务器解决方案 目前网站和平台APP均是采用了两台服务来做均衡负责,每台服务器中安装了apache来做服务端接受处理,每台apache最大可以处理大约2000条连接。因此理论上目前网站或者APP可以处理大于4000个用户请求。如果要支持同时1万的请求,则需要5台apache服务器来支持,因此目前缺少6台web服务器。 升级服务器后的访问示意图 ![174102p9m19i7f7pkfmykm.png][] 2、数据库解决方案 当前数据库的部署方案 ![174102szzdssdllzt9kdl9.png][] 2.1)主从分离解决主库80%的查询压力。目前平台官网、APP均连接mysql主库导致主库压力倍增,把服务中的查询全部迁移到从数据库可以大量减轻主库的压力; 2.2)增加缓存服务器。当从库查询到达峰值的时候,也会影响主从的同步,从而影响交易,因此对用户经常使用的查询进行缓存以达到减少数据库的请求压力。需要新增三台缓存服务器搭建redis集群。 ![174102wygwwxqjuzlt6z2u.png][] 3、其它优化 3.1)官网首页静态化,从cnzz统计来分析,首页占比网站的整体访问量的15%左右,对于首页不经常变动的数据通过静态化来处理,提升官网打开的流畅度。 3.2)apache服务器的优化,开启gzip压缩,配置合理的链接数等 3.3) 去掉投资过程中的更新热点:标的进度表。每次投标成功或者失败都需要对标的进度表进行更新,多线程更新的时候就会出现乐观锁等问题。去掉过程中的更新,只在满标后将标的进度信息保存在标的进度表,优化投资过程中对数据库的压力。 6、服务器升级方案 1、平台最大的压力来自于数据库,需要将现在的一主一从,改为一主四从。官网/app/小网页产生的大量查询,由虚IP分发到三台从库,后台管理查询走另外的一个从库。数据库需要新增三台服务器 数据库升级后的示意图 ![174102qpm3z5fpmfpt30kt.jpeg][] 2、增加缓存减少数据的压力,需要新增两台大内存的缓存服务器 ![174102bciexswh84kh8dpz.png][] 3、需要新增三台web服务器分解用户访问请求 APP需要新增两台服务器 在抢标过程中APP服务器压力最大,需要新增两台服务器,配置完成后的示意图 ![174102wc3glgg3ldjrhax3.png][] 官网需要新增一台服务器 官网在抢标过程也有一定的压力,需要新增一条服务器,完成后示意图如下: ![174103vuobsr8974rbihso.png][] > 总合计之后需要购置8台服务器,其中有两台要求有大内存(64G以上) [Link 1]: http://www.a5idc.com/mobile/shebei/ [Link 2]: http://www.a5idc.com/idc/game/ [Link 3]: http://www.a5idc.com/news/Marketing/ [Link 4]: http://www.a5idc.com/server/ [174101ih1hee1i75741i0k.png]: /images/20220615/72c86da3611e43a1a3e4b324173d1042.png [Link 5]: http://www.a5idc.com/network [174101klcbhho1j1awlcpl.jpeg]: /images/20220615/1f4b009c1aec4599ad74ac8aa5cfa7d0.png [174102z11qq71vv1961wv7.jpeg]: /images/20220615/5245f2bb453142c38be3425d003bb7c9.png [Link 6]: http://www.a5idc.com/itshijie/pingce/ [Link 7]: http://www.a5idc.com/xitong/ [174102c66didpdgdomdypb.jpeg]: /images/20220615/c2f1855eb6524eee90e32c21eadbffd6.png [Link 8]: http://www.a5idc.com/tag/%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88.html [174102p9m19i7f7pkfmykm.png]: /images/20220615/f49322925a974592a8c1829672795aa4.png [174102szzdssdllzt9kdl9.png]: /images/20220615/f575017512d04852bba321fb72193699.png [174102wygwwxqjuzlt6z2u.png]: /images/20220615/7d7e4fe8da304eb5928406f27db439fa.png [174102qpm3z5fpmfpt30kt.jpeg]: /images/20220615/76942effeb8644ea8248e29a688a37b7.png [174102bciexswh84kh8dpz.png]: /images/20220615/46e08df8c4804ca28eb309d494195225.png [174102wc3glgg3ldjrhax3.png]: /images/20220615/716a7bacb95245aaa2a184681144b214.png [174103vuobsr8974rbihso.png]: /images/20220615/d94037ee3ddf45ee8c97280455a08676.png
相关 宠物商城网站 摘 要 随着社会的发展,计算机的优势和普及使得宠物商城网站的开发成为必需。宠物商城网站主要是借助计算机,通过对首页、商铺信息、宠物信息、宠物商品、新闻资讯、我的、跳转到后台、 亦凉/ 2023年10月03日 20:22/ 0 赞/ 15 阅读
相关 极其简洁的购物商城静态网站 极其简洁的购物商城静态网站 首先介绍一下使用了那些东西做的。 整体使用html5+css+js(少量)+jquery(一点点 ) 实现内容有 js轮播图,canv 电玩女神/ 2023年06月23日 13:30/ 0 赞/ 9 阅读
相关 网站性能优化 第1章 网站前端性能优化 前端近几年变化很大,各种工具,库,框架并发。虽然如此,但是网站前端性能优化的思路基本没变。 为什么前端性能如此重要?数据显示: 1)只有 蔚落/ 2022年08月21日 05:53/ 0 赞/ 333 阅读
相关 网站性能优化 利用一个月的时间,阅读了Steve Souder的著作,《高性能网站建设指南》,主要规则: 规则1 - 减少HTTP请求 规则2-使用内容发布网络 规则3-添加Exp 柔情只为你懂/ 2022年07月30日 13:16/ 0 赞/ 283 阅读
相关 网站性能优化 第1章 网站前端性能优化 1.1概述 前端近几年变化很大,各种工具,库,框架并发。虽然如此,但是网站前端性能优化的思路基本没变。 为什么前端性能如此重要?数据显示 绝地灬酷狼/ 2022年07月26日 08:44/ 0 赞/ 306 阅读
相关 网站优化建议 1、互换友链时需要注意链接的位置,链接位置越靠近网站顶部越好。 2、用自己的内页换别人的首页链接是最划算的。如果对方是大站,用自己的首页链接换对方的内页也是可以接受的。 ﹏ヽ暗。殇╰゛Y/ 2022年07月14日 06:46/ 0 赞/ 342 阅读
相关 商城网站优化 在一次正常的活动促销之后,客服开始陆续反馈有用户反应在抢标的时候打不开网页或者APP,在打开的时候标的就已经被抢光了,刚开始没有特别的上心,觉得抢标不就是这样吗,抢小米[手机] Myth丶恋晨/ 2022年06月15日 00:21/ 0 赞/ 306 阅读
相关 网站优化思路 1、服务器优化: > 对于已经预想到可能会有刚访问量或者大量请求数的网站,要采用nginx负载均衡服务器集群,因为nginx服务器可以很好的处理大流量请求 2、前台优化: 青旅半醒/ 2022年06月02日 04:38/ 0 赞/ 277 阅读
相关 网站图片如何优化? 网站图片如何优化? 为什么网站图片要优化? 图文并茂的文章使人阅读愉快,会起到意想不到的效果。只有文字内容会使人看着容易疲倦。在用户体验上,蜘蛛抓取上也尤为的重要。图片... 朱雀/ 2021年05月31日 06:40/ 0 赞/ 562 阅读
相关 网站性能优化 网站性能优化是必须的技能,而且需要长期积累,以下是我自己总结的一些性能优化的策略,主要分为几个方面: 网络请求优化 页面渲染优化 JS阻塞性能与内存泄漏 负载均衡 红太狼/ 2021年03月23日 12:55/ 0 赞/ 750 阅读
还没有评论,来说两句吧...