Memcached 作為高性能分布式記憶體緩存系統,通過在記憶體維護巨大 Hash 表,大幅降低 MySQL 讀取壓力。本文詳細介紹 OSSIM 架構下 Memcached 與 MySQL 的協同配置、監控與 Session 共享方案。
MySQL 提供 query_cache 與 table_cache,但在高頻讀寫、數據頻繁變更場景(如 OSSIM)下效果有限:
Memcached 通過外部化緩存、分布式架構、LRU 淘汰策略,彌補了上述不足。
| 文件路徑 | 用途 |
|---|---|
/etc/default/memcached | 服務啟停控制(ENABLE_MEMCACHED=yes) |
/etc/memcached.conf | 核心參數配置(記憶體、連接數、端口 11211) |
/usr/share/ossim/www/forensics/includes/base_db.inc.php | OSSIM 調用入口 |
/usr/share/php/adodb/adodb-memcache.lib.inc.php | ADOdb Memcached 驅動 |
telnet 127.0.0.1 11211
stats
關鍵指標:
get_hits / get_misses:命中率核心指標bytes:當前佔用記憶體curr_connections:當前連接數evictions:LRU 淘汰次數(頻繁說明記憶體不足)
提供 Web 界面實時查看 Hit Rate、Memory Usage、Slabs 分佈等,便於容量規劃與異常排查。
多台 Web 服務器負載均衡時,Session 必須共享。配置 php.ini:
session.save_handler = memcache
session.save_path = "tcp://192.168.1.100:11211,tcp://192.168.1.101:11211"
優勢:
注意:Session 數據僅駐留記憶體,重啟 Memcached 會丟失,但對 Session 通常可接受。
/etc/default/memcached 控制開關evictions 指標,及時擴容Memcached 不替代 MySQL,而是作為「讀放大」層吸收高頻熱點查詢,配合合理的緩存策略(TTL、失效機制、穿透防護),可將 MySQL 負載降低 70% 以上。