2

私はec2ミディアムインスタンスでredis2.4.16を実行し、永続的なものは標準のebsであり、redisログをチェックしたところ、ログレポート「クライアントからの読み取り:接続のリセット」が数時間ごとに発生することがわかりました。すべてのクライアントとサーバーは同じゾーン: ap-northeast-1a、およびオペレーティング システムは ubuntu サーバー 12.04 です。クライアントは jredis + spring data redis 1.0.0.M4 です。誰でもこれを理解するか、アドバイスを与えることができます。ありがとう! 以下は、redis info コマンドの結果です。

redis_version:2.4.16
redis_git_sha1:00000000
redis_git_dirty:0
arch_bits:64
multiplexing_api:epoll
gcc_version:4.5.2
process_id:3265
uptime_in_seconds:2658600
uptime_in_days:30
lru_clock:561139
used_cpu_sys:29421.34
used_cpu_user:10731.37
used_cpu_sys_children:20022.24
used_cpu_user_children:75702.79
connected_clients:44
connected_slaves:1
client_longest_output_list:0
client_biggest_input_buf:0
blocked_clients:0
used_memory:1111572800
used_memory_human:1.04G
used_memory_rss:1133101056
used_memory_peak:1112071512
used_memory_peak_human:1.04G
mem_fragmentation_ratio:1.02
mem_allocator:jemalloc-3.0.0
loading:0
aof_enabled:0
changes_since_last_save:1343
bgsave_in_progress:0
last_save_time:1368760178
bgrewriteaof_in_progress:0
total_connections_received:904643
total_commands_processed:592333133
expired_keys:0
evicted_keys:0
keyspace_hits:443393839
keyspace_misses:30383206
pubsub_channels:0
pubsub_patterns:0
latest_fork_usec:359082
vm_enabled:0
role:master
slave0:xxx,online
db0:keys=364558,expires=0
4

1 に答える 1

1

ログからわかるように、redis は接続を閉じたクライアントと通信しようとします。

これはおそらく、一部のクライアントが redis との接続を完了した後、接続を閉じていないためです。

これにより、最終的に redis の接続が不足する可能性があります (接続制限とトラフィック量によって異なります)。

これに対する簡単な解決策は、redis.conf で接続タイムアウト (デフォルトでは「タイムアウトなし」として 0) を設定して、X 秒後に開いた接続を redis が閉じるようにすることです。

config get *注:この種の質問をするときは、redis の出力を含める必要があります;)

于 2013-05-17T12:24:45.793 に答える