6 天前 / u561252
对于非结构化的数据存储系统来说,LIST 操作通常都是非常重量级的,不仅占用大量的 磁盘 IO、网络带宽和 CPU,而且会影响同时间段的其他请求(尤其是响应延迟要求极高的 选主请求),是集群稳定性的一大杀手。 例如,对于 Ceph 对象存储来说,每个 LIST bucket 请求都需要去多个磁盘中捞出这个 bucket 的全部数据;不仅自身很慢,还影响了同一时间段内的其他普通读写请求,因为 IO 是共享的,导致响应延迟上升乃至超时。
7 天前 / 博文视点Broadview
点击“博文视点 Broadview”,获取更多书讯 今天,Bug 和性能问题成为威胁软件健康的两大的话题。 从单机时代开始,我们就投入了不计其数的人力、物力研究性能。 随着分布式系统的大量应用,对于性能问题的分析、调优,面临着很多前所未有的挑战。 很多团队经常面对下面这类技术困境: 如何使用开源软件构建机群? 如何选择云服务? 如何设计高效的分布式 Web 服务? 如何开发高效的分布式机器学习系统? 为什么我的 App 打开比较慢? 为什么我的网站访问不了? 怎么才能看到我的业务中哪个逻辑比较慢 …… “无法衡量就无法管理” 当面对这些问题的时候...
10 天前 / hyper0x
今天分享多线程下这三门语言的表现。 简介在计算机中,线程是可以由处理器独立执行的小指令序列。多线程在一个进程中是可能的,其中它们共享资源,例如指令和上下文。 发现在运行多线程进程时效率最高的编程语言非常重要,因为它可以帮助软件开发人员同时选择最有利的语言来实现他们的系统。 本文的目的是分析和比较 Java、Go 和 Python 使用它们的并行工具解决几种算法的性能,例如:Java 和 Python 的线程,以及 Go 的 goroutine。为了评估性能,我们编写了经典矩阵乘法算法、快速排序算法和康威生存游戏(Conway’s game of life)的并行实现。
19 天前 / 高性能架构探索
你好,我是雨乐! 最近在知乎上看了篇帖子,题目是为什么 C++ 没有 C 语言快,如下图: 恰好之前研究过这块,所以借助本文,分析下这个问题(无意于语言之争,单纯是从技术角度)。 众所周知,C++ 兼容了 C 的所有功能,显然从所有角度去对比分析是不现实的,所以本文从我们常用的输入输出即标准流(iostream 和 stdio)的角度来分析讲解。 示例为了更加直观地来对比分析,写了个示例,通过 scanf 和 cin 读文件,然后分析两种方式的性能高低,代码如下: #include #include #include #include constintnum=1000000; voidtime_report(conststd::function&f...
22 天前 / BloomingRose
作者:拂衣 01 问题背景 Cloud Native 在使用 JMeter 压测时,发现同一后端服务,在单机 500 并发下,HTTP 和 HTTPS 协议压测 RT 差距非常大。同时观测后端服务各监控指标水位都很低,因此怀疑性能瓶颈在 JMeter 施压客户端。02 问题分析 Cloud Native 1切入点:垃圾回收 首先在施压机观察到 CPU 使用率和内存使用率都很高,详细看下各线程 CPU、内存使用情况:top -Hp {pid} 发现进程的 CPU 使用率将近打满,其中 GC 线程 CPU 使用率很高 再看下 gc 的频率和耗时,发现每秒都有 YoungGC,且累计耗时比较长,因此先从频繁 GC 入手,定位问题。
31 天前 / bytearch
写在前面这篇文章和大家分享一下最近和团队成员一起重构的围栏服务真实案例分享,二话不说,先上图: 重构前后对比 ( 单台 docker 服务压测结果) 对比项 QPS 平均 RTP995 耗时说明重构前 12050ms800ms 压测达到性能瓶颈重构后 50005ms50ms 压测未到达性能瓶颈重构之后性能提升 40 倍,效果非常明显。 下面分享详细技术方案。 技术方案一、背景 / 现状多次压测反馈,目前线上机器 8 台 docker 大概只能支撑 1k/QPS, 单机 120/QPS。 无城市查询围栏场景,会循环判断该业务线下全国的围栏是否命中,耗 CPU 严重,高峰期性能瓶颈特别明显。
35 天前 / yybbb
【引子】节前的时候, 一好友约我聊一聊 API 的设计。当时觉得仿佛有万语千言,但我又难以脱口而出 1、2、3。原来,即便是工作的日常,也缺乏一个系统性的思考和整理。API 的设计涉及到的方面很多, 分类是一个基本的思考方式。如果可以形成一个系列性的文字,那就从性能开始吧。 就像任何性能一样,API 性能主要取决于如何响应不同类型的请求。例如:典型的电商场景,显示用户当前的订单。应用程序从一个 API 获取订单详情。但是,如果希望用户在一个地方能查看他们所有的订单,这意味着,我们的 API 现在将返回比以前更多的数据,后台的负载会更大。
36 天前 / 趣编程
什么是 Ethr Ethr 是一个用 golang 编写的跨平台并可支持多种协议的网络性能测量工具。支持 TCP, UDP, HTTP, HTTPS 等多种协议,对带宽、连接 /s, 延迟、数据包 /s、丢失和抖动有一个全面的网络性能测量。 Ethr 特性与优势跨平台,支持多种协议 支持多线程,支持多客户端与单个服务器的通信 与其他工具相比提供了更多的测试指标 可作为服务端或者客户端对网络性能进行测量 快速体验 Ethr 安装 Ethr go install github.com/microsoft/[email protected] 启动服务端, 默认监听 8888 端口...
38 天前 / 钟子敬07
报表的性能很重要,是一个总被谈及的问题,跑的慢的报表用户体验恶劣,无法忍受。解决这些慢的性能问题,也成了项目方和工程师头疼的事情。一出状况,就得安排技术好的,能力强的工程师去救火,本来利润就薄,还得不断的追加人工成本,而且工程师有时候也无能为力,并不是所有的性能问题都能靠程序员能力解决的这个总会让人头疼的问题没办法解决吗?没有好的方法去提升性能了吗?解决这个问题之前,我们得先理清楚问题的根源,是什么导致了报表的性能问题,找到根源,我们才能对症下药,才能治本报表性能问题出在什么环节? 报表的呈现周期中...
42 天前 / ywp
笔记Go 泛型使用与性能对比不知道等了多久的泛型终于来了Mar 17, 2022阅读时长: 4 分钟2022年3月15号,Go 1.18版本正式发布,泛型也在这个版本中被支持。 下面简单的学习了下Go的泛型使用: 基本使用首先从最常用的max函数来看。假设我现在需要两个int类型的最大值,原先的Go写法是: package mainimport "fmt"func main() {fmt.Println(maxInt(32, 64))}func maxInt(a, b int) int {if a > b {return a}return b}这个时候我需要增加一个获取float64的最大值,那么我们就要新增一个函数叫maxFloat64: func maxFloat64(a, b float64) float64 {if a > ...
47 天前 / Yourtion
前言 近年来,数据库系统服务的数据量呈指数级增长,同时也面临处理的业务需求愈发复杂、实时性要求越来越高等挑战。单机数据库系统已经逐渐不能满足现代的数据库服务要求,因此分布式数据库 / 数据仓库得到了越来越广泛地运用。 在实时分析(OLAP)领域,分布式数据仓库可以充分发挥系统的分布式特点,将复杂的 OLAP 任务分解下发到系统中的所有节点进行计算提升分析性能;分布式数据仓库也可以比较方便地对系统节点进行扩容,应对用户业务数据量增加的需求。
57 天前 / kafeidou
通过 BSON 和零拷贝反序列化在 MongoDB Rust 驱动程序中解锁更高的性能 Rust BSON 库(bson crate)的 2.2.0 版本引入了一个“原始”BSON API,它使我们能够在 Rust MongoDB 驱动程序(mongodb crate)中实现一些内部性能改进,并且在某些情况下,可以用户利用它来显着提高查询性能,包括通过使用 serde 的零拷贝反序列化功能。在这篇文章中,我将演示如何使用这个新的 API,并提供一些例子来说明它可以帮助你加快阅读速度。文章链接,https://patrickfreed.github.io/rust/2022/04/27/unlocking-greater-performance-in-the-mongodb-rust-driver-via-raw-...
57 天前 / BloomingRose
解 Bug 之路 -NAT 引发的性能瓶颈 - 完整版笔者最近解决了一个非常曲折的问题,从抓包开始一路排查到不同内核版本间的细微差异,最后才完美解释了所有的现象。在这里将整个过程写成博文记录下来,希望能够对读者有所帮助。( 篇幅可能会有点长,耐心看完,绝对物有所值~) 环境介绍先来介绍一下出问题的环境吧,调用拓扑如下图所示: 调用拓扑图 合作方的多台机器用 NAT 将多个源 ip 映射成同一个出口 ip 20.1.1.1,而我们内网将多个 Nginx 映射成同一个目的 ip 30.1.1.1。
57 天前 / HueiFeng
五字优化诀:持续分煎饼 本篇关注程序性能优化。聚焦这个主题,本是偶然。始于玩笑,终于本心,也算是为我党成立百年献礼了。本想找点高大上的让人直呼牛逼的东西,奈何能力有限,只能给大家一些既便宜、又好用、还简单的普通东西了,不知道你们会不会喜欢。 分为五个主题,分别是[池][序][分][减]『并』: 一、『池』字诀 池化,降低可重用对象的创建和回收代价。 不知道你们发现没有,无论是电影还是游戏中,主角总是孤胆单英雄,最多三五成群。但 Boss 不一样,Boss 手一挥,必须有一群小怪一拥而上,毕竟帮主角刷点经验也是好的。
59 天前 / 高性能架构探索
你好,我是雨乐! 最近在优化引擎代码,在优化的过程中发现一个很奇怪的问题,一个简单的对象,存放在 std::vector v 中,如果 v 定义的时候为每个元素指定初值,那么后面对 v 中每个元素的写就飞快;相反的,如果 v 定义的时候,不指定初始值,那么后面对 v 中元素写操作的时候,就花费大约前一种 2-3 倍的时间。 今天,借助此文,分享下原因的排查过程。 问题 为了能够快速说明问题,直接上代码吧,如下: #include #include #include #include intconstnum=1000000000; structAdItem { AdItem(){} AdItem(intx,inty,intz) { x_=x;y_=y;z_=z; } intx_; i...