2012-01-23 23 views
2

私はRedis 2.4.6 Stableを使用しています。 私は200K以上にae.hファイルにRedisのファイル記述子の数を増加している:私はEC2上でのRedisを実行していますredisはクライアントの数を65Kに制限していますか?

#define AE_SETSIZE (1024*200)

をしかし、それを実行するときに、私は65534

の限界に達していますRedHatのインスタンス上:2.6.32-220.2.1.el6.x86_64 と私は同時接続をプッシュしようと、複数のEC2のノードでテストを設定している200000

-n のulimitでのRedisを実行しています150K以上になりますが、 65Kを超えることはありません。

私には何が欠けていますか?多分カーネルの制限?レディスのバグ?

これはRedisのサーバー上のINFOのダンプです:

used_cpu_sys_children:0.00 
used_cpu_user_children:0.00 
**connected_clients:65534** 
connected_slaves:0 
client_longest_output_list:0 
client_biggest_input_buf:0 
blocked_clients:0 
used_memory:572810560 
used_memory_human:546.27M 
used_memory_rss:305123328 
used_memory_peak:572810528 
used_memory_peak_human:546.27M 
mem_fragmentation_ratio:0.53 
+0

こんにちはDavid、dmesgや、/ var/logの中の何かが、一度65kの制限に達すると何かを示していますか? – Zeppomedio

答えて

4

あなたはネットワークポートの制限の抵触実行していますか?クライアントが接続をどのように閉じているかによって、TIME_WAIT状態になってしまいますので、ポートが不足している可能性があります。

これを回避する方法の1つは、複数の内部IPをサーバーにバインドし、それに応じて配布する方法です。または、使用しているクライアントを変更できる場合は、TIME_WAITの負担をかけるような方法で接続を閉じることを確認してください。

+0

である可能性があります。私はそれを見ていきます。残念ながら、私はそれらの接続を開いたままにするためにクライアントを必要とします。 –

+1

が修正されました。これは、OSネットワーク関連のパラメータ(/ proc/sys/net/nf_conntrack_max)でした。 Redisは今ではほとんど私がそれに投げるものを処理することができます。 –

+0

+1 @DavidCostaFaidellaあなたの問題を解決したので、この回答を受け入れるべきです –

関連する問題