Ich habe Redis vor kurzem für das Zwischenspeichern mit einer Magento-Instanz auf einem Staging-Server eingerichtet (separater Webserver und DB-Server, DB-Server ist der Redis) und es funktioniert seit einiger Zeit mit wenigen Problemen. Der einzige Fehler war ein gelegentlich auftretender Kommunikationsfehler. Deshalb habe ich die Redis-Version von 2.4.10 auf den neuesten, 3.2.1 aktualisiert. Ich sollte auch beachten, dass ich seit dem Start drei separate Instanzen auf drei separaten Ports ausgeführt habe, wie es normalerweise empfohlen wird, wenn Sie Redis für alle drei Arten von Caching verwenden möchten, die es in Magento machen kann.Magento und Redis: Verbindung zu Redis fehlgeschlagen nach 2 Fehlern Fehler nach Upgrade/Downgrade Redis
Nachdem ich sichergestellt hatte, dass ich Redis an allen drei Ports nach dem Upgrade anpingen konnte, habe ich Magento wieder angeschlossen und sofort Fehler erhalten, die darauf hinwiesen, dass es überhaupt keine Verbindung herstellen konnte: Verbindung zu Redis fehlgeschlagen nach 2 Fehlern. Ich habe versucht, dies eine Zeitlang zu beheben und letztendlich das Redis-Paket auf 2.4.10 zurückgestuft, nur um das gleiche Problem zu lösen. Ich hatte das alles sogar in einer lokalen Umgebung mit Redis 3.2.1 gemacht und hatte keines dieser Probleme. Ich habe das Gefühl, dass ich etwas verpassen muss, aber ich habe das Gefühl, dass ich alles versucht habe. Redis Log-Dateien sind völlig normal und melden nur einen erfolgreichen Start. Alle Magento Redis Bibliotheken sind die aktuellsten, die aus Github stammen. Die Datei /etc/init.d/redis ist eine modifizierte Version der Standarddatei, die von irgendwo auf Github abgerufen wird, um das Starten mehrerer Instanzen zu unterstützen.
Magento local.xml:
<config>
<global>
<install>
<date><![CDATA[Sat, 11 Jul 2015 08:00:49 +0000]]></date>
</install>
<crypt>
<key><![CDATA[24d48474f523332d6dbcd9d1d6931c98]]></key>
</crypt>
<disable_local_modules>false</disable_local_modules>
<resources>
<db>
<table_prefix><![CDATA[]]></table_prefix>
</db>
<default_setup>
<connection>
<host><![CDATA[(address)]]></host>
<username><![CDATA[root]]></username>
<password><![CDATA[password]]></password>
<dbname><![CDATA[magento]]></dbname>
<initStatements><![CDATA[SET NAMES utf8]]></initStatements>
<model><![CDATA[mysql4]]></model>
<type><![CDATA[pdo_mysql]]></type>
<pdoType><![CDATA[]]></pdoType>
<active>1</active>
</connection>
</default_setup>
</resources>
<cache>
<backend>Cm_Cache_Backend_Redis</backend>
<backend_options>
<server><![CDATA[(address)]]></server> <!-- or absolute path to unix socket -->
<port><![CDATA[6379]]></port>
<persistent></persistent> <!-- Specify unique string to enable persistent connections. E.g.: sess-db0; bugs with phpredis and php-fpm are known: https://github.com/nicolasff/phpredis/issues/70 -->
<database>0</database> <!-- Redis database number; protection against accidental data loss is improved by not sharing databases -->
<password></password> <!-- Specify if your Redis server requires authentication -->
<force_standalone>0</force_standalone> <!-- 0 for phpredis, 1 for standalone PHP -->
<connect_retries>1</connect_retries> <!-- Reduces errors due to random connection failures; a value of 1 will not retry after the first failure -->
<read_timeout>10</read_timeout> <!-- Set read timeout duration; phpredis does not currently support setting read timeouts -->
<automatic_cleaning_factor>0</automatic_cleaning_factor> <!-- Disabled by default -->
<compress_data>1</compress_data> <!-- 0-9 for compression level, recommended: 0 or 1 -->
<compress_tags>1</compress_tags> <!-- 0-9 for compression level, recommended: 0 or 1 -->
<compress_threshold>20480</compress_threshold> <!-- Strings below this size will not be compressed -->
<compression_lib>gzip</compression_lib> <!-- Support gzip, lzf, lz4 (https://github.com/kjdev/php-ext-lz4) or snappy (https://github.com/goatherd/php-snappy) -->
<use_lua>0</use_lua> <!-- Set to 1 if Lua scripts should be used for some operations -->
</backend_options>
</cache>
<full_page_cache>
<backend>Cm_Cache_Backend_Redis</backend>
<backend_options>
<server><![CDATA[(address)]]></server> <!-- or absolute path to unix socket -->
<port><![CDATA[6380]]></port>
<persistent></persistent> <!-- Specify unique string to enable persistent connections. E.g.: sess-db0; bugs with phpredis and php-fpm are known: https://github.com/nicolasff/phpredis/issues/70 -->
<database>0</database> <!-- Redis database number; protection against accidental data loss is improved by not sharing databases -->
<password></password> <!-- Specify if your Redis server requires authentication -->
<force_standalone>0</force_standalone> <!-- 0 for phpredis, 1 for standalone PHP -->
<connect_retries>1</connect_retries> <!-- Reduces errors due to random connection failures -->
<read_timeout>10</read_timeout> <!-- Set read timeout duration; phpredis does not currently support setting read timeouts -->
<lifetimelimit>57600</lifetimelimit> <!-- 16 hours of lifetime for cache record -->
<compress_data>0</compress_data> <!-- DISABLE compression for EE FPC since it already uses compression -->
</backend_options>
</full_page_cache>
<session_save>db</session_save>
<redis_session> <!-- All options seen here are the defaults -->
<host><![CDATA[(address)]]></host> <!-- Specify an absolute path if using a unix socket -->
<port><![CDATA[6381)]]></port>
<password></password> <!-- Specify if your Redis server requires authentication -->
<timeout>4</timeout> <!-- This is the Redis connection timeout, not the locking timeout -->
<persistent></persistent> <!-- Specify unique string to enable persistent connections. E.g.: sess-db0; bugs with phpredis and php-fpm are known: https://github.com/nicolasff/phpredis/issues/70 -->
<db>0</db> <!-- Redis database number; protection from accidental loss is improved by using a unique DB number for sessions -->
<compression_threshold>2048</compression_threshold> <!-- Set to 0 to disable compression (recommended when suhosin.session.encrypt=on); known bug with strings over 64k: https://github.com/colinmollenhour/Cm_Cache_Backend_Redis/issues/18 -->
<compression_lib>gzip</compression_lib> <!-- gzip, lzf, lz4 (https://github.com/kjdev/php-ext-lz4) or snappy (https://github.com/goatherd/php-snappy) -->
<log_level>1</log_level> <!-- 0 (emergency: system is unusable), 4 (warning; additional information, recommended), 5 (notice: normal but significant condition), 6 (info: informational messages), 7 (debug: the most information for development/testing) -->
<max_concurrency>6</max_concurrency> <!-- maximum number of processes that can wait for a lock on one session; for large production clusters, set this to at least 10% of the number of PHP processes -->
<break_after_frontend>5</break_after_frontend> <!-- seconds to wait for a session lock in the frontend; not as critical as admin -->
<break_after_adminhtml>30</break_after_adminhtml>
<first_lifetime>600</first_lifetime> <!-- Lifetime of session for non-bots on the first write. 0 to disable -->
<bot_first_lifetime>60</bot_first_lifetime> <!-- Lifetime of session for bots on the first write. 0 to disable -->
<bot_lifetime>7200</bot_lifetime> <!-- Lifetime of session for bots on subsequent writes. 0 to disable -->
<disable_locking>0</disable_locking> <!-- Disable session locking entirely. -->
<min_lifetime>60</min_lifetime> <!-- Set the minimum session lifetime -->
<max_lifetime>2592000</max_lifetime> <!-- Set the maximum session lifetime -->
</redis_session>
</global>
<admin>
<routers>
<adminhtml>
<args>
<frontName><![CDATA[admin]]></frontName>
</args>
</adminhtml>
</routers>
</admin>
</config>
/etc/init.d/redis:
#!/bin/sh
#
# redis init file for starting up the redis daemon
#
# chkconfig: - 20 80
# description: Starts and stops the redis daemon.
# Source function library.
. /etc/rc.d/init.d/functions
name="redis-server"
exec="/usr/sbin/$name"
#shut="/usr/bin/redis-shutdown"
#pidfile="/var/run/redis/redis.pid"
#REDIS_CONFIG="/etc/redis.conf"
PORT_NUMBERS=$(grep "^port" /etc/redis.conf-* | awk '{print $NF}')
[ -e /etc/sysconfig/redis ] && . /etc/sysconfig/redis
#lockfile=/var/lock/subsys/redis
start() {
for PORT in $PORT_NUMBERS; do
REDIS_CONFIG="/etc/redis.conf-${PORT}"
pidfile="/var/run/redis/redis-${PORT}.pid"
lockfile="/var/lock/subsys/redis-${PORT}"
[ -f $REDIS_CONFIG ] || exit 6
[ -x $exec ] || exit 5
echo -n $"Starting $name on $PORT: "
daemon --user ${REDIS_USER-redis} "$exec $REDIS_CONFIG"
retval=$?
echo
[ $retval -eq 0 ] && touch $lockfile
done
return $retval
}
stop() {
for PORT in $PORT_NUMBERS; do
REDIS_CONFIG="/etc/redis.conf-${PORT}"
pidfile="/var/run/redis/redis-${PORT}.pid"
lockfile="/var/lock/subsys/redis-${PORT}"
[ -f $REDIS_CONFIG ] || exit 6
[ -x $exec ] || exit 5
echo -n $"Starting $name on $PORT: "
daemon --user ${REDIS_USER-redis} "$exec $REDIS_CONFIG"
retval=$?
echo
[ $retval -eq 0 ] && touch $lockfile
done
return $retval
}
stop() {
for PORT in $PORT_NUMBERS; do
echo -n $"Stopping $name on $PORT: "
pidfile="/var/run/redis/redis-${PORT}.pid"
lockfile="/var/lock/subsys/redis-${PORT}"
[ -x $shut ] && $shut
retval=$?
if [ -f $pidfile ]
then
# shutdown haven't work, try old way
killproc -p $pidfile $name
retval=$?
else
success "$name shutdown"
fi
echo
[ $retval -eq 0 ] && rm -f $lockfile
done
return $retval
}
restart() {
stop
start
}
reload() {
false
}
rh_status() {
for PORT in $PORT_NUMBERS; do
pidfile="/var/run/redis/redis-${PORT}.pid"
status -p $pidfile $name
done
}
rh_status_q() {
rh_status >/dev/null 2>&1
}
case "$1" in
start)
rh_status_q && exit 0
$1
;;
stop)
rh_status_q || exit 0
$1
;;
restart)
$1
;;
reload)
rh_status_q || exit 7
$1
;;
force-reload)
force_reload
;;
status)
rh_status
;;
condrestart|try-restart)
rh_status_q || exit 0
restart
;;
*)
echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart}"
exit 2
esac
exit $?
Jede andere Ideen sehr geschätzt werden würde.
Vorgeschlagene Lektüre: [Wie man ein minimales, vollständiges und überprüfbares Beispiel erstellt] (http://stackoverflow.com/help/mcve) – wogsland
Ich habe es geschafft, die Lösung zu finden. Während ich mit den Konfigurationsdateien während des Upgrades hin und her ging, wurde meine ursprüngliche "bind 0.0.0.0" Zeile in "bind 127.0.0.1" geändert. Das ändern alles behoben. – BClarkOMP
@BClarkOMP können Sie bitte dieses Ergebnis als Antwort posten und akzeptieren, falls es anderen in Zukunft hilft? –