Stories

Detail Return Return

Memcached 可觀測性最佳實踐 - Stories Detail

Memcached 介紹

Memcached 是一個高性能、分佈式的內存對象緩存系統,用於動態 Web 應用程序以減輕數據庫負載。它通過將數據緩存在內存中,極大地減少了數據庫查詢的次數,從而提高應用程序的響應速度。Memcached 最早由 LiveJournal 的 Danga Interactive 開發,目前已成為許多大型互聯網公司使用的基礎技術之一。

Memcached 的監控是保障應用性能和穩定性的關鍵措施,通過實時跟蹤緩存的命中率、內存使用、延遲等指標,可以優化緩存策略、識別性能瓶頸、及時排查故障、進行容量規劃,確保數據一致性,併為業務分析提供數據支持,從而提升用户體驗和系統可靠性。

觀測雲

觀測雲是一款專為 IT 工程師打造的全鏈路可觀測產品,它集成了基礎設施監控、應用程序性能監控和日誌管理,為整個技術棧提供實時可觀察性。這款產品能夠幫助工程師全面瞭解端到端的用户體驗追蹤,瞭解應用內函數的每一次調用,以及全面監控雲時代的基礎設施。此外,觀測雲還具備快速發現系統安全風險的能力,為數字化時代提供安全保障。

前置條件

  • Memcached 版本 >= 1.5.0

部署 DataKit

DataKit 是一個開源的、跨平台的數據收集和監控工具,由觀測雲開發並維護。它旨在幫助用户收集、處理和分析各種數據源,如日誌、指標和事件,以便進行有效的監控和故障排查。DataKit 支持多種數據輸入和輸出格式,可以輕鬆集成到現有的監控系統中。

登錄觀測雲控制枱,在 集成 -> DataKit 選擇對應安裝方式,當前採用 Linux 主機部署 DataKit 。

圖片

開啓 Memcached 採集器

進入 DataKit 安裝目錄下的 conf.d/db 目錄,複製 memcached.conf.sample 並命名為 memcached.conf 。示例如下:

cp memcached.conf.sample memcached.conf

調整 memcached.conf 內容如下:

[[inputs.memcached]]
  ## Servers' addresses.
  servers = ["localhost:11211"]
  # unix_sockets = ["/var/run/memcached.sock"]

  ## Set true to enable election
  election = true

  ## Collect extra stats
  # extra_stats = ["slabs", "items"]

  ## Collect interval.
  # 單位 "ns", "us" (or "µs"), "ms", "s", "m", "h"
  interval = "10s"

[inputs.memcached.tags]
  # some_tag = "some_value"
  # more_tag = "some_other_value"
  # ...

配置完成後重啓 DataKit 即可。

# 終端執行命令
datakit service -R

關鍵指標

指標 描述 單位
accepting_conns 服務器是否正在接受連接 count
auth_cmds 處理的認證命令數量,包括成功或失敗的情況 count
auth_errors 認證失敗的次數 count
bytes 當前用於存儲項目的字節數 B
bytes_read 此服務器從網絡讀取的總字節數 B
bytes_written 此服務器發送到網絡的總字節數 B
cas_badval 找到鍵但CAS值不匹配的CAS操作次數 count
cas_hits 成功的CAS請求次數 count
cas_misses 針對缺失鍵的CAS請求次數 count
conn_yields 由於達到 -R 限制而讓出給其他連接的次數 count
connection_structures 服務器分配的連接結構數量 count
curr_connections 打開的連接數 count
curr_items 當前存儲的項目數量 count
decr_hits 成功的decr請求次數 count
decr_misses 針對缺失鍵的decr請求次數 count
delete_hits 導致項目被刪除的刪除請求次數 count
delete_misses 針對缺失鍵的刪除請求次數 count
evicted_unfetched 從LRU中驅逐但從未被get/incr/append等操作觸及的項目數量 count
evictions 為新項目騰出內存而從緩存中移除的有效項目數量 count
expired_unfetched 從LRU中取出但在過期前從未被get/incr/append等操作觸及的項目數量 count
get_hits 已請求並找到存在的鍵的數量 count
get_misses 已請求但未找到的項目數量 count
hash_bytes 當前哈希表使用的字節數 B
hash_is_expanding 指示哈希表是否正在擴展到新大小 count
hash_power_level 哈希表當前的大小倍數 count
incr_hits 成功的incr請求次數 count
incr_misses 針對缺失鍵的incr請求次數 count
limit_maxbytes 此服務器允許用於存儲的字節數 B
listen_disabled_num 服務器因達到最大連接數(maxconns)而停止接受新連接的次數 count

場景視圖

登錄觀測雲控制枱,點擊「場景」 -「新建儀表板」,添加視圖。

圖片

監控器(告警)

memcached 連接數異常

簡要描述:Memcached 連接數異常通常表示當前服務器的連接數超過預期或達到了最大連接限制。這可能會導致新連接被拒絕,從而影響應用程序對緩存數據的訪問。及時監控和處理連接數異常有助於保障服務的穩定性和響應能力。

圖片

memcached 命中率異常

簡要描述:Memcached 命中率異常表明緩存的請求命中率低於正常水平,這通常意味着更多的請求需要直接訪問數據庫,可能導致延遲增加和性能下降。通過監控和優化緩存命中率,可以提升系統響應速度和資源利用率。

圖片

memcached 驅逐對象異常

簡要描述:Memcached 驅逐對象異常指的是緩存中對象被頻繁驅逐,通常是因為內存不足而需要騰出空間。這可能會導致緩存命中率下降,從而增加對數據庫的訪問壓力。監控並優化驅逐策略,有助於提升緩存的有效利用率和系統的整體性能。

圖片

總結

通過觀測雲統一採集、監控 Memcached 的關鍵指標,如緩存命中率、內存使用情況、延遲等,可以幫助我們優化緩存策略、識別性能瓶頸並及時排查故障,從而保障系統性能和穩定性。通過實時追蹤這些指標,可以有效進行容量規劃,確保數據一致性,併為業務分析提供重要支持,從而提升用户體驗和系統可靠性。

user avatar seven97_top Avatar
Favorites 1 users favorite the story!
Favorites

Add a new Comments

Some HTML is okay.