Great, thanks. I will have a closer look at what I am doing. and see how the commands are moving around. Thanks for your thoughts.
On Mon, May 19, 2014 at 1:25 PM, Ryan McElroy <ryan...@gmail.com> wrote: > I took a quick look at the code, specifically here: > https://code.google.com/p/beitmemcached/source/browse/trunk/ClientLibrary/MemcachedClient.cs#354 > > As far as I can tell, the client is probably doing the right thing (eg, > sharding across memcached instances as expected). I didn't see options to > even attempt replication. > > I think this comes down to a bug in your code or error in methodology, or > a bug in the library. I can't tell which from the information you provided. > > I do most of my coding in PHP, C, and Python, so I can't help much with > .NET stuff, sorry. > > ~Ryan > > > > On Mon, May 19, 2014 at 9:53 AM, Jonathan Minond <jmin...@gmail.com>wrote: > >> Hi Ryan, >> >> Thanks for getting back to me. >> I have the code for the BtIT client, so I can look... can you give me a >> hint what I would be looking for? >> It's an open source imp ( >> https://code.google.com/p/beitmemcached/source/browse/ ) >> If not, do you have a .NET client you would recommend, or is more widely >> used/supported perhaps? >> All of my interaction with BT / Memcached is wrapped in one library, so I >> can swap the back end client fairly easily if that would be better. >> >> >> >> >> On Sat, May 17, 2014 at 9:19 PM, Ryan McElroy <ryan...@gmail.com> wrote: >> >>> memcached itself knows nothing about other nodes in a system. How the >>> keys are distributed is entirely dependent upon your client implementation. >>> I'm not familiar with BeIT client, but from reading through the wiki page, >>> I would expect it to be splitting the keys among your memcache servers >>> approximately equally. I say approximately, because hashing functions are >>> probabilisitic. With only 27 keys, I wouldn't be surprised to see >>> significant deviation here. At large numbers of keys, I would expect pretty >>> even distribution though. >>> >>> I think more important than how you are fetching keys from each server >>> is how you're using the BeIT client -- which you don't show here. Do you >>> set it up to do replication or sharding? If replication, what you're seeing >>> is expected. If sharding, I'd say it's unexpected. >>> >>> You can figure out what it is doing by using a packet sniffer (eg, >>> ngrep, wireshark) and seeing when the client sets keys to which boxes. >>> >>> ~Ryan >>> >>> >>> On Thu, May 15, 2014 at 1:39 PM, Jonathan Minond <jmin...@gmail.com>wrote: >>> >>>> I am seeing something that struck me as a little odd. >>>> >>>> From my reading, as I understand, in a memcached environment, each >>>> memcache node contains a portion of the objects in the cluster. >>>> >>>> So, I would expect something like if I have 27 keys and 3 nodes. >>>> >>>> Each node is holding ~9 keys/objects.... is that correct to assume? >>>> >>>> So, to test out... >>>> <add key="MemCached.Endpoint" >>>> value="server1:11211,server2:11211,server3:11211" /> >>>> >>>> As a client, I am using the BeIT Memcached Client for .NET ( >>>> code.google.com/p/beitmemcached/) >>>> >>>> To get the keys, I am using Telnet, to get slabs, and then the items, >>>> as described by Boris here: >>>> groups.google.com/forum/#!topic/memcached/YyzonP9HUi0 >>>> >>>> 1) I loop through my collection of hosts >>>> 2) Do the telnet process against that host >>>> 3) Collect all the info. >>>> >>>> It seems to me, that I am getting the same keys listed on all 3 >>>> servers..... ? >>>> *I did not expect this, and I am hoping someone can explain.* >>>> >>>> To clarify: >>>> This is how I do a GET: >>>> >>>> >>>> And this is how I am trying to get the list of keys.... there is a bit >>>> of debug code buried in there, but it should still be clear: >>>> (TelNetConn = A simple telnet helper) >>>> >>>> List<string> ret = new List<string>(); >>>> >>>> string memCacheEndPointAddress = >>>> Config.GetValueWithDefault("MemCached.Endpoint", "localhost:11211"); >>>> >>>> string[] points = memCacheEndPointAddress.Split(new[] { ',' }, >>>> StringSplitOptions.RemoveEmptyEntries); >>>> >>>> foreach (string h in points) >>>> { >>>> string[] hParts = h.Split(new[] { ':' }, >>>> StringSplitOptions.RemoveEmptyEntries); >>>> >>>> string cacheHost = hParts[0]; >>>> TelNetConn tc = new TelNetConn(cacheHost, >>>> Convert.ToInt32(hParts[1])); >>>> >>>> if (tc.IsConnected) >>>> { >>>> ret.Add("HOST: " + cacheHost); >>>> >>>> tc.WriteLine("stats items"); >>>> String s = tc.Read(); >>>> String[] sLines = s.Split( >>>> new string[] { Environment.NewLine }, >>>> StringSplitOptions.RemoveEmptyEntries); >>>> >>>> foreach (string sl in sLines) >>>> { >>>> if (sl == "END") continue; >>>> >>>> String[] slParts = sl.Split(new[] { ':' >>>> }, StringSplitOptions.RemoveEmptyEntries); >>>> >>>> int slabID = >>>> Convert.ToInt32(slParts[1]); >>>> string slabType = slParts[2]; >>>> >>>> if (slabType.StartsWith("number") || >>>> slabType.StartsWith("age")) >>>> { >>>> tc.WriteLine("stats cachedump " + >>>> slabID + " 100"); >>>> >>>> s = tc.Read(); >>>> >>>> if (!String.IsNullOrEmpty(s)) >>>> { >>>> if (s != "END") >>>> { >>>> // ret.Add("FULL: " + s); >>>> >>>> if (s.StartsWith("ITEM ")) >>>> { >>>> string[] itemparts = >>>> s.Split(new[] { ' ' }, StringSplitOptions.None); >>>> string key = >>>> itemparts[1]; >>>> ret.Add("ITEM: " + key); >>>> } >>>> } >>>> } >>>> } >>>> } >>>> >>>> } >>>> else >>>> { >>>> ret.Add("HOST: " + cacheHost + " NOT >>>> CONNECTED"); >>>> } >>>> >>>> tc.Dispose(); >>>> } >>>> >>>> -- >>>> >>>> --- >>>> You received this message because you are subscribed to the Google >>>> Groups "memcached" group. >>>> To unsubscribe from this group and stop receiving emails from it, send >>>> an email to memcached+unsubscr...@googlegroups.com. >>>> >>>> For more options, visit https://groups.google.com/d/optout. >>>> >>> >>> -- >>> >>> --- >>> You received this message because you are subscribed to a topic in the >>> Google Groups "memcached" group. >>> To unsubscribe from this topic, visit >>> https://groups.google.com/d/topic/memcached/G4el5l0eD7I/unsubscribe. >>> To unsubscribe from this group and all its topics, send an email to >>> memcached+unsubscr...@googlegroups.com. >>> >>> For more options, visit https://groups.google.com/d/optout. >>> >> >> -- >> >> --- >> You received this message because you are subscribed to the Google Groups >> "memcached" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to memcached+unsubscr...@googlegroups.com. >> For more options, visit https://groups.google.com/d/optout. >> > > -- > > --- > You received this message because you are subscribed to a topic in the > Google Groups "memcached" group. > To unsubscribe from this topic, visit > https://groups.google.com/d/topic/memcached/G4el5l0eD7I/unsubscribe. > To unsubscribe from this group and all its topics, send an email to > memcached+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/d/optout. > -- --- You received this message because you are subscribed to the Google Groups "memcached" group. To unsubscribe from this group and stop receiving emails from it, send an email to memcached+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.