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]> 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 (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]> 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
--
Yiftach Shoolman
+972-54-7634621