<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>operations on </title>
    <link>/tags/operations/</link>
    <description>Recent content in operations on </description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    <lastBuildDate>Mon, 28 Sep 2026 19:00:00 +0800</lastBuildDate><atom:link href="/tags/operations/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>开发环境单节点 OpenSearch 巡检</title>
      <link>/posts/opensearch-dev-infrastructure-review/</link>
      <pubDate>Mon, 28 Sep 2026 19:00:00 +0800</pubDate>
      
      <guid>/posts/opensearch-dev-infrastructure-review/</guid>
      <description>这台单节点 OpenSearch 存放 qa、stg、preprod 几个非生产环境的日志。OpenSearch 是 3.5.0，用 deb 包安装、由 systemd 管理，跑在系统的 OpenJDK 21 上；虚拟机 4 vCPU、31 GiB 内存、512 GB 单盘，堆 16 GiB（-Xms16g -Xmx16g）。主机层只有 node_exporter 向 Prometheus 上报系统指标。巡检看了主机内存、OpenSearch 自带的插件和告警、集群健康状态和服务日志。
OpenSearch 报告的内存使用率 OpenSearch 自己报告的内存使用率是 98%。这个值按 total 减 free 计算（见 OsStats.java），free 取自 JVM 的 getFreeMemorySize（见 OsProbe.java），Page Cache 被算成了已用。
OpenSearch 在 64 位 JVM 上默认用 hybridfs 存储类型，按文件类型分别用 mmap 或 NIO 读取 Lucene 段文件（见 IndexModule.java 里的 defaultStoreType 和 index.store.hybrid.nio.extensions）。两种方式读过的文件数据都缓存在操作系统的 Page Cache 里，不占 JVM heap。
判断内存够不够要看 /proc/meminfo 里的 MemAvailable。按内核文档的定义，它估算的是不发生 swap 时还能给新程序用多少内存，由 MemFree、可回收的 slab、文件 LRU 链表的大小和各 zone 的低水位算出；Cached 是从磁盘读过的文件的缓存，也就是 Page Cache（见 内核的 /proc 文档）。这台机器的 MemAvailable 约 10.</description>
    </item>
    
  </channel>
</rss>
