[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