Memcached安裝配置最大使用內存


項目做了很多,雖然用memcached的項目也有很多。但是沒有太關注安裝memcached細節問題

最近做了一個項目,把很多東西都放到memcached緩存中,進行緩存。

因為內容可能較多,可能會有200M~500M的樣子。

這樣就要在安裝memcached的時候。把最大內存使用提高,不然只能使用默認的64M

所以下載了memcached文件1.2.6版本

然后用命令行進行安裝 

memcached -d install -m 500

本想以為這樣安裝就萬事大吉了。因為看到所有的文章都是說這樣安裝-m參數是用來修改最大使用內存

但是用telnet 127.0.0.1 11211

stats

去查看memcached狀態的時候。發現最大使用內存還是STAT limit_maxbytes 67108864 (64M)

我不是明明加上了-m參數嗎。為什么這個值還是64M呢。

這不是我想要的。所以這次安裝沒有成功,把這個服務刪除

然后直接用memcached -m 500直接這樣在命令行運行,這樣發現竟然成功的把最大使用內存提高到了500M

但是又有問題。我這樣運行的方式命令行不能關閉。要一直開着才可以。如果把命令行關了。memcached就沒有運行了

雖然這樣運行的方式不是以服務的方式運行,而是以當前用戶進行運行,但確實是把最大使用內存提高了。

雖然修改可以。但是如果命令行不能關閉,要一直運行。這是在服務器上是行的。

最終還是得以服務的方式運行,所以這種方式還是放棄了。

最后。還是用第一次的方式安裝,然后打開服務去看

發現一個問題,上圖片

我明明是有用-m 500 而在服務屬性那里。還是只有-d runservice,沒有我們用的-m 500的參數

所以在我們啟動的時候。還是以默認的64M最大使用內存來用。找到問題就好解決,

開始我還想用sc create服務的方式。來創建,按理說是可以加上-m參數。這個沒有做實驗。

我是直接修改注冊表的方式,打開注冊表,查找"memecached Server"的鍵

我們可以找到

修改ImagePath,在-d runserver前面加上-m 500保存

然后你再看看服務屬性,發現已經有了-m 500參數

然后啟動服務,現在就可以看到最大使用內存已經修改到500M了

事情到止已經OK,為了這破問題,花了我半天的時間。然后在博客園發布了一個博問

事情還是沒有解決。我還以為我設置了-m參數,用stats去看還是64M,

還專門寫了一個測試庫來測試到是不是顯示問題

 1 static void Main(string[] args)
 2         {
 3             MemcachedClient cacheClient = new MemcachedClient();
 4             long count = default(long);
 5             string val = "abceefgabceefgabceefgabceefgabceefgabceefgabceefgabceefgabceefgabceefgabceefgabceefgabceefgabceefgabceefgabceefgabceefgabceefgabceefgabceefgabceefgabceefgabceefgabceefgabceefgabceefgabceefgabceefgabceefgabceefgabceefgabceefgabceefgabceefgabceefgabceefgabceefgabceefgabceefgabceefgabceefgabceefgabceefgabceefgabceefgabceefgabceefgabceefgabceefgabceefgabceefgabceefgabceefgabceefgabceefgabceefgabceefg";
 6             for (int i = 0; i < 5; i++) {
 7                 val = val + val;
 8             }
 9             long MaxKey = default(long);
10             if (cacheClient.Get("MaxKey") != null) MaxKey = cacheClient.Get<long>("MaxKey");
11             string key = "Key" + MaxKey.ToString();
12             while (cacheClient.Store(StoreMode.Add, key, MaxKey.ToString() + val, new TimeSpan(1, 0, 0)))
13             {
14                 string cacheVal = cacheClient.Get<string>(key);
15                 cacheClient.Store(StoreMode.Set, "MaxKey", count);
16                 MaxKey += 1;
17                 key = "Key" + MaxKey.ToString();
18                 Console.WriteLine(MaxKey.ToString());
19                 if ((MaxKey % 5000) == 0) Console.ReadKey();
20             }
21             Console.ReadKey();
22         }
Memcached Test

下面是測試用代碼的配置文件

 1 <?xml version="1.0" encoding="utf-8" ?>
 2 <configuration>
 3     <configSections>
 4         <sectionGroup name="enyim.com">
 5             <section name="memcached" type="Enyim.Caching.Configuration.MemcachedClientSection, Enyim.Caching" />
 6         </sectionGroup>
 7         <section name="memcached" type="Enyim.Caching.Configuration.MemcachedClientSection, Enyim.Caching" />
 8     </configSections>
 9     <enyim.com>
10         <memcached>
11             <servers>
12                 <add address="127.0.0.1" port="11211" />
13             </servers>
14             <socketPool minPoolSize="10" maxPoolSize="100" connectionTimeout="00:00:10" deadTimeout="00:02:00" />
15         </memcached>
16     </enyim.com>
17     <memcached keyTransformer="Enyim.Caching.TigerHashTransformer, Enyim.Caching">
18         <servers>
19             <add address="127.0.0.1" port="11211" />
20         </servers>
21         <socketPool minPoolSize="2" maxPoolSize="100" connectionTimeout="00:00:10" deadTimeout="00:02:00" />
22     </memcached>
23 </configuration>
Memcached Config

問題解決。花了我半天的時候。在打算放棄的時候。發現了服務啟去方面的問題。

心情很happy啊。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM