[support] Problem with Drupals built in cache

Margusja margus at roo.ee
Fri Jan 21 08:13:48 UTC 2011


I tested cacherouter in my devel server and it works much better. So big 
tnx to Jamie

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


On 1/20/11 9:06 PM, Margusja wrote:
> 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