Golang 性能优化实战】的更多相关文章

小结: 1. 性能查看工具 pprof,trace 及压测工具 wrk 或其他压测工具的使用要比较了解. 代码逻辑层面的走读非常重要,要尽量避免无效逻辑. 对于 golang 自身库存在缺陷的,可以寻找第三方库或自己改造. golang 版本尽量更新,这次的测试是在 golang1.12 下进行的.而 go1.13 甚至 go1.14 在很多地方进行了改进.比如 fmt.Sprintf,sync.Pool 等.替换成新版本应该能进一步提升性能. 本地 benchmark 结果不等于线上运行结果.…
文章摘自https://juejin.im/post/5b0b7d74518825158e173a0c 作为互联网项目,最重要的便是用户体验.在举国“互联网+”的热潮中,用户至上也已经被大多数企业所接收,特别是在如今移动端快速发展的时代,我们的网页不仅只是呈现在用户的PC浏览器里,更多的时候,用户是通过移动产品浏览我们的网页.加之有越来越多的开发者投入到Web APP和Hybrid APP的开发队伍中,性能,又再一次成为了被程序员们重点关注的话题.我曾经看到过这样一句话:一个网站的体验,决定了用…
以下内容转载自totoro的文章<小程序Canvas性能优化实战!> 作者:totoro 链接:https://blog.totoroxiao.com/canvas-perf-mini/ 来源:https://blog.totoroxiao.com/ 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 腾讯位置服务基于微信提供的小程序插件能力,专注于(围绕)地图功能,打造一系列小程序插件,可以帮助开发者简单.快速的构建小程序,是您实现地图功能的最佳伙伴.目前微信小程序插件提供…
前面 2 篇 golang 性能优化分析系列文章: golang 性能优化分析工具 pprof (上) golang 性能优化分析工具 pprof (下) 一.基准测试 benchmark 简介 在 golang 中,可以通过 benchmark 基准测试来测试代码性能.基准测试主要是通过测试 cpu 和内存的效率问题,来评估被测试代码的性能. 基准测试的指标: 程序所花费的时间 内存使用的情况 cpu 使用情况 基准测试文件名和函数规定: go 基准测试文件都是以 _test.go 结尾,和单…
安卓开发大军浩浩荡荡,经过近十年的发展,Android技术优化日异月新,如今Android 11.0 已经发布,Android系统性能也已经非常流畅,可以在体验上完全媲美iOS. 但是,到了各大厂商手里,改源码.自定义系统,使得Android原生系统变得鱼龙混杂,然后到了不同层次的开发工程师手里,因为技术水平的参差不齐,即使很多手机在跑分软件性能非常高,打开应用依然存在卡顿现象. 另外,随着产品内容迭代,功能越来越复杂,UI页面也越来越丰富,也成为流畅运行的一种阻碍.综上所述,对APP进行性能优…
出自:[张鸿洋的博客]来源:http://blog.csdn.net/lmj623565791/article/details/45556391 1.概述 2015年初google发布了Android性能优化典范,发了16个小视频供大家欣赏,当时我也将其下载,通过微信公众号给大家推送了百度云的下载地址(地址在文末,ps:欢迎大家订阅公众号),那么近期google又在udacity上开了系列类的相关课程.有了上述的参考,那么本性能优化实战教程就有了坚实的基础,本系列将结合实例为大家展示如何去识别.…
转载请标明出处: http://blog.csdn.net/lmj623565791/article/details/45556391: 本文出自:[张鸿洋的博客] 1.概述 2015年初google发布了Android性能优化典范,发了16个小视频供大家欣赏,当时我也将其下载,通过微信公众号给大家推送了百度云的下载地址(地址在文末,ps:欢迎大家订阅公众号),那么近期google又在udacity上开了系列类的相关课程.有了上述的参考,那么本性能优化实战教程就有了坚实的基础,本系列将结合实例为…
一.上节回顾 专栏更新至今,四大基础模块的最后一个模块——网络篇,我们就已经学完了.很开心你还没有掉队,仍然在积极学习思考和实践操作,热情地留言和互动.还有不少同学分享了在实际生产环境中,碰到各种性能问题的分析思路和优化方法,这里也谢谢你们. 今天是性能优化答疑的第五期.照例,我从网络模块的留言中,摘出了一些典型问题,作为今天的答疑内容,集中回复.同样的,为了便于你学习理解,它们并不是严格按照文章顺序排列的. 每个问题,我都附上了留言区提问的截屏.如果你需要回顾内容原文,可以扫描每个问题右下方的…
一.优化方向 1,性能指标 从应用负载的视角出发,考虑"吞吐"和"延时" 从系统资源的视角出发,考虑资源使用率.饱和度等 2,性能优化步骤 选择指标评估应用程序和系统的性能: 为应用程序和系统设置性能目标: 进行性能基准测试: 性能分析定位瓶颈: 优化系统和应用程序: 性能监控和告警. 3,Linux性能工具图谱 二.平均负载 1,stress 安装命令:apt install stress stress 是一个linux系统压力测试工具,这里我们用作异常进程模拟平…
最近2个月没做什么新项目 完全是对于旧的系统进行性能优化 避免超时 死锁 数据处理能力不够等常见的性能问题 这里不从架构方面出发 毕竟动大手脚成本比较高 那么我们以实例为前提 从细节开始 优化角度 一.业务逻辑优化 二.DB优化 三.数据处理优化 四.锁与性能 五.cpu飙高小结 六.crash现象分析 业务逻辑优化 这一条不具有普遍性 不同的业务不同的场景 如果归纳起来 就是在不影响业务的前提下进行流程精简 1. 废弃冗余逻辑 常见于各种基于数据库的检查 很多同学在维护别人代码的时候 没有深入…
数据库服务器主要用于存储.查询.检索企业内部的信息,因此需要搭配专用的数据库系统,对服务器的兼容性.可靠性和稳定性等方面都有很高的要求.        下面是进行笼统的技术点说明,为的是让大家有一个整体的概念,如果想深入可以逐个击破: 希望大家能一起补充完善. 一.服务器规划: 使用64位的操作系统,最好是2008的:(Windows Server 2008 64位) 使用64位的数据库程序,最好是2008的:(SQL Server 2008 64位) 使用千兆网卡: 使用硬RAID5: 使用6…
平均负载 指单位时间内,系统处于可运行状态和不可中断状态的平均进程数,即平均活跃进程数 可运行状态:正在使用CPU或者正在等待CPU 的进程,也就是我们常用 ps 命令看到的,处于 R 状态 (Running 或者 Runnable)的进程 不可中断状态:正处于内核态关键流程中的进程,并且这些流程是不可打断的,比如最常见的是等待硬件设备的 I/O 响应,也就是我们在 ps 命令中看到的 D 状态 (Uninterruptible Sleep, 也称为 Disk Sleep )的进程 平均负载为多…
作者:jerryOnlyZRJ 来源:https://juejin.im/post/5b6fa8c86fb9a0099910ac91 本文是对之前同名文章的修正,将所有webpack3的内容更新为webpack4,以及加入了笔者近期在公司工作中学习到的自动化思想,对文章内容作了进一步提升. 原文链接:imweb.io/topic/5b6fd- 0.引言 作为互联网项目,最重要的便是用户体验.在举国"互联网+"的热潮中,用户至上也已经被大多数企业所接收,特别是在如今移动端快速发展的时代,…
一.性能优化方法论 不可中断进程案例 二.怎么评估性能优化的效果? 1.评估思路 2.几个为什么 1.为什么要选择不同维度的指标? 应用程序和系统资源是相辅相成的关系 2.性能优化的最终目的和结果? 好的应用程序 3.为什么必须要使用应用程序的指标,来评估性能优化的整体效果? 系统优化总是为应用程序服务的 4.为什么需要用系统资源的指标,来观察和分析瓶颈的来源 系统资源的使用情况是影响应用程序性能的根源 三.多个性能问题同时存在,要怎么选择? 四.有多种优化方法时,要如何选择? 五.系统优化 六…
一.上节回顾 上一节,我们一起回顾了常见的文件系统和磁盘 I/O 性能指标,梳理了核心的 I/O 性能观测工具,最后还总结了快速分析 I/O 性能问题的思路. 虽然 I/O 的性能指标很多,相应的性能分析工具也有好几个,但理解了各种指标的含义后,你就会发现它们其实都有一定的关联. 顺着这些关系往下理解,你就会发现,掌握这些常用的瓶颈分析思路,其实并不难.找出了 I/O 的性能瓶颈后,下一步要做的就是优化了,也就是如何以最快的速度完成 I/O 操作,或者换个思路,减少甚至避免磁盘的 I/O 操作.…
一.上节总结 专栏更新至今,四大基础模块的第三个模块——文件系统和磁盘 I/O 篇,我们就已经学完了.很开心你还没有掉队,仍然在积极学习思考和实践操作,并且热情地留言与讨论. 今天是性能优化的第四期.照例,我从 I/O 模块的留言中摘出了一些典型问题,作为今天的答疑内容,集中回复.同样的,为了便于你学习理解,它们并不是严格按照文章顺序排列的. 每个问题,我都附上了留言区提问的截屏.如果你需要回顾内容原文,可以扫描每个问题右下方的二维码查看. 二.问题 1:阻塞.非阻塞 I/O 与同步.异步 I/…
一.上节总结回顾 上一节,我们回顾了经典的 C10K 和 C1000K 问题.简单回顾一下,C10K 是指如何单机同时处理 1 万个请求(并发连接 1 万)的问题,而 C1000K 则是单机支持处理 100 万个请求(并发连接 100 万)的问题. I/O 模型的优化,是解决 C10K 问题的最佳良方.Linux 2.6 中引入的 epoll,完美解决了C10K 的问题,并一直沿用至今.今天的很多高性能网络方案,仍都基于 epoll. 自然,随着互联网技术的普及,催生出更高的性能需求.从 C10…
一.上节回顾 上一节,我们了解了 NAT(网络地址转换)的原理,学会了如何排查 NAT 带来的性能问题,最后还总结了 NAT 性能优化的基本思路.我先带你简单回顾一下. NAT 基于 Linux 内核的连接跟踪机制,实现了 IP 地址及端口号重写的功能,主要被用来解决公网 IP 地址短缺的问题. 在分析 NAT 性能问题时,可以先从内核连接跟踪模块 conntrack 角度来分析,比如用systemtap.perf.netstat 等工具,以及 proc 文件系统中的内核选项,来分析网络协议栈的…
一.上节回顾 上一节,我们学了网络性能优化的几个思路,我先带你简单复习一下. 在优化网络的性能时,你可以结合 Linux 系统的网络协议栈和网络收发流程,然后从应用程序.套接字.传输层.网络层再到链路层等每个层次,进行逐层优化.上一期我们主要学习了应用程序和套接字的优化思路,比如: 在应用程序中,主要优化 I/O 模型.工作模型以及应用层的网络协议: 在套接字层中,主要优化套接字的缓冲区大小. 今天,我们顺着 TCP/IP 网络模型,继续向下,看看如何从传输层.网络层以及链路层中,优化 Linu…
一.上节回顾 上一节,我们一起学习了怎么使用动态追踪来观察应用程序和内核的行为.先简单来回顾一下.所谓动态追踪,就是在系统或者应用程序还在正常运行的时候,通过内核中提供的探针,来动态追踪它们的行为,从而辅助排查出性能问题的瓶颈. 使用动态追踪,便可以在不修改代码也不重启服务的情况下,动态了解应用程序或者内核的行为.这对排查线上的问题.特别是不容易重现的问题尤其有效. 在 Linux 系统中,常见的动态追踪方法包括 ftrace.perf.eBPF/BCC 以及 SystemTap 等. 使用 p…
一.上节回顾 上一节,我们一起学习了,应用程序监控的基本思路,先简单回顾一下.应用程序的监控,可以分为指标监控和日志监控两大块. 指标监控,主要是对一定时间段内的性能指标进行测量,然后再通过时间序列的方式,进行处理.存储和告警. 而日志监控,则可以提供更详细的上下文信息,通常通过 ELK 技术栈,来进行收集.索引和图形化展示. 在跨多个不同应用的复杂业务场景中,你还可以构建全链路跟踪系统.这样,你就可以动态跟踪调用链中各个组件的性能,生成整个应用的调用拓扑图,从而加快定位复杂应用的性能问题. 不…
一.上节回顾 上一节,我带你一起梳理了,性能问题分析的一般步骤.先带你简单回顾一下. 我们可以从系统资源瓶颈和应用程序瓶颈,这两个角度来分析性能问题的根源. 从系统资源瓶颈的角度来说,USE 法是最为有效的方法,即从使用率.饱和度以及错误数这三个方面,来分析 CPU.内存.磁盘和文件系统 I/O.网络以及内核资源限制等各类软硬件资源.至于这些资源的分析方法,我也带你一起回顾了,咱们专栏前面几大模块的分析套路. 从应用程序瓶颈的角度来说,可以把性能问题的来源,分为资源瓶颈.依赖服务瓶颈以及应用自身…
一.上节回顾 上一节,我带你一起梳理了常见的性能优化思路,先简单回顾一下.我们可以从系统和应用程序两个角度,来进行性能优化. 从系统的角度来说,主要是对 CPU.内存.网络.磁盘 I/O 以及内核软件资源等进行优化. 而从应用程序的角度来说,主要是简化代码.降低 CPU 使用.减少网络请求和磁盘 I/O,并借助缓存.异步处理.多进程和多线程等,提高应用程序的吞吐能力. 性能优化最好逐步完善,动态进行.不要追求一步到位,而要首先保证能满足当前的性能要求. 性能优化通常意味着复杂度的提升,也意味着可…
一.上节回顾 专栏更新至今,咱们专栏最后一部分——综合案例模块也要告一段落了.很高兴看到你没有掉队,仍然在积极学习思考.实践操作,并热情地分享你在实际环境中,遇到过的各种性能问题的分析思路以及优化方法. 今天是性能优化答疑的第六期.照例,我从综合案例模块的留言中,摘出了一些典型问题,作为今天的答疑内容,集中回复.为了便于你学习理解,它们并不是严格按照文章顺序排列的.每个问题,我都附上了留言区提问的截屏.如果你需要回顾内容原文,可以扫描每个问题右下方的二维码查看. 二.问题 1:容器冷启动性能分析…
原文在简书上, https://www.jianshu.com/p/f8336b835978 1.背景 目前有一个kafka消费者工程,此工程会消费kafka中的消息,并通过fastjson解析该消息为java实体,然后存入到阻塞队列 BlockingQueue中.另外有若干个线程会从queue中批量拿消息,然后以批量形式写入到 elasticsearch 中.目前在使用中发现存在性能瓶颈,需要定位是该工程对消息转化处理较慢,还是写es操作比较慢. 2.改造准备 为测试此工程最大处理速率,并排出…
一.分析CPU瓶颈 1,性能指标 a>CPU使用率 CPU使用率描述了非空闲时间占总CPU时间的百分比,根据CPU上运行任务的不同可以分为:用户CPU.系统CPU.等待I/O CPU.软中断和硬中断等 用户CPU使用率,包括用户态CPU使用率(user)和低优先级用户态CPU使用率(nice),表示CPU在用户态运行的时间百分比.用户CPU使用率高,通常说明有应用程序比较繁忙 系统CPU使用率,表示CPU在内核态运行的时间百分比(不包括中断).系统CPU使用率高,说明内核比较繁忙 等待I/O的C…
SQL Server datetime数据类型设计.优化误区 一.场景 在SQL Server 2005中,有一个表TestDatetime,其中Dates这个字段的数据类型是datetime,如果你看到表的记录如下图所示,你最先想到的是什么呢? (图1:数据列表) 你看到这些数据,是不是觉得这样的设计既浪费了存储空间,又使得这个列的索引增大,查询起来更慢,你也想使用一些其它的数据类型来代替这个datetime吧? 其实大家都是这么想的,这个方向是100%正确的,但是在写这篇文章以前,我进入了两…
借助xhprof 工具分析PHP性能 XHPorf(源自Fackbook 的PHP性能分析工具) 实战     通过分析Wordpress程序,做优化! 优化 找到需要优化的函数 grep 'import_from_reader' ./ -r PHP性能分析工具扩展 ab - 压力测试    vld - opcode代码分析 PHP性能瓶颈究极办法 Opcode Cache:PHP扩展APC  pecl.php.net -> 搜索 APC (2012以后不再维护了) yac (也不错) 扩展实现…
一.缓存命中率 1.引子 1.我们想利用缓存来提升程序的运行效率,应该怎么评估这个效果呢? 用衡量缓存好坏的指标 2.有没有哪个指标可以衡量缓存使用的好坏呢? 缓存命中率 3.什么是缓存命中率? 所谓缓存命中率,是指直接通过缓存获取数据的请求次数,占所有数据请求次数的百分比.命中率越高,表示使用缓存带来的收益越高,应用程序的性能也就越好 2.查看系统命中情况的工具 1.缓存在高并发系统的应用 实际上.缓存是现在所有高并发系统必须的核心模块,主要作用就是把经常访问的数据(也就是热点数据),提取读入…
一.上节回顾 上一节,我带你一起学习了网络性能的评估方法.简单回顾一下,Linux 网络基于 TCP/IP协议栈构建,而在协议栈的不同层,我们所关注的网络性能也不尽相同. 在应用层,我们关注的是应用程序的并发连接数.每秒请求数.处理延迟.错误数等,可以使用 wrk.Jmeter 等工具,模拟用户的负载,得到想要的测试结果. 而在传输层,我们关注的是 TCP.UDP 等传输层协议的工作状况,比如 TCP 连接数.TCP 重传.TCP 错误数等.此时,你可以使用 iperf.netperf 等,来测…