Go性能优化概览-曹春晖件锁 -> 多个⽂件各种锁 • 同步改异步:如同步⽇志 -> 异步⽇志,若队列满则丢弃,不阻塞业务逻辑 CPU 使⽤太⾼了-编解码使⽤ CPU 过⾼ 通过更换 json 库,就可以提⾼系统的吞吐量 本质上就是请求的 CPU 使⽤被优化了 我们可以使⽤固定 QPS 压测来验证该结论 https://golearn.coding.net/p/gonggongbanji/files/all/DF46 F47 CPU 使⽤太⾼了-GC 使⽤ CPU 过⾼ • 调⼤ GOGC • 程序启动阶段 make ⼀个全局的超⼤ slice(如 1GB) 这种⽅式只适合那些内存不紧张,且希望提⾼整体吞吐量的服务 内存占⽤过⾼-堆分配导致内存过⾼ 实例分析,TLS 的 write buffer 瓶颈优化过程 https://github.com/golang/go/blob/master/src/crypto/tls/conn0 码力 | 40 页 | 8.69 MB | 1 年前3
大规模高性能区块链架构设计模式与测试框架-李世敬leveldb leveldb leveldb 只读 读写 元数据 索引数据 区块数据库 索引数据库 区块链平台底层采用Filelog+IndexDB混合存储模型,以应对当前业务场景对高磁盘I/O频率和吞吐量的高要求。数据随区块 存储在区块链专用存储引擎Filelog,索引数据存储在由多个LevelDB构成的IndexDB中,保证数据读写性能不受存量数据增加 的影响。 混合存储模型 区块链平台关键技术-混合存储模型 版权所有 ©2016-2021 26 趣链科技 版权所有 ©2016-2021 26 区块链性能测试工具-产品基础模型 测试 平台 Hyperchain 测试脚本 可视化⼯具 交易成功率 交易吞吐量 交易延迟 … 压测指标 Fabric Ethereum … 测试脚本 测试脚本 27 趣链科技 版权所有 ©2016-2021 27 趣链科技 版权所有 ©2016-2021 27 趣链科技0 码力 | 39 页 | 56.58 MB | 1 年前3
Go 入门指南(The way to Go)程由一个或多个操作系统线程组成,这些线程其实是共享同一个内存地址空间的一起工作的执行体。几乎 所有'正式'的程序都是多线程的,以便让用户或计算机不必等待,或者能够同时服务多个请求(如 Web 服 务器),或增加性能和吞吐量(例如,通过对不同的数据集并行执行代码)。一个并发程序可以在一个处 理器或者内核上使用多个线程来执行任务,但是只有同一个程序在某个时间点同时运行在多核或者多处理 器上才是真正的并行。 并行是一 成的大部分工作,其开 销比创建协程和协程间通信还高。 1 出于性能考虑建议使用带缓存的通道: Go入门指南 - 374 - 本文档使用 看云 构建 使用带缓存的通道可以很轻易成倍提高它的吞吐量,某些场景其性能可以提高至10倍甚至更多。通过调整 通道的容量,甚至可以尝试着更进一步的优化其性能。 2 限制一个通道的数据数量并将它们封装成一个数组: 如果使用通道传递大量单独的数据,那么通0 码力 | 380 页 | 2.97 MB | 1 年前3
Go 入门指南(The way to Go)多个操作系统线程组成,这些线程其实是共享同一个内存地址空间的一起工作的执行体。几乎所有’正式’的程序都是 多线程的,以便让用户或计算机不必等待,或者能够同时服务多个请求(如 Web 服务器),或增加性能和吞吐量 (例如,通过对不同的数据集并行执行代码)。一个并发程序可以在一个处理器或者内核上使用多个线程来执行任 务,但是只有同一个程序在某个时间点同时运行在多核或者多处理器上才是真正的并行。 并行是一 实践经验表明,如果你使用并行运算获得高于串行运算的效率:在协程内部已经完成的大部分工作,其开销比创建协 程和协程间通信还高。 1 出于性能考虑建议使用带缓存的通道: 使用带缓存的通道可以很轻易成倍提高它的吞吐量,某些场景其性能可以提高至10倍甚至更多。通过调整通道的容 量,甚至可以尝试着更进一步的优化其性能。 2 限制一个通道的数据数量并将它们封装成一个数组: 如果使用通道传递大量单独的数据,那么通0 码力 | 466 页 | 4.44 MB | 1 年前3
共 4 条
- 1













