[support] Problem with Drupals built in cache

Margusja margus at roo.ee
Thu Jan 20 19:06:24 UTC 2011


Tnx, I'll try and will inform you about a result.

BTW.

inspected memcache debug output and found lines:
<32 get 
cache_page-http%3A%2F%2Fhostname%2Fclient%2Fdrupal%2Fsites%2Fall%2Fmodules%2Fad%2Fserve.php%3Fq%3D1%26t%3D0%26u%3Dnode%252F1029%26l%3Dliising%252Fkoostoopartnerid
 >32 END


<32 get 
cache_page-http%3A%2F%2Fhostname%2Fclient%2Fdrupal%2Fsites%2Fall%2Fmodules%2Fad%2Fserve.php%3Fq%3D1%26t%3D0%26u%3Dnode%252F1029%26l%3Dliising%252Fkoostoopartnerid
 >32 END


But I can't see any STORED with thous keys.

Tervitades, Margus (Margusja) Roo
+372 51 48 780
http://margus.roo.ee
msn: margusja at kodila.ee
skype: margusja


On 1/20/11 8:45 PM, Jamie Holly wrote:
> Just use cacherouter instead of the memcache module. The configurations
> in settings.php are a little different, but that's what I use without
> any problem.
>
> Jamie Holly
> http://www.intoxination.net
> http://www.hollyit.net
>
>
> On 1/20/2011 12:59 PM, Margusja wrote:
>> So, I can replace my regular cache module with cacherouter and pressflow
>> and memcache should work parallels?
>>
>> Tervitades, Margus (Margusja) Roo
>> +372 51 48 780
>> http://margus.roo.ee
>> msn: margusja at kodila.ee
>> skype: margusja
>>
>>
>> On 1/20/11 7:06 PM, Jamie Holly wrote:
>>>   You're using the regular memcache module. I've never used that one.
>>>   Maybe someone who has would have an idea. Personally, I use cacherouter
>>>   since it offers more features and flexibility.
>>>
>>>   Jamie Holly
>>>   http://www.intoxination.net
>>>   http://www.hollyit.net
>>>
>>>
>>>   On 1/20/2011 10:32 AM, Margusja wrote:
>>>>   In error log there is no problems recorded.
>>>>
>>>>   tnx for link. I'll check it out. Maybe it helps me closer to resolve my
>>>>   problem.
>>>>
>>>>   config lines from settings.php
>>>>              $conf['cache_inc'] = './sites/all/modules/memcache/memcache.inc';
>>>>              $conf['memcache_key_prefix'] = 'seb_default';
>>>>
>>>>   Tervitades, Margus (Margusja) Roo
>>>>   +372 51 48 780
>>>>   http://margus.roo.ee
>>>>   msn: margusja at kodila.ee
>>>>   skype: margusja
>>>>
>>>>
>>>>   On 1/20/11 5:14 PM, Jamie Holly wrote:
>>>>>     You got a lot of misses in there. Have you checked your error logs to
>>>>>     see if anything is going on? One thing that is possible is that you are
>>>>>     hitting the 1mb limit for objects in memcache with the variable cache.
>>>>>     This thread has some details on it:
>>>>>
>>>>>     http://groups.drupal.org/node/116764
>>>>>
>>>>>     Also if you could post your memcache configuration from settings.php to
>>>>>     see if anything is going on in there.
>>>>>
>>>>>     Jamie Holly
>>>>>     http://www.intoxination.net
>>>>>     http://www.hollyit.net
>>>>>
>>>>>
>>>>>     On 1/20/2011 10:01 AM, Margusja wrote:
>>>>>>     Tnx for hints.
>>>>>>
>>>>>>     I enabled memcache in my PHP conf. And I think the module is loaded.
>>>>>>     [16:50:57 root at arendus ~]# php -i | grep memcache
>>>>>>     memcache
>>>>>>     memcache support =>       enabled
>>>>>>     memcache.allow_failover =>       1 =>       1
>>>>>>     memcache.chunk_size =>       32768 =>       32768
>>>>>>     memcache.compress_threshold =>       20000 =>       20000
>>>>>>     memcache.default_port =>       11211 =>       11211
>>>>>>     memcache.hash_function =>       crc32 =>       crc32
>>>>>>     memcache.hash_strategy =>       consistent =>       consistent
>>>>>>     memcache.lock_timeout =>       15 =>       15
>>>>>>     memcache.max_failover_attempts =>       20 =>       20
>>>>>>     memcache.protocol =>       ascii =>       ascii
>>>>>>     memcache.redundancy =>       1 =>       1
>>>>>>     memcache.session_redundancy =>       2 =>       2
>>>>>>     Registered save handlers =>       files user memcache
>>>>>>
>>>>>>     [16:49:22 root at arendus ~]# echo stats | nc localhost 11211
>>>>>>     STAT pid 30211
>>>>>>     STAT uptime 23950
>>>>>>     STAT time 1295535057
>>>>>>     STAT version 1.2.8
>>>>>>     STAT pointer_size 32
>>>>>>     STAT rusage_user 0.130980
>>>>>>     STAT rusage_system 0.311952
>>>>>>     STAT curr_items 473
>>>>>>     STAT total_items 1763
>>>>>>     STAT bytes 587316
>>>>>>     STAT curr_connections 10
>>>>>>     STAT total_connections 242
>>>>>>     STAT connection_structures 15
>>>>>>     STAT cmd_flush 0
>>>>>>     STAT cmd_get 9007
>>>>>>     STAT cmd_set 1763
>>>>>>     STAT get_hits 1025
>>>>>>     STAT get_misses 7982
>>>>>>     STAT evictions 0
>>>>>>     STAT bytes_read 11112904
>>>>>>     STAT bytes_written 8412213
>>>>>>     STAT limit_maxbytes 67108864
>>>>>>     STAT threads 5
>>>>>>     STAT accepting_conns 1
>>>>>>     STAT listen_disabled_num 0
>>>>>>     END
>>>>>>
>>>>>>     Still in mysqld log:
>>>>>>     110120 16:53:15       4102 Connect    user at localhost on db
>>>>>>                   4102 Query       SET NAMES "utf8"
>>>>>>                   4102 Query       SELECT 1 FROM access WHERE type = 'host'
>>>>>>     AND 'IP' LIKE mask AND status = 0 LIMIT 0, 1
>>>>>>                   4102 Query       INSERT INTO semaphore (name, value, expire)
>>>>>>     VALUES ('variable_cache_regenerate',
>>>>>>     '14419249754d384c5bd38895.47612777', 1295535225.8664)
>>>>>>                   4102 Query       SELECT * FROM variable
>>>>>>                   4102 Query       DELETE FROM semaphore WHERE name =
>>>>>>     'variable_cache_regenerate' AND value = '14419249754d384c5bd38895.47612777'
>>>>>>                   4102 Query       SELECT name, filename, throttle FROM system
>>>>>>     WHERE type = 'module' AND status = 1 AND bootstrap = 1 ORDER BY weight
>>>>>>     ASC, filename ASC
>>>>>>                   4102 Query       SELECT * FROM languages ORDER BY weight
>>>>>>     ASC, name ASC
>>>>>>                   4102 Query       SELECT dst FROM url_alias LIMIT 0, 1
>>>>>>
>>>>>>
>>>>>>
>>>>>>     Tervitades, Margus (Margusja) Roo
>>>>>>     +372 51 48 780
>>>>>>     http://margus.roo.ee
>>>>>>     msn: margusja at kodila.ee
>>>>>>     skype: margusja
>>>>>>
>>>>>>
>>>>>>     On 1/20/11 4:03 PM, Jamie Holly wrote:
>>>>>>>       Then I would check phpinfo to make sure that the memcache extension is
>>>>>>>       loading into PHP (you can do this from admin ->        reports ->        status and
>>>>>>>       then clicking on your PHP version number).
>>>>>>>
>>>>>>>       If that's showing up ok, you can run a command from the terminal to make
>>>>>>>       sure things are being written/read from memcache:
>>>>>>>
>>>>>>>       echo stats | nc {memcache address} {memcache port}
>>>>>>>
>>>>>>>       Your main things to look at are the hits, misses, bytes and connections.
>>>>>>>
>>>>>>>       There are also some versions of memcache + the PHP extension that don't
>>>>>>>       work well together. This can be a hit and miss thing finding them. I
>>>>>>>       know there was a combination in the CentOS repos a year or so ago that
>>>>>>>       caused problems. Getting the latest version of the PHP extension and
>>>>>>>       building it from source would fix that.
>>>>>>>
>>>>>>>       Jamie Holly
>>>>>>>       http://www.intoxination.net
>>>>>>>       http://www.hollyit.net
>>>>>>>
>>>>>>>
>>>>>>>       On 1/20/2011 8:43 AM, Margusja wrote:
>>>>>>>>       Thx for a replay. I checked again my memcache and I think it works fine.
>>>>>>>>
>>>>>>>>       [15:40:16 root at arendus ~]# telnet localhost 11211
>>>>>>>>       Trying 127.0.0.1...
>>>>>>>>       Connected to localhost.
>>>>>>>>       Escape character is '^]'.
>>>>>>>>       stats
>>>>>>>>       STAT pid 30211
>>>>>>>>       STAT uptime 19724
>>>>>>>>       STAT time 1295530831
>>>>>>>>       STAT version 1.2.8
>>>>>>>>       STAT pointer_size 32
>>>>>>>>       STAT rusage_user 0.094985
>>>>>>>>       STAT rusage_system 0.230964
>>>>>>>>       STAT curr_items 67
>>>>>>>>       STAT total_items 1089
>>>>>>>>       STAT bytes 168012
>>>>>>>>       STAT curr_connections 11
>>>>>>>>       STAT total_connections 188
>>>>>>>>       STAT connection_structures 14
>>>>>>>>       STAT cmd_flush 0
>>>>>>>>       STAT cmd_get 6580
>>>>>>>>       STAT cmd_set 1089
>>>>>>>>       STAT get_hits 711
>>>>>>>>       STAT get_misses 5869
>>>>>>>>       STAT evictions 0
>>>>>>>>       STAT bytes_read 9254362
>>>>>>>>       STAT bytes_written 5742821
>>>>>>>>       STAT limit_maxbytes 67108864
>>>>>>>>       STAT threads 5
>>>>>>>>       STAT accepting_conns 1
>>>>>>>>       STAT listen_disabled_num 0
>>>>>>>>       END
>>>>>>>>
>>>>>>>>       rows from settings.php
>>>>>>>>       if(extension_loaded('memcache')){
>>>>>>>>                  $conf['cache_inc'] = './sites/all/modules/memcache/memcache.inc';
>>>>>>>>                  $conf['memcache_key_prefix'] = 'xxx';
>>>>>>>>       }
>>>>>>>>
>>>>>>>>       Tervitades, Margus (Margusja) Roo
>>>>>>>>       +372 51 48 780
>>>>>>>>       http://margus.roo.ee
>>>>>>>>       msn: margusja at kodila.ee
>>>>>>>>       skype: margusja
>>>>>>>>
>>>>>>>>
>>>>>>>>       On 1/20/11 2:45 PM, Jamie Holly wrote:
>>>>>>>>>         Drupal is still going to check the access table to see if you have any
>>>>>>>>>         blocks in there for the current user, even if the table is empty.
>>>>>>>>>
>>>>>>>>>         The semaphore you are seeing is to prevent a cache stampede. You said
>>>>>>>>>         that once you disabled memcache, everything worked fine. It looks like
>>>>>>>>>         you have a problem with either your memcache server, the PHP memcache
>>>>>>>>>         extension or your settings in Drupal for memcache. I would check the
>>>>>>>>>         server first, since that's the easier. You can just do a telnet to check
>>>>>>>>>         that out. From shell:
>>>>>>>>>
>>>>>>>>>         telnet (server address) (server port)
>>>>>>>>>
>>>>>>>>>         See if it connects OK.
>>>>>>>>>
>>>>>>>>>         As far as Pressflow+Memcache, yeah they work great together. I run that
>>>>>>>>>         combination for a couple of clients, including one that has seen over
>>>>>>>>>         150,000 page an hour, and never had a problem.
>>>>>>>>>
>>>>>>>>>         Jamie Holly
>>>>>>>>>         http://www.intoxination.net
>>>>>>>>>         http://www.hollyit.net
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>         On 1/20/2011 4:12 AM, Margusja wrote:
>>>>>>>>>>         If I disable memcache support in PHP then in the problematic server I
>>>>>>>>>>         see that there no problem anymore. So can memcache and pressflow cache
>>>>>>>>>>         work parallel ?
>>>>>>>>>>
>>>>>>>>>>         Tervitades, Margus (Margusja) Roo
>>>>>>>>>>         +372 51 48 780
>>>>>>>>>>         http://margus.roo.ee
>>>>>>>>>>         msn: margusja at kodila.ee
>>>>>>>>>>         skype: margusja
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>         On 1/20/11 10:09 AM, Margusja wrote:
>>>>>>>>>>>           Hi
>>>>>>>>>>>
>>>>>>>>>>>           I have two separate Drupal instances (Pressflow 6.19) In first one the
>>>>>>>>>>>           local cache works fine. Sql log:
>>>>>>>>>>>                       326 Query       SET NAMES "utf8"
>>>>>>>>>>>                       326 Query       SELECT 1 FROM access WHERE type = 'host' AND
>>>>>>>>>>>           '195.50.208.170' LIKE mask AND status = 0 LIMIT 0, 1
>>>>>>>>>>>                       326 Query       SELECT data, created, headers, expire,
>>>>>>>>>>>           serialized FROM cache WHERE cid = 'variables'
>>>>>>>>>>>                       326 Query       SELECT data, created, headers, expire,
>>>>>>>>>>>           serialized FROM cache_page WHERE cid = 'http://IP/path/to/node'
>>>>>>>>>>>                       326 Query       SELECT name, filename, throttle FROM system
>>>>>>>>>>>           WHERE type = 'module' AND status = 1 AND bootstrap = 1 ORDER BY weight
>>>>>>>>>>>           ASC, filename ASC
>>>>>>>>>>>                       326 Query       SELECT name, filename, throttle FROM system
>>>>>>>>>>>           WHERE type = 'module' AND status = 1 AND bootstrap = 1 ORDER BY weight
>>>>>>>>>>>           ASC, filename ASC
>>>>>>>>>>>                       326 Quit
>>>>>>>>>>>
>>>>>>>>>>>           But If I request the same node in the second machine. The code is same,
>>>>>>>>>>>           then the Sql log is:
>>>>>>>>>>>                         122 Quit
>>>>>>>>>>>                         123 Query       SET NAMES "utf8"
>>>>>>>>>>>                         123 Query       SELECT 1 FROM access WHERE type = 'host'
>>>>>>>>>>>           AND 'IP' LIKE mask AND status = 0 LIMIT 0, 1
>>>>>>>>>>>                         123 Query       INSERT INTO semaphore (name, value, expire)
>>>>>>>>>>>           VALUES ('variable_cache_regenerate',
>>>>>>>>>>>           '17865562914d37e5d81acd80.47344784', 1295508982.1098)
>>>>>>>>>>>                         123 Query       SELECT * FROM variable
>>>>>>>>>>>                         123 Query       DELETE FROM semaphore WHERE name =
>>>>>>>>>>>           'variable_cache_regenerate' AND value = '17865562914d37e5d81acd80.47344784'
>>>>>>>>>>>                         123 Query       SELECT name, filename, throttle FROM system
>>>>>>>>>>>           WHERE type = 'module' AND status = 1 AND bootstrap = 1 ORDER BY weight
>>>>>>>>>>>           ASC, filename ASC
>>>>>>>>>>>                         123 Query       SELECT * FROM languages ORDER BY weight
>>>>>>>>>>>           ASC, name ASC
>>>>>>>>>>>                         123 Query       SELECT dst FROM url_alias LIMIT 0, 1
>>>>>>>>>>>                         123 Query       SELECT src FROM url_alias WHERE dst =
>>>>>>>>>>>           'hoiused-ja-investeerimine' AND language IN('et', '') ORDER BY language
>>>>>>>>>>>           DESC, pid DESC
>>>>>>>>>>>                         123 Query       SELECT name, filename, throttle FROM system
>>>>>>>>>>>           WHERE type = 'module' AND status = 1 ORDER BY weight ASC, filename ASC
>>>>>>>>>>>                         123 Query       INSERT INTO semaphore (name, value, expire)
>>>>>>>>>>>           VALUES ('locale_cache_et', '17865562914d37e5d81acd80.47344784',
>>>>>>>>>>>           1295508982.4035)
>>>>>>>>>>>                         123 Query       SELECT s.source, t.translation, t.language
>>>>>>>>>>>           FROM locales_source s LEFT JOIN locales_target t ON s.lid = t.lid AND
>>>>>>>>>>>           t.language = 'et' WHERE s.textgroup = 'default' AND s.version = '6.19'
>>>>>>>>>>>           AND LENGTH(s.source)<            75
>>>>>>>>>>>                         123 Query       DELETE FROM semaphore WHERE name =
>>>>>>>>>>>           'locale_cache_et' AND value = '17865562914d37e5d81acd80.47344784'
>>>>>>>>>>>                         123 Query       SELECT s.lid, t.translation, s.version FROM
>>>>>>>>>>>           locales_source s LEFT JOIN locales_target t ON s.lid = t.lid AND
>>>>>>>>>>>           t.language = 'et' WHERE s.source = 'Stores details about batches
>>>>>>>>>>>           (processes that run in multiple HTTP requests).' AND s.textgroup =
>>>>>>>>>>>           'default'
>>>>>>>>>>>           ....
>>>>>>>>>>>           ....
>>>>>>>>>>>           loads of SQLs
>>>>>>>>>>>
>>>>>>>>>>>           The main question why does the last one ask something from semaphore? In
>>>>>>>>>>>           both servers access table is empty. At first I thought the condition
>>>>>>>>>>>           came from that SQL: SELECT 1 FROM access WHERE type = 'host' AND 'IP'
>>>>>>>>>>>           LIKE mask AND status = 0 LIMIT 0, 1 but as I said in both servers access
>>>>>>>>>>>           table is empty.
>>>>>>>>>>>
>>>>>>>>>>>           In both solutions caches are enabled.
>>>>>>>>>>>
>>>>>>>>>>>           Any hints?
>>>>>>>>>>>


More information about the support mailing list