InfraPub 为您找到相关结果 12

如何读懂火焰图?+ 实例讲解程序性能优化 - xuxh120

627891 > 627891.svg -d N 分析持续时间(以秒为单位)。如果未提供启动,恢复,停止或状态选项,则探查器将运行指定的时间段,然后自动停止。 -i N 设置分析间隔(以纳秒或者毫秒等作为单位),默认分析间隔为10ms。 -o 转储文件的格式。 等待15s,就会产生结果,生成 627891.svg 文件。vim 627891.svg 并删除第一行,然后下载到本地并使用浏览器打开。 结果如下图,此图俗称火焰图,主要看每个方法的横轴长度,占用横坐标越长的操作,其占用的 cpu 即最长,很直观的。 9.2 性能黑点分析 我们首先发现下图红框内的代码存在严重的性能问题。在append的过程中,获取线程 stack 的过程比较大。从火焰图中分析,占据了接近50%的是,一个logger操作...阅读全文

博文 2022-03-11 10:05:09 博客园

得物云原生全链路追踪Trace2.0-采集篇 - OSCHINA

,Trace 被认为是 Span 的有向无环图(DAG)。官方也例举了以下 8 个 Span 的因果关系和他们组成的单 Trace示例图: 在当时, OpenTracing 相关的开源社区也是异常活跃,它使用 Jaeger 来解决数据的收集,调用链则使用了甘特图展示: 在 OpenTracing 生态中,我们对链路的采样使用头部采样策略, 对于指标 Metrics,OpenTracing 并没有制定它的规范,但在 Google SRE Book 里,关于 Monitoring Distributed System 章节中提到了四类黄金指标: 吞吐量:如每秒请求数,通常的实现方式是,设定一个计数器,每完成一次请求将自增。通过计算时间窗口内的变化率来计算出每秒的吞吐量。 延迟:处理请求的。 错误率/错...阅读全文

博文 2022-12-10 06:50:41 中文开源技术交流社区

Redis 命令、特性介绍与性能调优

