首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

堆外内存及其在 RxCache 中的使用

在 Java 中,与堆外内存相对的是堆内存。堆内存遵守 JVM 的内存管理机制,而堆外内存不受到此限制,它由操作系统进行管理。 ?...堆外内存更适合: 存储生命周期长的对象 可以在进程间可以共享,减少 JVM 间的对象复制,使得 JVM 的分割部署更容易实现。 本地缓存,减少磁盘缓存或者分布式缓存的响应时间。...RxCache 中使用的堆外内存 首先,创建一个 DirectBufferConverter ,用于将对象和 ByteBuffer 相互转换,以及对象和byte数组相互转换。...RxCache 中的封装。...总结 RxCache 是一款 Local Cache,它已经应用到我们项目中,也在我个人的爬虫框架 NetDiscovery 中使用。未来,它会作为一个成熟的组件,不断运用到公司和个人的其他项目中。

1.2K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    走马观花云原生技术(13):度量与监控 Prometheus

    在前面的文章中,针对日志,在CNCF官方项目中,可以使用Fluent;而针对链接追踪,可以使用Jagger;而这一次,我要聊到的,就是关于支持度量的技术了。...那首先理清的一个概念是,在系统中,什么数据才称的上度量数据,或者说在一个系统中我们想要收集什么样的数据?...举例说明如下: • 服务器状态相关的数据,比如内存或CPU的使用情况 • 业务上的一些有价值的数据,比如活跃用户数等 在系统中,不管是与部署相关的硬件或资源数据,还是业务上有价值的一些数据,都可以进行度量与存储...Prometheus使用的是拉模式(PULL),Prometheus会定时(依据配置而定)通过HTTP的方式调用对应的API(依据配置而定)来获取要收集的数据。...(memory_consumption[6h]) # 过去6小时内存占用的最大值 max_over_time(memory_consumption[6h]) # 过去6小时内存占用的最小值 min_over_time

    38530

    2.2 堆在整个jvm内存中的运行流程以及jvisualvm工具的使用

    堆和GC介绍 java堆的特点 《深入理解java虚拟机》是怎么描述java堆的 Java堆(Java Heap)是java虚拟机所管理的内存中最大的一块 java堆被所有线程共享的一块内存区域 虚拟机启动时创建...堆内存划分: 堆大小 = 新生代 + 老年代。堆的大小可通过参数–Xms(堆的初始容量)、-Xmx(堆的最大容量) 来指定。...Survivor 区域 ( 即 to 区域 ) 中,然后清理所使用过的 Eden 以及 Survivor 区域 ( 即 from 区域 ),并且将这些对象的年龄设置为1,以后对象在 Survivor...堆内存中的老年代(Old)不同于这个,老年代里面的对象几乎个个都是在 Survivor 区域中熬过来的,它们是不会那么容易就 “死掉” 了的。...实际上老年代没有能够回收的对象, 这时候在往老年代放, 就会发生OOM 使用这个工具还可以分析我们自己的程序代码的垃圾回收清空 三.

    1.1K20

    Grafana Mimir:支持乱序的指标采集

    传统的Prometheus TSDB仅支持接收1小时内的有序采样,然后丢弃其他样本。这种方式可以让Prometheus高效地存储样本。...但在实际中,Prometheus的拉取模式(以一定节奏从被观察的目标中提取数据)也给用户的使用带来了很多限制。...这一点类似head block处理有序样本的方式:内存中的有序样本会保存在一个压缩的chunk中,最大可以保存120个样本。...WBL类似Prometheus TSDB中的Write-Ahead-Log (WAL)。在WBL中,当在TSDB中添加样本之后才会写数据,而WAL是在TSDB数据变更前写数据。...对于有序数据,每过2小时,我们会获取head block中的2小时内的老数据,并将其转变为持久块,这个称为head block的压缩过程。在压缩完有序数据后,也会对乱序数据进行压缩。

    1.1K20

    被集群节点负载不均所困扰?TKE 重磅推出全链路调度解决方案

    引言 在 K8s 集群运营过程中,常常会被节点 CPU 和内存的高使用率所困扰,既影响了节点上 Pod 的稳定运行,也会增加节点故障的几率。...在集群中,如果出现一个新增的节点,为了防止新增的节点调度上过多的节点,我们会通过监听调度器调度成功事件,获取调度结果,标记每个节点过去一段时间的调度 Pod 数,比如 1min、5min、30min 内的调度...配置节点 5分钟内 CPU 利用率、1小时内最大 CPU 利用率,5分钟内平均内存利用率,1小时内最大内存利用率的阈值,超过了就会在预选阶段过滤节点。 优选阶段 ?...Descheduler 从 apiserver 中获取 Node 和 Pod 信息,从 Prometheus 中获取 Node 和 Pod 监控信息,然后经过Descheduler 的驱逐策略,驱逐 CPU...在优选阶段将 5分钟平均内存利用率权重配置为 0.8,1h 和1d 内最大内存利用率权重配置为 0.2、0.2,而将 CPU 的指标权重都配置为 0.1。

    1.4K20

    在 SQL 中,如何使用子查询来获取满足特定条件的数据?

    在 SQL 中,可以使用子查询来获取满足特定条件的数据。子查询是嵌套在主查询中的查询语句,它返回一个结果集,可以用来过滤主查询的结果。...下面是使用子查询来获取满足特定条件的数据的一般步骤: 在主查询中使用子查询,将子查询的结果作为条件。 子查询可以在主查询中的 WHERE 子句、FROM 子句或 HAVING 子句中使用。...子查询可以返回单个值或多个值,具体取决于使用的运算符和子查询的语法。 以下是一些示例: 使用子查询在 WHERE 子句中过滤数据: SELECT column1, column2, ......FROM (SELECT column FROM table WHERE condition) AS temp_table; 使用子查询在 HAVING 子句中过滤数据: SELECT column1,...FROM table GROUP BY column1 HAVING column1 > (SELECT AVG(column1) FROM table); 请注意,子查询的性能可能会较低,因此在设计查询时应谨慎使用

    24210

    使用 Grafana Mimir 实现云原生监控报警可视化

    垂直压缩将接收器在同一时间范围(默认情况下为 2 小时内)上传的租户的所有块合并到单个块中。它还对最初由于复制而写入 N 个块的样本执行重复数据消除。垂直压缩减少了单个时间范围内的块数。...接受速率 每个租户在 Grafana Mimir 集群中每秒可接收的最大样本数。如果超过其中任何一个速率,分发服务器将丢弃请求并返回 HTTP 429 响应代码。...每个接收器可能处于以下状态之一: pending joining active leaving unhealthy 写放大 Ingers 将最近收到的样本存储在内存中,以便执行写放大。...querier(查询器) 查询器是一个无状态组件,它通过在读取路径上获取时间序列和标签来评估 PromQL 表达式,使用存储网关组件查询长期存储,使用接收组件查询最近写入的数据。...工作原理 为了在查询时查找正确的块,查询器需要一个关于长期存储中存储桶的最新视图。查询器只需要来自 bucket 的元数据信息的,元数据包括块内样本的最小和最大时间戳。

    2.2K40

    通过 Prometheus 编写 TiDB 巡检脚本(脚本已开源,内附链接)

    其实可以利用 tidb 的 Prometheus 来获取集群相关的各项数据,比如告警就是一个很好的例子。可惜了,告警只是获取了当前数据进行告警判断,而巡检需要使用一段时间的数据来作为判断的依据。...每个表达式都会评估为一个中间值,每个中间值都会被用作它上层表达式中的参数,而查询的最外层表达式表示你可以在表格、图形中看到的最终返回值。...要让巡检使用 PromQL ,就必须要修改告警中的 PromQL。...原版是直接将 1 分钟内所有线程的变化率相加,而笔者的修改版是将 1 分钟内所有线程的使用率取平均值,并且从此刻向后倒 24 小时内,每一分钟执行一次获取平均线程使用率的查询,再取最大值。...}[1m])) by (instance) ,并获取其中最大的一次值。

    25110

    Prometheus监控学习笔记之Prometheus的架构及持久化

    0x00 Prometheus是什么 Prometheus是一个开源的系统监控和报警工具,特点是 多维数据模型(时序列数据由metric名和一组key/value组成) 在多维度上灵活的查询语言...磁盘文件 Prometheus在storage.local.path指定的路径存储文件,默认为./data。...2 variable bit-width encoding,facebook的时间序列数据库Beringei采用的编码方式 内存使用 prometheus在内存里保存了最近使用的chunks,具体...# 目前内存中暴露的chunks的个数 process_resident_memory_byte Resident memory size in bytes # 驻存在内存的数据大小 prometheus_local_storage_persistence_urgency_score...内存中保留的chunks的最大个数,默认为1048576,即为1G大小 storage.local.retention 用来配置采用数据存储的时间,168h0m0s即为24*7小时,即1周 storage.local.series-file-shrink-ratio

    1.8K30

    hhdb数据库介绍(10-21)

    使用率、CPU负载、内存、磁盘读写速率(可切换监控的磁盘,监控面板设置页面可以设置监控磁盘的优先级)、磁盘使用情况(可切换监控的盘符,监控面板设置页面可以设置监控盘符的优先级)、网络进出流量(可切换监控的网卡...如下图:网络状态说明:不限:最近一次检测的数据结果正常:最近一次检测的数据未超过阈值最新检测异常:最近一次检测的数据超过阈值、无法ping通或者丢包率100%24小时内异常:从当前时间往前推24小时,有出现过数据超过阈值...异常判定条件:最近一次检测数据超过阈值(橙色)、无法ping通达或者丢包率100%(红色)网络质量数据为最近一次检测数据与24小时内的数据统计,分为ping小包与ping大包两类。...24小时内的数据统计显示最大延迟>2ms、平均延迟>1ms、丢包率>0%在24小时内超过阈值的次数。...网络质量面板网络质量面板显示对应的网络质量检测数据,默认展示当前24小时内的数据,不满24小时会隐藏拖动块,左右拖动可控制展示7天内的数据,鼠标移入折线图内可查看具体时间点的数据展示。

    4810

    关于监控的那些事,你有必要了解一下

    adhoc:用于数据查询 其流程很简单,Prometheus server端可以直接接收或者通过pushgateway获取到数据,存储到TSDB中,然后对数据进行规则整理,通过Altermanager...主机的主要资源对象有: CPU 内存 磁盘 可用性 服务状态 网络 6.1.4、如何进行监控 在Prometheus监控方案中,主机的资源指标是通过node-exporter来进行采集,然后存储在Prometheus...:缓冲缓存中的内存 node_memory_Cached_bytes:页面缓存中的内存 比如下面的表达式是用于统计内存使用率大于80%: 100 - sum(node_memory_MemFree_bytes...所以我们还可以再加一个条件,比如磁盘使用率大于80%并且在接下来的4小时内会使用完。如下: (100 - (node_filesystem_avail_bytes{fstype!...「(2)、JVM监控」通过在应用中埋点来暴露JVM数据,使用Prometheus监控采集JVM数据,借助Prometheus Grafana大盘来展示JVM数据,并创建报警,即可实现利用Prometheus

    1.6K10

    Grafana和ES打造的Nginx的仪表盘

    我们想要打造一套监控平台,因此我在逐渐的完善我的DashBoard系列文章。如果你也对这部分感兴趣那么欢迎来和我一起构建这个仪表盘。...监控指标 针对入口Nginx,我设计了如下的监控指标: 最近的24小时内访问量Top10的国家 最近24小时最受欢迎的页面 200状态码和404状态码的比例 最受欢迎的世界题图展示 等等 ?...那么,要构建这个DashBoard,我们首先要把Elasticsearch作为数据源配置到Grafana中。打开如下地址,然后输入Grafana的管理员用户名和密码进配置。...配置完成数据后,我们就要选择dashboard的模板了。我们进入dashboard的配置,我们使用 https://grafana.com/grafana/dashboards/11190,模板。...接下啦,我们需要输入dashboard的名字,选择Elasticsearch和Prometheus的数据源就可以看到你的监控数据了。 看看我们的DashBoard ? ?

    1.2K61

    Kubernetes监控在小米的落地

    存储方式 Prometheus的存储包括本地存储与远程存储,本地存储只保存短期内的监控数据,按照两个小时为一个时间窗口,将两小时内产生的数据存储在一个块(Block)中,每一个块中包含该时间窗口内的所有样本数据...在远程读的流程当中,当用户发起查询请求后,Promthues将向remote_read中配置的URL发起查询请求(matchers,time ranges),Adapter根据请求条件从第三方存储服务中获取响应的数据...同时将数据转换为Promthues的原始样本数据返回给Prometheus Server。当获取到样本数据后,Promthues在本地使用PromQL对样本数据进行二次处理。...其二,是在规模较大的集群,Prometheus占用CPU与内存资源都较多(下表中为线上集群Prometheus的运行情况),偶尔会出现某些metrics抓取不到的情况,随着集群规模的扩大单个Prometheus...取一小时内平均的差值比率,如下图: 经统计,超过95%的时间序列对比误差在1%以内,个别指标瞬时波动较大(如网络使用率),但随着时间增加会抵消差异。

    1.2K00

    Prometheus 的存储机制

    例如,可以用时间序列来表示 CPU 的利用率、内存的使用量、网络流量等等。 在 Prometheus 中,每个时间序列都由一个唯一的标识符(称为指标名称)和一组标签(用于区分不同的实例或服务)来标识。...,不包括wal文件,如512MB --storage.tsdb.retention: 已被废弃,改为使用storage.tsdb.retention.time Prometheus将所有当前使用的块保留在内存中...此外,它将最新使用的块保留在内存中,最大内存可以通过storage.local.memory-chunks标志配置。...远程读     在远程读的流程当中,当用户发起查询请求后,Promthues将向remote_read中配置的URL发起查询请求(matchers,ranges),Adaptor根据请求条件从第三方存储服务中获取响应的数据...同时将数据转换为Promthues的原始样本数据返回给Prometheus Server。     当获取到样本数据后,Promthues在本地使用PromQL对样本数据进行二次处理。

    1.9K20
    领券