EnyimMemcached 是 .NET 常用的 Memcached 客戶端,內建效能計數器支援。但許多開發者發現:雖安裝計數器後在效能監視器列表中可見,「所選物件的執行個體」卻為空白,無法加入圖表。本文詳述完整配置流程,解決執行個體缺失問題。
Enyim.Caching.dll 複製至任意資料夾(如 D:\lib\)。C:\Windows\Microsoft.NET\Framework64\v4.0.30319)。installutil D:\lib\Enyim.Caching.dll成功後,效能監視器 (perfmon) 的計數器清單中會出現 Enyim.Caching 類別。
僅安裝系統計數器不足夠,必須在應用程式設定檔中啟用 <performanceMonitor/> 區段,Enyim 才會在執行時建立執行個體。
<configuration>
<configSections>
<sectionGroup name="enyim.com">
<section name="memcached" type="Enyim.Caching.Configuration.MemcachedClientSection, Enyim.Caching" />
</sectionGroup>
</configSections>
<enyim.com>
<memcached protocol="Binary">
<servers>
<add address="memcached" port="11211" />
</servers>
<socketPool minPoolSize="50" maxPoolSize="3000"
connectionTimeout="00:00:01" deadTimeout="00:00:01" />
<!-- 關鍵:啟用效能監控,name 為執行個體名稱 -->
<performanceMonitor
factory="Enyim.Caching.Memcached.DefaultPerformanceMonitorFactory, Enyim.Caching"
name="www.cnblogs.com" />
</memcached>
<log factory="Enyim.Caching.Log4NetFactory, Enyim.Caching.Log4NetAdapter" />
</enyim.com>
</configuration>
選擇該執行個體,勾選所需計數器(如 Gets/sec、Sets/sec、Cache Hits/sec、Avg Get Time 等),加入即可即時監控。
| 現象 | 原因 | 解決 |
|---|---|---|
| 計數器類別不存在 | installutil 未成功或 DLL 版本不符 | 以管理員執行 installutil,確認 .NET 版本對應 |
| 類別存在但無執行個體 | 未在 config 中配置 <performanceMonitor/> 或應用未啟動 | 補全配置並重啟應用,觸發快取操作 |
| 執行個體名稱重複 | 多應用共用同一 name | 每個應用/應用程式池設定唯一 name |
核心在於 系統層安裝計數器 + 應用層配置 performanceMonitor 兩步缺一不可。配置完成後,即可透過 Windows 內建效能監視器即時觀測 EnyimMemcached 的吞吐、命中率、延遲等關鍵指標,為效能調優提供數據支撐。