、Hyperloglogs等。 Redis具备LRU淘汰、事务实现、以及不同级别的硬盘持久化等能力,并且支持副本集和通过Redis Sentinel实现的高可用方案,同时还支持通过Redis Cluster实现的数据自动分片能力。 Redis的主要功能都基于单线程模型实现,也就是说Redis使用一个线程来服务所有的客户端请求,同时Redis采用了非阻塞式IO,并精细地优化各种命令的算法时间复杂度,这些信息意味着: Redis是线程安全的(因为只有一个线程),其所有操作都是原子的,不会因并发产生数据异常 Redis的速度非常快(因为使用非阻塞式IO,且大部分命令的算法时间复杂度都是O(1)) 使用高的Redis命令是很危险的,会占用唯一的一个线程的大量处理时间,导致所有的请求都被拖慢。(例如时间复杂度为O(N)的...阅读全文

博文 2018-10-27 10:37:55 debian.cn

谷歌如何为数十万台设备更新内部 Linux 发行版 - OSCHINA

正在直播2022开放原子全球开源峰会!>>>>> 谷歌内部使用了许多不同的操作系统平台,其中包括 Linux。15 多年前,谷歌选择基于 Ubuntu LTS 构建内部 Linux 发行版 Goobuntu,主要是看中了 Ubuntu 具备用户友好、易于使用的特性,以及提供了许多优秀功能。此外,LTS 会获得 Canonical 提供 2 年以上的安全更新。 根据官方介绍,Goobuntu 是谷歌长期以来一直使用的 Linux 发行版。不过 Ubuntu LTS 的两年更新周期意味着谷歌必须在操作系统 EOL 之前,对超过 10 万台设备中的每台机器进行升级。这是一项非常困难且的工作,毕竟每两年让所有工程师从头开始配置他们的工作空间,这对生产力是严重的打击,并且从经济角度来看也是一个不...阅读全文

博文 2022-07-31 19:13:41 中文开源技术交流社区

Debian下编译安装Golang

拉下来,非常;在GitHub连接不稳定时,也可能会失败。这属于网络问题,读者也需自行解决。 按时间顺序,这里记录了一些相关的坑。如果想直接按照正确的步骤完成编译,可以跳到环境配置小节。 首次编译错误 Go不支持在根目录下编译,必须到src目录去。 $ cd src $ ./all.bash ##### Building Go bootstrap tool. cmd/dist ERROR: Cannot find ~/go1.4/bin/go. Set $GOROOT_BOOTSTRAP to a working Go tree >= Go 1.4. 我本来就是因为只有Go1.3,才要从源码安装新版本的。现在找我要Go1.4,这可如何是好? 自举 Go从1.5版本开始实现“自举...阅读全文

博文 2021-01-28 17:50:16 debian.cn

Golang 应用集成 Prometheus 统计数据支持

main() { // expose prometheus metrics接口 http.Handle("/metrics", promhttp.Handler()) http.HandleFunc("/query", monitor.Monitor(Query)) log.Fatal(http.ListenAndServe(":8080", nil)) } // query func Query(w http.ResponseWriter, r *http.Request) { //模拟业务查询0~1s time.Sleep(time.Duration(rand.Intn(1000)) * time.Millisecond) _,_ = io.WriteString(w, "some...阅读全文

博文 2022-11-24 10:33:09 CSDN博客

TLS1.3 正式版发布 — 特性与开启方式科普

延迟会使人感觉到移动浏览速度很缓慢。不幸的是,数据加密会进一步降低连接的速度。而 TLS1.3 有助于改善这种状况。 要向加密网站发送一条消息,你必须首先建立共用密钥。这一过程叫做一次握手。它要求有专门的消息往来于浏览器和网站之间。只要你的浏览器连接到一个加密站点,TLS握手就会在后台发生。 对于TLS1.2来说,在请求发送出去之前,需要2次消息往来才能完成握手。通过移动网络访问一个站点时,加载时间会额外增加超过半秒钟。而对于TLS1.3来说,首次握手只需要1次消息往来。这就像把一辆0-60迈加速需10秒的旅行车升级成一辆只需5秒的特斯拉Model S。如果一次连接所需的消息往来约100毫秒,那么TLS1.3的速度提升足以让那些反应迟缓(加载时间超过300毫秒)的站点变得足够快(加载时间...阅读全文

博文 2018-08-14 14:40:05 debian.cn

深度解密基于 eBPF 的 Kubernetes 问题排查全景图

Label、Namespace 等概念非常适合用来构建上下文信息。3、繁多监测系统,造成监测界面不一致复杂系统带来的一个严重副作用就是监测系统繁多。数据链路不关联、不统一,监测界面体验不一致。很多运维同学或许大多都有过这样的体验:定位问题时浏览器打开几十个窗口,在 Grafana、控制台、日志等各种工具之间来回切换,不仅非常巨大,且大脑能处理的信息有限,问题定位效率低下。如果有统一的可观测性界面,数据和信息得到有效地组织,减少注意力分散和页面切换,来提高问题定位效率,把宝贵时间投入到业务逻辑的构建上去。二、解决思路与技术方案为了解决上述问题,我们需要使用一种支持多语言,多通信协议的技术,并在产品层面尽可能覆盖软件栈端到端的可观测性需求,通过调研,我们提出一种立足于容器界面和底层操作系统,向上关联...阅读全文

博文 2022-03-21 09:11:51 joseph

字节跳动开源微服务中间件 CloudWeGo - OSCHINA

。 Netpoll Netpoll 是字节跳动内部的 Golang 高性能、I/O 非阻塞的网络库,专注于 RPC 场景。 RPC 通常有较重的处理逻辑(业务逻辑、编解码),长,不能像 Redis 一样采用串行处理(必须异步)。而 Go 的标准库 net 设计了 BIO(Blocking I/O) 模式的 API,为了保证异步处理,RPC 框架设计上需要为每个连接都分配一个 goroutine,这在空闲连接较多时,产生大量的空闲 goroutine,增加调度开销。此外,net.Conn 没有提供检查连接活性的 API,很难设计出高效的连接池,池中的失效连接无法及时清理,复用低效。开源社区目前缺少专注于 RPC 方案的 Go 网络库。类似的项目如:evio、gnet 等,均面向 Redis、Haproxy...阅读全文

博文 2021-09-09 13:56:42 中文开源技术交流社区

在 Kubernetes 上扩展 TensorFlow 模型

点通信。在 Kubernetes 中, MPI Operator 可用于实现 Allreduce 式的 TensorFlow 模型同步训练。 ## TensorFlow 模型在 Kubernetes 上的可扩展服务 由于处理客户端对推理服务的请求是一项非常耗力的任务,因此可扩展服务对于机器学习工作负载的生产部署至关重要。在这种情况下,部署的模型应该能够扩展到多个副本,并为多个并发的请求提供服务。 Kubeflow 支持 TensorFlow 模型的几种服务选项。这里要注意以下几点: - **TFServing** 是 TFX Serving 模块的 Kubeflow 实现。通过 TFServing,你可以创建机器学习模型 REST API,并提供许多有用的功能,包括服务交付、自动生命周期...阅读全文

Web前端知识体系精简

程会形成一个全局执行环境,执行环境采用栈的方式将待执行任务按顺序依次来执行。 但在浏览器中有一些任务是非常的,比如http请求、定时器、事件回调等,为了保证其他任务的执行效率不被影响,JS在执行环境中维护了一个异步队列(也叫工作线程),并将这些任务放入队列中进行等待,这些任务的执行时机并不确定,只有当主线程的任务执行完成以后,才会去检查异步队列中的任务是否需要开始执行。这就是为什么setTimeout(fn,0) 始终要等到最后执行的原因。关于单线程和异步队列问题请参考:setTimeout(0) 7、异步通讯 Ajax技术 Ajax是浏览器专门用来和服务器进行交互的异步通讯技术,其核心对象是XMLHttpRequest,通过该对象可以创建一个Ajax请求。为了防止XSS攻击,浏览器对...阅读全文

博文 2021-01-28 17:50:33 debian.cn

Kafka 3.0新特性全面曝光,真香!

,非常的且影响集群的可用性。元数据更新网络开销大整个元数据的更新操作也是以全量推的方式进行,网络的开销也会非常大。强耦合违背软件设计原则Zookeeper对于运维来说,维护Zookeeper也需要一定的开销,并且kafka强耦合与zk也并不好,还得时刻担心zk的宕机问题,违背软件设计的高内聚,低耦合的原则。网络分区复杂度高Zookeeper本身并不能兼顾到broker与broker之间通信的状态,这就会导致网络分区的复杂度成几何倍数增长。zk本身不适合做消息队列zookeeper不适合做消息队列,因为zookeeper有1M的消息大小限制 zookeeper的children太多会极大的影响性能znode太大也会影响性能 znode太大会导致重启zkserver10-15分钟...阅读全文

博文 2022-04-28 16:02:11 mp.weixin.qq.com