ECOS百科全书|高级搜索|RSS订阅|加入收藏|服务中心|联系我们欢迎您光临!

B2B2C性能优化实战之一

来源:清风设计团队 发布时间:2018-07-26 12:52 字体:【   点击

ONex B2B2C是上海商派ShopEx旗下的一款多用户商城产品,最近帮一位ONex B2B2C用户做了性能优化,其中的一些性能屏颈非常有代表性。如果你恰好是ONex B2B2C用户,不妨一看。


最初,客户反馈说每次打开网站首页都需要10几秒钟,清风的运维小哥通过监测发现,网站首页的打开速度确实在9.5秒左右,如下图:

1-2.jpg

作为一个商城,这样的速度当然是不可忍受的,漫长的等待, 估计客户都给吓跑了。


接下来,清风的运维小哥打开了php慢日志和mysql慢日志,分析是哪些环节和功能导致了性能屏颈。


首先我们从慢日志中发现了这些mysql查询,这样的查询在首页打开时出现了40多次,每个查询语句都用时在0.14秒左右,合计约6秒左右。

5.jpg


而这些查询来自于商品展示挂件的如下代码:

1.jpg

由于首页多次调用这个商品展示挂件,因此会出现多次的查询,但这句代码本身并没有什么问题。我们注意到代码中引用了getItemList这个方法,通过分析底层代码,最终发现这个屏颈的根本原因在sphinx这个功能上(其中的分析过程省略一万字)。


我们知道,ONex B2B2C使用了sphinx来提高搜索精度,与默认的mysql查询相比,不仅能查询商品标题、货号、关键字,还可以根据商品规格、扩展属性、所属品牌等更多相关联的信息来查询到商品。挂件getItemList这个方法,实际就是根据商品的goodsID来查询商品。我们注意到max_matches=1000000这个参数,每次默认返回10万条记录,这么大的一个数据返回量,对于单机部署且配置一般的服务器来说,是一个不小的压力。

QQ图片20180724033009.jpg


接下来,我们尝试关闭了sphinx来验证我们的判断。网站后台搜索配置中,可以停用sphinx搜索,停用后将使用mysql搜索:

QQ图片20180724033025.jpg


再来对比网站打开速度,如下图所示,没有关闭sphinx时,网页打开响应速度为9.547秒,关闭后打开响应速度为3.371,提升了6秒还多。由此可见spinx确实对网站的性能产生了比较大的影响。

2.jpg


但是,我们总不能让客户关闭掉sphinx不用吧? 找出了问题,还得寻求解决办法。既然系统设置的是每次默认返回100万条数据,那我们将这个值改小试试。毕竟客户网站上实际也没这么多产品,算下来,总共就一千多款产品。


在索引管理中,可以对sphinx的参数进行【配置

QQ图片20180724033020.jpg


把单页搜索返回最多条目值改为10000(原值为100000,十万条),把可搜索总量改为100000(原值为1000000,一百万条)

QQ图片20180724033016.jpg

依次对所有索引名称都进行重新配置。


修改保存后,重新开启sphinx,再监测网页打开速度,这时发现和关闭sphinx时的速度相差不大了,大约在4秒左右。也就是说通过上速修改,减少了约5.5秒左右的网页打开速度。这是一个不小的提升。


但是,4秒左右的网页打开速度,还是会让客户感觉不爽,毕竟在这个快节奏的时代,没有人愿意为这样慢的网站留下来爽快买单,还得继续优化。


请看下一篇《ONex B2B2C性能优化实战之二




------分隔线--------

关键词:ONex B2B2c,性能优化,缓存不命中,打开慢的处理

转载请保留:http://www.hnqss.cn/html/jszx/b2b2c/article-2828.html

------分隔线--------