Yup. Thats how I've got the production environment set up. We have two
memcache server, each with a decent amount of RAM. The same thing
happens there (though, not always to both memcache servers. Sometimes
it happens to one or the other.) Also, I've written a small memcache
test script that just tries to set and get a very small value. That
works sometimes, and it fails other times. That's what I find so odd.
Thanks,
Joseph Brower
On 03/01/2012 01:34 AM, Yiftach Shoolman wrote:
Hi Joseph,
I guess you know that your Memcached size if only 10MB (STAT
limit_maxbytes 10485760). Magento zend cache (your objects) tests this
size prior to setting object, and if the limit is reached (STAT bytes)
you cannot set any new object in the cache, but you can set new
sessions - so that might be your problem , though not according to the
stats u sent.
One more thing, it is better to deploy Magento with 2 Memcached
servers, one for the cache and one for the session, so whenever you
upgrade your site and flush the objects, you don't need to either
flush your sessions - see typical configuration of one of our
customers below.
Best,
Yiftach
config>
<global>
<session_cache_limiter></session_cache_limiter>
<session_save><![CDATA[memcache]]></session_save>
<session_save_path><![CDATA[DNSADDRESS]></session_save_path>
<cache>
<backend>memcached</backend><!-- apc / memcached / xcache / empty=file -->
<slow_backend>database</slow_backend> <!-- database / file (default) -
used for 2 levels cache setup, necessary for all shared memory
storages -->
<slow_backend_store_data>0</slow_backend_store_data>
<memcached><!-- memcached cache backend related config -->
<servers><!-- any number of server nodes can be included -->
<server>
<host><![CDATA[NSADDRESS]]></host>
<port><![CDATA[10245]]></port>
<persistent><![CDATA[1]]></persistent>
<weight><![CDATA[1]]></weight>
<timeout><![CDATA[10]]></timeout>
<retry_interval><![CDATA[10]]></retry_interval>
<status><![CDATA[1]]></status>
</server>
</servers>
<compression><![CDATA[0]]></compression>
<cache_dir><![CDATA[]]></cache_dir>
<hashed_directory_level><![CDATA[]]></hashed_directory_level>
<hashed_directory_umask><![CDATA[]]></hashed_directory_umask>
<file_name_prefix><![CDATA[]]></file_name_prefix>
</memcached>
</cache>
On Thu, Mar 1, 2012 at 9:59 AM, Joseph Brower <[email protected]
<mailto:[email protected]>> wrote:
Thanks for the response.
I've been testing as best I can and I've found that setting and
getting fail. I get either no output, or a
Notice: Memcache::set(): Server my.memcachehost.com
<http://my.memcachehost.com> (tcp 11211) failed with: Received
malformed response (0) in /var/www/memcache.php on line 5
I'm able to continue setting and getting via telnet without any
issues. Also, if I redeploy my webserver (onto somewhere else in
our cluster) things sometimes are happy, sometimes they continue
to fail. When I look at netstat, I don't see the connections in
memcache. When looking at the output from memcached, it doesn't
show any additional output (as if the connection never reaches
it.) I'm confident it's not my firewall rules, as I've got
everything automated so that my configuration is consistent
between versions. I've also ruled out the extension being used.
It happens using the memcached, memcache, and an extensionless
method that I found.
I'm running on Ubuntu 10.04. All of the other services on this
cluster don't have any connection issues (mysql, http, load
balancer, ssl terminator) and they all use my same script for
configuring the firewall rules appropriately.
All of the stats look ok. I'm not maxing out the connection
limit, and I am nowhere near memory limits. This happens when
using memcache for sessions and for page cache.
STAT pid 126
STAT uptime 2017
STAT time 1330588738
STAT version 1.4.10
STAT libevent 1.4.13-stable
STAT pointer_size 64
STAT rusage_user 0.040000
STAT rusage_system 0.160000
STAT curr_connections 10
STAT total_connections 37
STAT connection_structures 11
STAT reserved_fds 20
STAT cmd_get 45
STAT cmd_set 35
STAT cmd_flush 0
STAT cmd_touch 0
STAT get_hits 40
STAT get_misses 5
STAT delete_misses 0
STAT delete_hits 0
STAT incr_misses 0
STAT incr_hits 10
STAT decr_misses 0
STAT decr_hits 0
STAT cas_misses 0
STAT cas_hits 0
STAT cas_badval 0
STAT touch_hits 0
STAT touch_misses 0
STAT auth_cmds 0
STAT auth_errors 0
STAT bytes_read 1942
STAT bytes_written 1672
STAT limit_maxbytes 10485760
STAT accepting_conns 1
STAT listen_disabled_num 0
STAT threads 4
STAT conn_yields 0
STAT hash_power_level 16
STAT hash_bytes 524288
STAT hash_is_expanding 0
STAT expired_unfetched 0
STAT evicted_unfetched 0
STAT bytes 303
STAT curr_items 4
STAT total_items 27
STAT evictions 0
STAT reclaimed 0
That's how some of my stats are. I've tried various sizes, this
is an exceptionally small one that I was using only for testing.
Thanks,
Joseph Brower
On 02/29/2012 11:16 PM, Yiftach Shoolman wrote:
Hi Joseph,
Can you elaborate a bit more on your problem, what do you mean
by unavailable, can you set/get keys ? are your app-->mmemcached
tcp connections disconnected ? have you reached to your memcached
memory limit (please send memcach stats) ? something else ?
Also, specific question about Magento, does it happen on the
session caching (I guess so) or the object caching the part that
is based on zend caching ?
Yiftach
On Thu, Mar 1, 2012 at 3:41 AM, Joseph Brower
<[email protected] <mailto:[email protected]>> wrote:
When I'm using Memcache (the PECL extension) with Magento,
everything
works well for an indeterminate amount of time. After some time
passes, Memcached becomes unavailable. This is the odd part
though, I
can still telnet into MemcacheD and issue commands. I have 4
webservers all connecting to one memcache instance. Does
anyone have
any ideas what might be going on?
Thanks,
Joseph Brower
--
Yiftach Shoolman
+972-54-7634621 <tel:%2B972-54-7634621>
--
Yiftach Shoolman
+972-54-7634621 <tel:%2B972-54-7634621>