我们正面临redis的问题,其中redis的'dir'
路径在没有任何通知的情况下设置。
导致以下错误(写入redis时)。
MISCONF Redis配置为保存RDB快照,但目前是 无法在磁盘上保留。可以修改数据集的命令是 禁用。请检查Redis日志以获取有关错误的详细信息。
信息我们必须支持这一点。
- Redis配置文件
查看我们的redis.conf
(位于/etc/redis/redis.conf
),提示我们dir
路径值为...
# The working directory.
#
# The DB will be written inside this directory, with the filename specified
# above using the 'dbfilename' configuration directive.
#
# The Append Only File will also be created inside this directory.
#
# Note that you must specify a directory here, not a file name.
dir /var/lib/redis
- Redis INFO结果。
{" redis_version" =>" 2.8.17"," redis_git_sha1" =>" 00000000", " redis_git_dirty" =>" 0"," redis_build_id" =>" e2de0295da7f0ee1", " redis_mode" =>"独立"," os" =>" Linux 3.16.0-4-amd64 x86_64", " arch_bits" =>" 64"," multiplexing_api" =>" epoll", " gcc_version" =>" 4.9.2"," process_id" =>" 6860", " run_id" = GT;" 4ecd0ff19798a88793e7a3ce281f398ba9aa2f5a&#34 ;, " tcp_port" =>" 6379"," uptime_in_seconds" =>" 99525", " uptime_in_days" =>" 1"," hz" =>" 10"," lru_clock" => ;" 11741717&#34 ;, " config_file" =>" /etc/redis/redis.conf" ;," connected_clients" =>" 2", " client_longest_output_list" =>" 0"," client_biggest_input_buf" =>" 0", " blocked_clients" =>" 0"," used_memory" =>" 784840", " used_memory_human" =>" 766.45K"," used_memory_rss" =>" 3624960", " used_memory_peak" =>" 784840"," used_memory_peak_human" =>" 766.45K", " used_memory_lua" =>" 33792"," mem_fragmentation_ratio" =>" 4.62", " mem_allocator" =>" jemalloc-3.6.0"," loading" =>" 0", " rdb_changes_since_last_save" =>" 0"," rdb_bgsave_in_progress" =>" 0", " rdb_last_save_time" =>" 1454582288"," rdb_last_bgsave_status" =>" ok", " rdb_last_bgsave_time_sec" =>" 0"," rdb_current_bgsave_time_sec" =>" -1", " aof_enabled" =>" 0"," aof_rewrite_in_progress" =>" 0", " aof_rewrite_scheduled" =>" 0"," aof_last_rewrite_time_sec" =>" -1", " aof_current_rewrite_time_sec" = GT;" -1&#34 ;, " aof_last_bgrewrite_status" =>" ok"," aof_last_write_status" =>" ok", " total_connections_received" = GT;" 12&#34 ;, " total_commands_processed" =>" 4651"," instantaneous_ops_per_sec" =>" 0", " rejected_connections" =>" 0"," sync_full" =>" 0"," sync_partial_ok" => ;" 0&#34 ;, " sync_partial_err" =>" 0"," expired_keys" =>" 0"," evicted_keys" => ;" 0&#34 ;, " keyspace_hits" =>" 0"," keyspace_misses" =>" 0"," pubsub_channels" => ;" 0&#34 ;, " pubsub_patterns" =>" 0"," latest_fork_usec" =>" 206","角色" => ;"主&#34 ;, " connected_slaves" =>" 0"," master_repl_offset" =>" 0", " repl_backlog_active" =>" 0"," repl_backlog_size" =>" 1048576", " repl_backlog_first_byte_offset" =>" 0"," repl_backlog_histlen" =>" 0", " used_cpu_sys" =>" 57.78"," used_cpu_user" =>" 25.71", " used_cpu_sys_children" =>" 0.00"," used_cpu_user_children" =>" 0.00", " DB0" = GT;"键= 2851,到期= 0,avg_ttl = 0"}
关键点
redis.info['config_file']
=> /etc/redis/redis.conf
Redis的进程ID
redis.info['process_id']
=> 6860
- Redis配置
然后我检查了redis config和......
redis.config "get" ,"dir"
=> ["dir", "/etc/ssh"]
## ideally should be /var/lib/redis
事情,我做了修复上述错误。
redis.config "set" ,"dir","/var/lib/redis"
=> "OK"
redis.config "get", "dir"
=> ["dir", "/var/lib/redis"]
这种解决方法(上述问题)。但对于临时目的只是因为......
几个小时后我注意到了这一点。
redis.config "get" ,"dir"
=> ["dir", "/etc/ssh"]
再次检查redis配置
- Redis信息
{" redis_version" =>" 2.8.17"," redis_git_sha1" =>" 00000000", " redis_git_dirty" =>" 0"," redis_build_id" =>" e2de0295da7f0ee1", " redis_mode" =>"独立"," os" =>" Linux 3.16.0-4-amd64 x86_64", " arch_bits" =>" 64"," multiplexing_api" =>" epoll", " gcc_version" =>" 4.9.2"," process_id" =>" 6860", " run_id" = GT;" 4ecd0ff19798a88793e7a3ce281f398ba9aa2f5a&#34 ;, " tcp_port" =>" 6379"," uptime_in_seconds" =>" 109032", " uptime_in_days" =>" 1"," hz" =>" 10"," lru_clock" => ;" 11751224&#34 ;, " config_file" =>" /etc/redis/redis.conf" ;," connected_clients" =>" 2", " client_longest_output_list" =>" 0"," client_biggest_input_buf" =>" 0", " blocked_clients" =>" 0"," used_memory" =>" 788984", " used_memory_human" =>" 770.49K"," used_memory_rss" =>" 3629056", " used_memory_peak" =>" 808952"," used_memory_peak_human" =>" 789.99K", " used_memory_lua" =>" 33792"," mem_fragmentation_ratio" =>" 4.60", " mem_allocator" =>" jemalloc-3.6.0"," loading" =>" 0", " rdb_changes_since_last_save" =>" 82"," rdb_bgsave_in_progress" =>" 0", " rdb_last_save_time" =>" 1454591521"," rdb_last_bgsave_status" =>" ok", " rdb_last_bgsave_time_sec" =>" 0"," rdb_current_bgsave_time_sec" =>" -1", " aof_enabled" =>" 0"," aof_rewrite_in_progress" =>" 0", " aof_rewrite_scheduled" =>" 0"," aof_last_rewrite_time_sec" =>" -1", " aof_current_rewrite_time_sec" = GT;" -1&#34 ;, " aof_last_bgrewrite_status" =>" ok"," aof_last_write_status" =>" ok", " total_connections_received" = GT;" 14&#34 ;, " total_commands_processed" =>" 6966"," instantaneous_ops_per_sec" =>" 0", " rejected_connections" =>" 0"," sync_full" =>" 0"," sync_partial_ok" => ;" 0&#34 ;, " sync_partial_err" =>" 0"," expired_keys" =>" 0"," evicted_keys" => ;" 0&#34 ;, " keyspace_hits" =>" 0"," keyspace_misses" =>" 0"," pubsub_channels" => ;" 0&#34 ;, " pubsub_patterns" =>" 0"," latest_fork_usec" =>" 135","角色" => ;"主&#34 ;, " connected_slaves" =>" 0"," master_repl_offset" =>" 0", " repl_backlog_active" =>" 0"," repl_backlog_size" =>" 1048576", " repl_backlog_first_byte_offset" =>" 0"," repl_backlog_histlen" =>" 0", " used_cpu_sys" =>" 62.96"," used_cpu_user" =>" 27.97", " used_cpu_sys_children" =>" 0.00"," used_cpu_user_children" =>" 0.00", " DB0" = GT;"键= 2902,到期= 0,avg_ttl = 0"}
关键点。
redis.info["process_id"]
=> 6860
redis.info['config_file']
=> /etc/redis/redis.conf
所以,
Redis Server从未重启过。 (process_id
对此有很多说法。)
Redis正在选择正确的配置文件,即/etc/redis/redis.conf
。
那么,如果第1点和第2点都是真的,那么导致redis
在几小时后将config
dir
值设置为/etc/ssh
的原因是什么? (我从昨天开始重置配置5-6次。)
注意:
还重新启动了服务器(昨天),希望永久解决问题。但没有运气。
注意:
回应@Keith回答
是的!服务器完全支持限制性防火墙。
思想?