Wie konfiguriere ich Memcached richtig mit session failover und mehreren memcached servern

Aus der Doku zu memcached ist mir nicht klar in welche config der Eintrag

 'session' =\> array(
     'save\_handler' =\> 'memcached',
     'save\_path' =\> "localhost:11211",
 ), 

'backendsession' =\> array(  
     'save\_handler' =\> 'memcached',  
     'save\_path' =\> "localhost:11211",  
 ),

muss, weil es in der config.php im webroot nichts dazu gibt.

Und unterstützt shopware sessions.redundancy also das schreiben der session auf mehrere memcached Server?

also sowas wie es auch in der PHP.ini steht:

in der memcached.ini steht:

 extension=memcached.so
 memcached.allow\_failover=1
 memcached.session\_redundancy=3

in der php.ini

 session.save\_handler = memcached
 session.save\_path = "tcp://10.0.0.1:11211,tcp://10.0.0.2:11211"

muss ich die session.redundancy in shopware auch mit angeben wie in den ini’s?

 

 'session' =\> array(
     'save\_handler' =\> 'memcached',
     'save\_path' =\> "tcp://10.0.0.1:11211,tcp://10.0.0.2:11211",
     'allow\_failover' =\> "true",
     'redundancy' =\> "3", // must be one more than servers
 ), 

Am einfachsten wäre, wenn man in shopware gar nichts angeben müßte und shopware die ini Einstellungen benutzt…

 

Hi,

die Memcache-Konfiguration wird an PHP durchgereicht - wir haben nur noch einen SessionHandler für den Datenbank-Handler, andere Handler gehen also über PHP. Von daher sollten auch die von dir genannten Konfigurationsmöglichkeiten greifen. Die Konfigurationen dann einfach in die config.php - in das Konfigurationsarray, das da aufgebaut wird.

Ob die Konfigurations über die PHP.ini tatsächlich die einfachste Variante für alle Kunden ist, würde ich bezweifeln. Gibt vermutlich für beide Varianten Argumente - so können wir aber sicher stellen, dass die Session bspw. nicht in Files geschrieben wird, sondern im Standard erstmal in die Datenbank, was für viele Kunden zunächst weniger Konfigurationsaufwand bedeutet und wo man sich auch ohne zusätzliche Services bspw. eine zweite SW-Instanz hinstellen kann, ohne über Geschichten wie Session Pinning nachzudenken. Da bist du jetzt mit memcached natürlich auch auf der sicheren Seite. Hat alles Sein für und Wider, denke ich :)

Besten Gruß,

Daniel

 

Ja das ist wohl wahr.

Das Session Array in der Config.php kennt also die gleichen einstllungen wie die php.ini also wo in der ini session.irgendwas steht wird ein array key draus?

Hi,

bei den Sessions ist das so, ja. Da iteriert SW über den „session“ Key deiner config.php und setzt die darin enthaltenen Schlüssel/Wertpaare mit ini_set. Dabei kannst du meines Wissens alles konfigurieren, was mit „session.“ geprefixt ist, vgl. http://php.net/manual/de/session.configuration.php

 Besten Gruß,

Daniel

1 „Gefällt mir“

Hallo zusammen,

 

sagt mal wie habt Ihr Memcached konfiguriert (ini) ?

Ich bekomme mit der default config im Backend ständig Session-Fehler und mit folgender Config noch immer ab und zu…

;MEMCACHED - SESSION HANDLING
memcached.serializer = igbinary
memcached.sess_locking = On
memcached.sess_lock_wait_min = 1000;
memcached.sess_lock_wait_max = 2000;
memcached.sess_lock_retries = 5;
memcached.sess_lock_expire = 0;
memcached.sess_prefix = "memc.sess.key."
memcached.sess_persistent = Off
memcached.sess_consistent_hash = On
memcached.sess_remove_failed_servers = Off
memcached.sess_number_of_replicas = 0
memcached.sess_binary_protocol = On
memcached.sess_randomize_replica_read = Off
memcached.sess_connect_timeout = 1000
memcached.sess_sasl_username = NULL
memcached.sess_sasl_password = NULL
memcached.compression_type = "fastlz"
memcached.compression_factor = "1.3"
memcached.compression_threshold = 2000
memcached.store_retry_count = 2
memcached.default_consistent_hash = Off
memcached.default_binary_protocol = Off
memcached.default_connect_timeout = 0

 

Danke und viele Grüße

Hotte