- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我最近在暂存服务器(独立的 Web 服务器和数据库服务器,数据库服务器是运行 Redis 的服务器)上使用 Magento 实例设置 Redis 进行缓存,它已经工作了一段时间,几乎没有问题。唯一的一个是非常偶然的通信错误,因此为了解决这个问题,我将 Redis 版本从 2.4.10 升级到最新的 3.2.1。我还应该注意,从一开始我就在三个独立的端口上运行三个独立的实例,当您想使用 Redis 进行它在 Magento 中可以执行的所有三种类型的缓存时,通常会建议这样做。
在确保升级后我可以在所有三个端口上对 Redis 执行 ping 操作后,我将 Magento 重新连接到它并立即开始收到指示它根本无法连接的错误:2 次失败后与 Redis 的连接失败。我尝试对此进行了一段时间的故障排除,最终将 Redis 包降级回 2.4.10,结果遇到了同样的问题。我什至在之前使用 Redis 3.2.1 在本地环境中完成了所有这些工作,并且没有遇到任何这些问题。我觉得我一定错过了什么,但我觉得我什么都试过了。 Redis日志文件完全正常,只是报启动成功。所有 Magento Redis 库都是最新的,来自 Github。/etc/init.d/redis 文件是标准文件的修改版本,从 github 上的某个地方拉取以支持启动多个实例。
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 $?
任何其他想法将不胜感激。
最佳答案
我通过运行两个命令来管理它。
通过终端 ssh 命令连接服务器并运行以下命令:
# service redis restart
# redis-cli flushall
关于Magento 和 Redis : Connection to Redis failed after 2 failures error after upgrading/downgrading Redis,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38618229/
“Fail Early”是什么意思,在什么情况下这种方法最有用,你什么时候会避免这种方法? 最佳答案 本质上,快速失败 (又名 尽早失败 )是对您的软件进行编码,使得 当出现问题时,软件会尽快并尽可能
/* * 115200. Connect GPIO 0 of your ESP8266 to VCC and reset the board */ #include #include #inc
安装并注册 gitlab-runner 后,当我运行时 gitlab-runner start我收到此错误消息。这是什么原因? Runtime platform
我一直在尝试Windows Server 2016 TP5上的Windows容器。突然我在运行带有端口映射选项-p 80:80的容器时开始出错 c:\>docker run -it -p 80:80
我一直在关注 Hyperledger Fabric Multi-Org setup 的教程,我能够成功地做到这一点。现在我想根据我想要的组织名称对其进行自定义,并且在尝试连接网络时遇到以下错误。希望有
所以我不知道为什么这个测试失败了。当我运行 repl 中的语句时,一切似乎都正常工作,但 fiveam 测试失败。 以下要点中有一个测试用例:https://gist.github.com/Puerc
我安装了 Android Studio 1.2.1.1、Gradle 版本 2.2.1 和 Android 插件版本 1.2.3。我试图创建一个简单的 hello world 项目,它给了我一个构建失
我正在尝试设置一个简单的 WebTestCase,它使用 Symfony 4(和 "phpunit/phpunit": "^6.5")。但是,测试失败: Failed to start the ses
我已经使用 git clone 在本地克隆了一个包含 Vue 项目的 git 存储库. 然后我跑了npm install安装依赖项并获得 node_modules文件夹。 正在运行 npm run s
我有:http://windows.github.com/ 我当前的项目有大约 20k 个文件,大约 150MB(并且不说它有多慢而且我现在什么也做不了)它甚至不允许我提交!我收到此错误:提交失败:无
我正在使用 RxAndroidBle 库开发一个应用程序,该库大约每 30 秒定期执行 BLE 扫描,每分钟左右执行一些 BLE 操作。几个小时后,通常在 5 到 24 小时之间,扫描停止工作。每次应
每次我尝试使用 Pycharm 推送 GitHub 中的存储库时,它都会失败。 Push failed: fatal: Authentication failed for 'https://githu
此外,管理内置“管理结构”(如标题中的结构)的 Resque 的最佳实践是什么?我应该用 jedis.del(String key) 或类似的东西清除它们吗? 最佳答案 resque:failed 是
想象这样一种场景,我们想要在对“foo”和“bar”的并发请求成功完成后做一些事情,或者如果其中一个或两个失败则报告错误: $.when($.getJSON('foo'), $.getJSON('ba
这就是我所做的: 我使用的是 Windows XP SP3 我已经安装了 Python 2.7.1。 我下载了instantclient-basic-nt-11.2.0.3.0.zip,解压后放入C:
我已经设置了一个 vfsstream block 设备,我正在尝试对其调用 file_get_contents()。然而,对 vfsStreamWrapper::stream_open 的调用失败,因
我正在尝试在我的 React 应用程序中使用文件上传功能,但遇到了问题。当我尝试上传第一张图片时,它工作得很好。文件资源管理器对话框关闭并显示我的图片。用我的文件资源管理器中的另一张图片覆盖图片也可以
目标:将我的本地 mongodb 数据迁移到 mongodb atlas 集群。 尝试: 1.将本地数据导出为json。 2.导入json到集群。 操作系统:Linuxmint 19.1 Cinnam
我一直在从事一个需要在服务器(托管在 GCE 上)和多个客户端之间进行一些网络连接的项目。我创建了一个 Compute Engine 实例来运行 Python 脚本,如以下视频所示:https://w
我正在尝试使用 sqlx crate 和 Postgres 数据库连接到 Rust 中的数据库。 main.rs: use dotenv; use sqlx::Pool; use sqlx::PgPo
我是一名优秀的程序员,十分优秀!