本文是我从业多年开发生涯中针对线上业务的处理经验总结而来,这些业务或多或少相信大家都遇到过,因此在这里分享给大家,大家也可以看看是不是遇到过类似场景。 本文大纲如下, 后台上传文件 线上后台项目有一个消息推送的功能,运营新建一条通知消息时,需要一起上传一列包含用户 id 的文件,来给文件中包含的指定用户推送系统消息。 但是 CSV 文件针对复杂电子表格操作的支持就没 Excel 功能那么强大了,不过在这个只有一列的文件上传业务里够用了。 海量日志采集 公司线上有一个项目的客户端,采用 tcp 协议与后端的一个日志采集服务建立连接,用来上报客户端日志数据。 在业务高峰期下,会有同时成千上万个客户端建立连接,实时上报日志数据。 最后聊两句 到这里本文所介绍三个线上业务优化实战就讲完了,其实这种实战案例还有很多,但是碍于篇幅本文就没讲那么多拉,后续有机会也会继续更新这类文章,希望大家能够喜欢。
如何优化线上WebAssembly WebAssembly部署使用 HTTPS : 为什么? 项目第二次加载无需加载程序集,只需要等待WebAssembly预热完成,基本上在1.5s左右(因电脑而已 i7 11代CPU测试,因为WebAssembly会使用本机性能所以会因为电脑性能导致加载时间过长) 优化第一篇参考 : 如何将WebAssembly优化到1MB?
今天咱们就来总结一下排查问题的9种方法: 基础方法 监控告警 问题发生常用的手段有生产测试、监控告警和人工客诉。人工客诉是咱们最不愿意看到的,那就需要在产生业务影响前及早发现。 但是在线上不能随便用。比如程序正在写一个文件,这时候用命令行执行vim,可能导致fd文件描述符失效。关于文件描述符可参考《白话linux操作系统原理》或《趣谈IO多路复用的本质》。 linux命令可以作为排查问题的利器,比如我在《懂得三境界-使用dubbo时请求超过问题》里提到的netstat -s ,但是要注意不要对线上造成影响。 线上调试 举个例子,有次我们在进行测试环境演练,出现了个怪异的问题。后来有同事说其他一个同事也在用这个环境做调试,所以才会调用哪个接口的地方卡住,出现问题。这种问题要是出现在线上,就是故障了。
线上的SQL优化案例(一) 今天上班的时候,业务方询问了一个问题,说是某一服务每次在查询的时候会有0.5s的延迟,让DBA帮忙查一查到底是什么原因,听到0.5s的这个数字的时候,我感觉问题倒不是很严重 4、初步修改意见 有了对表结构的认知和SQL语句,我当时的第一反应是这个SQL写的是否满足需求,问了一下业务方,他们说是为了查询uid写出来的SQL,那么其实这个SQL中的select *是不必要的 5、这样测试了一把之后,业务方反馈说是并没有明显的降低查询时间。时间还是在0.3s左右,还是不能满足需求。 最终的优化前后对比结果如图: 优化之前: ? 优化之后: ? 可以看到,效果还是很明显的。 今天的文章就到这里了。
本篇文章面向已经完成集成并准备或已经上线的开发者,介绍了一系列能在应用层进一步提升用户体验与可维护性的优化措施,涵盖缓存与加载策略、IndexedDB 管理、离线及弱网支持、监控与反馈及性能测试等维度。 上线后常见痛点与优化方向在项目正式上线并有了一定的用户规模后,使用者往往会遇到以下痛点:首次加载过慢:.wasm 文件可能体积较大,如果没有合适的缓存策略或在首屏就全量加载,用户体验会受影响。 下面将针对这些问题,给出应用层面可执行的优化方案。3. 然而,真正的用户体验优化不只关乎 SDK 本身,而是更多地取决于应用层面的策略设计和周边配置,比如:缓存与加载:合理利用 HTTP 缓存、懒加载来提升加载速度,减少带宽浪费。 希望通过这篇文章提供的思路和建议,能够帮助你在上线后快速完成应用层面的优化,让最终用户获得更加流畅、稳定的实时通讯体验。
defender的特点就是敏感度很高,存在一定的误报率,如果没有业务漏洞、系统没有弱密码并且及时打补丁,一般来说很难从系统层面攻破。 defender跑起来时CPU利用率升高符合预期,如果不需要业务程序被扫描,可以从defender里信任过滤,参考https://www.87com.com/post-6.html defender相关计划任务 Disable-ScheduledTask 2>$null 4、DirectX runtime libraries from the legacy DirectX SDK for some games that use D3DX9,
在线下业务无法开展的现在,捉紧时间把业务转到线上开展,才能够抢占市场份额,让企业扭转乾坤,成为第二个“马云”。现在,耐思智慧送您5大在线办公锦囊,祝您提升工作效率,无惧疫情影响开展业务。 锦囊三:线上业务平台 线上展现.jpg 对于企业,特别是实体店来说,受疫情影响最大,无法线下开铺,顾客无法访店,导致产品无法销售,经济损失惨重。 工具:建站宝盒 线上展示平台,不但能让企业和实体店多了一个销售的渠道,更能够在线下无法经营时,及时利用线上营销,进行业务渠道的切换。 在互联网发展越来越快的今天,线上平台,一定会变成主流。 锦囊四:线上业务推广 线上业务推广.jpg 对于线下走访、派传单、刊登报纸广告等方式的线下走访业务,很多人都纷纷表示难以看到效果。 因此,大家也可以尝试从网站的seo推广方式入手,如“千城千站”ai智能推广系统,能够从优化网站开始,帮助您的企业网站稳定、快速地登上搜索引擎的首页,覆盖大量互联网人群,获取更多的客户。
金融企业经过20几年的发展,大部份业务都由线上业务系统支撑,业务数字化主要包括业务线上化、数据业务化、业务智能化三个方面。 业务线上化是基于连接、数据、赋能的数字化思维,对成熟的业务场景进行业务重塑,沉淀企业数字化能力,让业务和技术相互融合,扩展业务边界,增加支撑创新业务的能力。 业务线上化不仅仅是指将线下业务操作转移到线上系统,关键是业务在线化与业务数据化,需要关注:数据在线、产品研发在线、业务运营在线、渠道在线、客户在线、风控在线六个在线。 注:本篇杂谈从前面的数字化业务、数字化管理、数字化技术上进行细化,重点围绕重塑业务流程,业务线上化。 5.客户在线:优化客户体验,从满足功能向重塑客户体验转变 客户需求将更加多样化与个性化,企业需从原来“以满足业务功能为主”的建设思路向“主动优化客户体验”转变。
所以这个要进行优化。 优化步骤 创建一个支付接口,提供两个方法 public interface Pay { PayResponse pay(PayRequestType payRequestType); T> getBeansOfType(Class<T> clazz) { return applicationContext.getBeansOfType(clazz); } 优化后代码
前几天我把我们小程序登录接口性能优化了,优化之前登录接口响应时间大概是 300 ms 左右,优化后的响应时间大概在 70 ms 左右。 我们小程序登录接口涉及到的业务操作除了基本的登录验证功能外还加了个用户小程序openid的获取和保存操作。
大多数的接口性能问题,很多情况下都是SQL问题,在工作中,我们也会定期对慢SQL进行优化,以提高接口性能。这里总结一下常见的优化方向和策略。 过度索引:当表中存在过多的索引时,可能会导致数据库优化器在选择使用哪个索引时变得困难。这可能会导致查询性能下降,因为优化器可能选择了不是最优的索引。 为了优化这个查询,我们可以考虑以下几种方法: 索引优化: 确保在 customer_id 字段上创建索引,以加速 GROUP BY 和 WHERE 子句的执行。 条件优化: 使用WHERE条件在分组前,就把多余的数据过滤掉了,这样分组时效率就会更高一些。而不是在分组后使用having过滤数据。 深分页limit优化深分页通常指的是在处理大量数据时,用户需要浏览远离首页的页面,例如第100页、第1000页等。
线上数据量 merchant_member_info:7000W 条数据。 member_info:3000W。 不要问我为什么不分表,改动太大,无能为力。 ④SQL 执行效率 优化前,如下图: ? 优化后,如下图: ? type 由 index→ref,ref 由 null→const: ? 最终的分页查询优化 上面的 SQL 虽然经过调整索引,虽然能达到较高的执行效率,但是随着分页数据的不断增加,性能会急剧下降。 ? 最终的 SQL 优化思路:先走覆盖索引定位到,需要的数据行的主键值,然后 INNER JOIN 回原表,取到其他数据。
这时可能发现突然莫名线上DB执行某查询SQL就突然性能出现抖动,平时只要几十ms查询,这次一下子要几s,毕竟你要等待大量脏页flush磁盘,然后语句才能执行。 所以此时假设你在执行大量更新语句,可能突然发现线上DB莫名很多更新语句短时间内性能都抖动了,可能很多更新语句平时就几ms执行完,这次要等待1s才能执行完。 综上,导致线上DB的查询和更新语句莫名出现性能抖动,很可能就是上述两种情况导致的执行语句时大量脏缓存页刷入磁盘,你要等待他们刷完磁盘才能继续执行。 但若将那批缓存页刷盘的时间优化到100ms,该SQL总执行时间就只需300ms,性能提升很多。所以关键之一就是尽可能减少缓存页刷盘的时间开销到min。 关于这比例,这里的优化其实不用关注,核心就是把innodb_io_capacity设为SSD的IOPS,即随机I/O速率。
从设计稿出发,提升页面搭建效率,亟需解决的核心问题有数据来源:交易数据的来源,包含业务信息、联系人、数据接入协议 2.1 MySql底层架构 首先了解一下数据的底层架构,也有助于更好地优化。 图9、图10 数据库流量情况 相关SQL语句: <! idx_rx_create_time` (`rx_create_time`) 当时这张表的量级是2000多万,而当这条慢SQL执行较少的时候,数据库的CPU也就恢复到了49.91%,基本可以恢复线上业务 当线上业务逻辑复杂的时候,很难第一时间知道到底是由于哪条SQL引起的,这个就需要对业务非常熟悉,对SQL很熟悉,否则就会白白浪费大量的排查时间。 ,也就说线上29,000,000的数据量被分成了不到10份,rx_status=5的值是其中一份,因而通过这个索引就可以命中很多行,这是业务规则,再套用MySQL的特性,主要是以下几条: 1.
MySQL线上日志库迁移优化案例 说说最近的一个案例吧,线上阿里云RDS上的一个游戏日志库最近出现了一点问题,随着游戏人数的增加,在线日志库的数据量越来越大,最新的日志库都已经到50G大小了,在线变更的时间非常长 之前之所以没有发现,是因为之前一直没有进行过日志库的变更,但是随着业务的深入,需要增加一些游戏属性,要对之前的日志库进行变更,这样一来,长时间的维护窗口让业务方和DBA都望而却步,日志优化迫在眉睫。 首先看日志库的情况: 1、日志库中数据量大于5000w的大表有5张; 2、这5张表开量前每个月的数据量大概在2000w左右,开量后会更多; 3、有2个表的索引大小已经超过数据文件大小 询问了业务方和运营对这些表的要求 ,具体如下: 1、保留最近这3个月的数据,其他的数据可以进行流转,避免影响线上业务的性能。 6、设置定时任务,按照一定的周期清理线上的过期数据,确保线上只保留最近3个月的数据,不会对rds的磁盘存储空间产生压力。
所以,在使用图片的时候,需要对图片进行优化。图片优化是指对图片进行相应的设置,让搜索引擎更加容易的收录和抓取。 如果图片链接了相关的文章,而文章又对图片起到了说明作用,那么只要图片被收录,也意味着文章也被收录了,这样就可以达到理想的优化效果。
优化"Using filesort"的目标是减少排序所需的资源和时间,从而提高查询效率。聊聊 order by 是怎么实现的? 因此,当执行计划中出现"Using filesort"时,这是我们可以优化的一个方向。(但是,并不是说一定要优化! 要看是否有必要以及收益是否够大)针对"Using filesort"的优化,可以有以下几个方向:优化方向尽量使用索引排序:索引是天然有序的,所以当我们在使用 order by 的时候,如果能借助索引,那么效率一定是最高的 优化 MySQL 配置:我们还可以调整 sort_buffer_size 参数。这个参数决定了排序操作可以使用的内存量。 此时可以利用我之前的文章(首先想到的优化方式就是提升这个 sort 的性能。):聊聊 order by 是怎么实现的?
在面临系统故障时,可以迅速恢复业务流程,避免因数据丢失导致的业务中断。- 优化建议:设置合理的备份策略和灾备恢复机制,确保在出现故障时,业务能够迅速恢复,减少系统停机时间。5. 在业务流程中,通过角色和权限管理,可以精细化控制不同用户对数据的访问权限。- 优化建议:根据业务需求,设置合理的访问权限控制,避免不必要的安全隐患,同时满足合规性要求。7. 根据业务需求,选择合适的数据模型可以提高存储和查询效率。- 优化建议:根据业务需求,选择最合适的数据模型进行存储和处理。例如,对于社交网络业务,可以使用图数据模型来存储用户关系数据,提升查询效率。 总结:通过合理配置 YashanDB 的各项功能,可以在数据存储、处理、备份、安全等方面优化业务流程。 具体来说,优化分片策略、索引设计、并发控制、事务管理以及定期监控性能等,都会对业务流程的效率和稳定性产生积极影响。
在 .NET 9 中,微软为 LINQ(Language Integrated Query)引入了三个新的扩展方法,增强了数据查询的灵活性和表达力。 这是对 GroupBy(...).Select(g => new { g.Key, Aggregate = g.Aggregate(...) }) 的优化,性能更高且代码更简洁。 91533 • Index: https://github.com/dotnet/runtime/issues/95563 • 博客文章: • Three new LINQ methods in .NET 9 Three new LINQ methods in .NET 9 • Unlocking New Possibilities: Top LINQ Methods Introduced in .NET 9
前言春天到了大地都复苏了,沉寂了很久的cpu也开始慢慢复苏了,所谓前人埋坑后人填坑,伴随着阿里云监控报警,线上CPU使用率暴增,于是就开始了排查之路。 接口优化既然现在问题找到了,就可以进行优化了,我说下我优化的思路,主要是从下往上进行优化。 业务代码方面,限制了时间筛选的区间,从原来的不限时间勾选范围,跟业务进行沟通后,调整为只允许选择一周的时间范围进行查询,前后端都进行限制。 优化结果对比由此可见优化后的执行效率还是比较高的,线上服务也没有在报警了,但是还有其他服务在报警…. 还有磁盘使用率到达90%…. Wtf真的是优化之路途漫漫啊。 总结此次对于接口的优化点还不是很深,主要点是对代码、sql、业务进行优化,还未涉及到分表、加入缓存热点数据进行预热、修改负载均衡超时时间等… 其实偶尔的填坑也是一种学习的方式,不说了继续填坑了,哦!