本文是我从业多年开发生涯中针对线上业务的处理经验总结而来,这些业务或多或少相信大家都遇到过,因此在这里分享给大家,大家也可以看看是不是遇到过类似场景。 查询订单是否存在 Order order = orderService.getById(orderId); ,,, // 2. 在开启事务钱查询订单是否存在 Order order = orderService.getById(orderId); ... // 2. 海量日志采集 公司线上有一个项目的客户端,采用 tcp 协议与后端的一个日志采集服务建立连接,用来上报客户端日志数据。 在业务高峰期下,会有同时成千上万个客户端建立连接,实时上报日志数据。 最后聊两句 到这里本文所介绍三个线上业务优化实战就讲完了,其实这种实战案例还有很多,但是碍于篇幅本文就没讲那么多拉,后续有机会也会继续更新这类文章,希望大家能够喜欢。
如何优化线上WebAssembly WebAssembly部署使用 HTTPS : 为什么? 项目第二次加载无需加载程序集,只需要等待WebAssembly预热完成,基本上在1.5s左右(因电脑而已 i7 11代CPU测试,因为WebAssembly会使用本机性能所以会因为电脑性能导致加载时间过长) 优化第一篇参考 : 如何将WebAssembly优化到1MB?
线上的SQL优化案例(一) 今天上班的时候,业务方询问了一个问题,说是某一服务每次在查询的时候会有0.5s的延迟,让DBA帮忙查一查到底是什么原因,听到0.5s的这个数字的时候,我感觉问题倒不是很严重 2、查看慢日志中的SQL语句,如下: SELECT * FROM `account` WHERE `accountid` = 20000000528 and `accounttype` = 1 4、初步修改意见 有了对表结构的认知和SQL语句,我当时的第一反应是这个SQL写的是否满足需求,问了一下业务方,他们说是为了查询uid写出来的SQL,那么其实这个SQL中的select *是不必要的 5、这样测试了一把之后,业务方反馈说是并没有明显的降低查询时间。时间还是在0.3s左右,还是不能满足需求。 最终的优化前后对比结果如图: 优化之前: ? 优化之后: ? 可以看到,效果还是很明显的。 今天的文章就到这里了。
本篇文章面向已经完成集成并准备或已经上线的开发者,介绍了一系列能在应用层进一步提升用户体验与可维护性的优化措施,涵盖缓存与加载策略、IndexedDB 管理、离线及弱网支持、监控与反馈及性能测试等维度。 2. 上线后常见痛点与优化方向在项目正式上线并有了一定的用户规模后,使用者往往会遇到以下痛点:首次加载过慢:.wasm 文件可能体积较大,如果没有合适的缓存策略或在首屏就全量加载,用户体验会受影响。 下面将针对这些问题,给出应用层面可执行的优化方案。3. 然而,真正的用户体验优化不只关乎 SDK 本身,而是更多地取决于应用层面的策略设计和周边配置,比如:缓存与加载:合理利用 HTTP 缓存、懒加载来提升加载速度,减少带宽浪费。 希望通过这篇文章提供的思路和建议,能够帮助你在上线后快速完成应用层面的优化,让最终用户获得更加流畅、稳定的实时通讯体验。
关闭defender 防火墙和defender是紧密相连的2个名词,但实际是2个东西,二者区别参考http://t.zoukankan.com/catherinezyr-p-6690183.html。 defender的特点就是敏感度很高,存在一定的误报率,如果没有业务漏洞、系统没有弱密码并且及时打补丁,一般来说很难从系统层面攻破。 defender跑起来时CPU利用率升高符合预期,如果不需要业务程序被扫描,可以从defender里信任过滤,参考https://www.87com.com/post-6.html defender相关计划任务 " 2>$null del "C:\cvm_init.log" 2>$null del "C:\Windows\Logs\WindowsUpdate\*" 2>$null del "C:\Windows Path "$tempPath\*" -Recurse -Force 2>&1 > $null $tempPath2 = "C:\Windows\Temp" Remove-Item -Path "$tempPath2
在线下业务无法开展的现在,捉紧时间把业务转到线上开展,才能够抢占市场份额,让企业扭转乾坤,成为第二个“马云”。现在,耐思智慧送您5大在线办公锦囊,祝您提升工作效率,无惧疫情影响开展业务。 锦囊三:线上业务平台 线上展现.jpg 对于企业,特别是实体店来说,受疫情影响最大,无法线下开铺,顾客无法访店,导致产品无法销售,经济损失惨重。 工具:建站宝盒 线上展示平台,不但能让企业和实体店多了一个销售的渠道,更能够在线下无法经营时,及时利用线上营销,进行业务渠道的切换。 在互联网发展越来越快的今天,线上平台,一定会变成主流。 锦囊四:线上业务推广 线上业务推广.jpg 对于线下走访、派传单、刊登报纸广告等方式的线下走访业务,很多人都纷纷表示难以看到效果。 因此,大家也可以尝试从网站的seo推广方式入手,如“千城千站”ai智能推广系统,能够从优化网站开始,帮助您的企业网站稳定、快速地登上搜索引擎的首页,覆盖大量互联网人群,获取更多的客户。
金融企业经过20几年的发展,大部份业务都由线上业务系统支撑,业务数字化主要包括业务线上化、数据业务化、业务智能化三个方面。 业务线上化不仅仅是指将线下业务操作转移到线上系统,关键是业务在线化与业务数据化,需要关注:数据在线、产品研发在线、业务运营在线、渠道在线、客户在线、风控在线六个在线。 注:本篇杂谈从前面的数字化业务、数字化管理、数字化技术上进行细化,重点围绕重塑业务流程,业务线上化。 2.产品研发在线:改进业务产品研发管理,建立敏捷的产品研发机制 外部政策、市场环境复杂性与不确定性不断加大,需建立敏捷的业务产品研发管理机制。 5.客户在线:优化客户体验,从满足功能向重塑客户体验转变 客户需求将更加多样化与个性化,企业需从原来“以满足业务功能为主”的建设思路向“主动优化客户体验”转变。
所以这个要进行优化。 优化步骤 创建一个支付接口,提供两个方法 public interface Pay { PayResponse pay(PayRequestType payRequestType); T> getBeansOfType(Class<T> clazz) { return applicationContext.getBeansOfType(clazz); } 优化后代码 public PayResponse pay2(PayRequestType payRequestType) { PayTypeEnum payType = PayTypeEnum.para
前几天我把我们小程序登录接口性能优化了,优化之前登录接口响应时间大概是 300 ms 左右,优化后的响应时间大概在 70 ms 左右。 我们小程序登录接口涉及到的业务操作除了基本的登录验证功能外还加了个用户小程序openid的获取和保存操作。 test_timer(): print("start=======") t1 = time.time() time.sleep(3) print("ok") t2 = time.time() t21 = t2 - t1 print('t21====', t21) def async_test_timer(): Timer(1, test_timer () if __name__ == "__main__": tm1 = time.time() time.sleep(1) async_test_timer() tm2
MySQL 线上2个小案例 今天在线上遇到2个很有意思的MySQL案例,都是比较经典的问题,拿出来跟大家分享一下。为了对库表名称进行脱敏,我把问题抽象出来两个小的例子,且看分享。 varchar() DEFAULT NULL, `col4` varchar() DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `idx_c1_c2_ 业务同学看到这个报错之后,想着将这个表的col4字段改成varchar(5), 这样不就能进行更新了么? ,那么索引前200个即可: mysql> alter table t add UNIQUE KEY `idx_c1_c2_c3_c4` (`col1`(200),`col2`,`col3`,`col4` 总结 今天的文章,讲了2个小的例子,后续大家如果看到诸如此类的报错,希望可以有个灵感。
线上数据量 merchant_member_info:7000W 条数据。 member_info:3000W。 不要问我为什么不分表,改动太大,无能为力。 ④SQL 执行效率 优化前,如下图: ? 优化后,如下图: ? type 由 index→ref,ref 由 null→const: ? 最终的分页查询优化 上面的 SQL 虽然经过调整索引,虽然能达到较高的执行效率,但是随着分页数据的不断增加,性能会急剧下降。 ? 最终的 SQL 优化思路:先走覆盖索引定位到,需要的数据行的主键值,然后 INNER JOIN 回原表,取到其他数据。
MySQL线上日志库迁移优化案例 说说最近的一个案例吧,线上阿里云RDS上的一个游戏日志库最近出现了一点问题,随着游戏人数的增加,在线日志库的数据量越来越大,最新的日志库都已经到50G大小了,在线变更的时间非常长 之前之所以没有发现,是因为之前一直没有进行过日志库的变更,但是随着业务的深入,需要增加一些游戏属性,要对之前的日志库进行变更,这样一来,长时间的维护窗口让业务方和DBA都望而却步,日志优化迫在眉睫。 首先看日志库的情况: 1、日志库中数据量大于5000w的大表有5张; 2、这5张表开量前每个月的数据量大概在2000w左右,开量后会更多; 3、有2个表的索引大小已经超过数据文件大小 询问了业务方和运营对这些表的要求 ,具体如下: 1、保留最近这3个月的数据,其他的数据可以进行流转,避免影响线上业务的性能。 2、3个月之前的数据流转到一个本地库中,可以支持查询即可,查询速度不能过于慢,分钟级别的可以接受。
所以,在使用图片的时候,需要对图片进行优化。图片优化是指对图片进行相应的设置,让搜索引擎更加容易的收录和抓取。 2、属性 图片属性主要是指图片的Alt属性。图片的Alt属性是对图片所表达内容的说明。当图片不能显示的时候,就会用到Alt属性值来代替,这样用户就可以大概了解这个图片所要表达的信息。 如果图片链接了相关的文章,而文章又对图片起到了说明作用,那么只要图片被收录,也意味着文章也被收录了,这样就可以达到理想的优化效果。
这时可能发现突然莫名线上DB执行某查询SQL就突然性能出现抖动,平时只要几十ms查询,这次一下子要几s,毕竟你要等待大量脏页flush磁盘,然后语句才能执行。 所以此时假设你在执行大量更新语句,可能突然发现线上DB莫名很多更新语句短时间内性能都抖动了,可能很多更新语句平时就几ms执行完,这次要等待1s才能执行完。 综上,导致线上DB的查询和更新语句莫名出现性能抖动,很可能就是上述两种情况导致的执行语句时大量脏缓存页刷入磁盘,你要等待他们刷完磁盘才能继续执行。 但若将那批缓存页刷盘的时间优化到100ms,该SQL总执行时间就只需300ms,性能提升很多。所以关键之一就是尽可能减少缓存页刷盘的时间开销到min。 关于这比例,这里的优化其实不用关注,核心就是把innodb_io_capacity设为SSD的IOPS,即随机I/O速率。
从设计稿出发,提升页面搭建效率,亟需解决的核心问题有数据来源:交易数据的来源,包含业务信息、联系人、数据接入协议 2.1 MySql底层架构 首先了解一下数据的底层架构,也有助于更好地优化。 案例2: 在某次大促的当天,突然接到DBA运维的报警,说数据库突然流量激增,CPU也打到100%了,影响了部分线上功能和体验,遇到这种情况当时大部分人都比较紧张,下图为当时的数据库流量情况: idx_rx_create_time` (`rx_create_time`) 当时这张表的量级是2000多万,而当这条慢SQL执行较少的时候,数据库的CPU也就恢复到了49.91%,基本可以恢复线上业务 当线上业务逻辑复杂的时候,很难第一时间知道到底是由于哪条SQL引起的,这个就需要对业务非常熟悉,对SQL很熟悉,否则就会白白浪费大量的排查时间。 ,也就说线上29,000,000的数据量被分成了不到10份,rx_status=5的值是其中一份,因而通过这个索引就可以命中很多行,这是业务规则,再套用MySQL的特性,主要是以下几条: 1.
优化"Using filesort"的目标是减少排序所需的资源和时间,从而提高查询效率。聊聊 order by 是怎么实现的? 因此,当执行计划中出现"Using filesort"时,这是我们可以优化的一个方向。(但是,并不是说一定要优化! 要看是否有必要以及收益是否够大)针对"Using filesort"的优化,可以有以下几个方向:优化方向尽量使用索引排序:索引是天然有序的,所以当我们在使用 order by 的时候,如果能借助索引,那么效率一定是最高的 优化 MySQL 配置:我们还可以调整 sort_buffer_size 参数。这个参数决定了排序操作可以使用的内存量。 此时可以利用我之前的文章(首先想到的优化方式就是提升这个 sort 的性能。):聊聊 order by 是怎么实现的?
或的逻辑约束 三个选择的或 只有才 更多或 整数可除 多边形组合 固定花费 分段线性 组合型 set covering set packing 食堂定位 地图填色 Julia例子 9数独 概述 整数优化就是线性优化 x1被选中当且仅当x2被选中。 x2或x3被选中,可以都被选中。 x2或x3被选中,不可以都被选中。 对应的IP约束为: x1-x3<=0 x1+x5<=1 x1-x2=0 x2+x3>=1 x2+x3=1 或的逻辑约束 或的逻辑问题,可以用用bigM方法去解决,其思想是通过添加新的变量,将部分约束变成多余的 例如,对于问题 [图片] 或 [图片] (两者可以都出现),y1、y2的定义域是[0,5]。 and column j to j+2 @constraint(m, sum{x[r,c,k], r=i:i+2, c=j:j+2} == 1) end for i = 1:9, j = 1:
- 优化建议:根据业务需求对数据进行合理的分片设计,使得查询的热点数据能够被快速访问,同时避免大规模查询导致的性能下降。2. 在面临系统故障时,可以迅速恢复业务流程,避免因数据丢失导致的业务中断。- 优化建议:设置合理的备份策略和灾备恢复机制,确保在出现故障时,业务能够迅速恢复,减少系统停机时间。5. 在业务流程中,通过角色和权限管理,可以精细化控制不同用户对数据的访问权限。- 优化建议:根据业务需求,设置合理的访问权限控制,避免不必要的安全隐患,同时满足合规性要求。7. 根据业务需求,选择合适的数据模型可以提高存储和查询效率。- 优化建议:根据业务需求,选择最合适的数据模型进行存储和处理。例如,对于社交网络业务,可以使用图数据模型来存储用户关系数据,提升查询效率。 总结:通过合理配置 YashanDB 的各项功能,可以在数据存储、处理、备份、安全等方面优化业务流程。
前言春天到了大地都复苏了,沉寂了很久的cpu也开始慢慢复苏了,所谓前人埋坑后人填坑,伴随着阿里云监控报警,线上CPU使用率暴增,于是就开始了排查之路。 导出监控平台分析的慢sql,看到这个sql平均的执行时间,真的是再次刷新了我的认知,平均执行法时间2分多钟,这怕是执行的黄花菜都要凉了。 业务代码方面,限制了时间筛选的区间,从原来的不限时间勾选范围,跟业务进行沟通后,调整为只允许选择一周的时间范围进行查询,前后端都进行限制。 优化结果对比由此可见优化后的执行效率还是比较高的,线上服务也没有在报警了,但是还有其他服务在报警…. 还有磁盘使用率到达90%…. Wtf真的是优化之路途漫漫啊。 总结此次对于接口的优化点还不是很深,主要点是对代码、sql、业务进行优化,还未涉及到分表、加入缓存热点数据进行预热、修改负载均衡超时时间等… 其实偶尔的填坑也是一种学习的方式,不说了继续填坑了,哦!
“ 前几天跟某互联网主题旅游网架构师聊起性能调优的话题,那个时候正好遇到一些线上调优的一些困惑,希望一起探讨一下。 ? 一款线上产品如果没有经过性能测试,那它就好比是一颗定时炸弹,你不知道它什么时候会出现问题,你也不清楚它能承受的极限在哪儿。 例如:增加 CPU 核数如 32 核,升级更好的网卡如万兆,升级更好的硬盘如 SSD,扩充硬盘容量如 2T,扩充系统内存如 128G。 在系统编码完成之后,我们就可以对系统进行性能测试了。 这时候,产品经理一般会提供线上预期数据,我们在提供的参考平台上进行压测,通过性能分析、统计工具来统计各项性能指标,看是否在预期范围之内。 在项目成功上线后,我们还需要根据线上的实际情况,依照日志监控以及性能统计日志,来观测系统性能问题,一旦发现问题,就要对日志进行分析并及时修复问题。