6

libvmod-redisという Varnish 用の redis 統合プラグインを使用しています。350 前後の多数の同時リクエストを取得すると、redis がタイムアウトし始め、最終的に Varnish で segfault が発生するという問題が発生しています。

次のエラーが表示されます。

varnishd[27892]: Child (27893) said redis error (connect): Connection timed out
varnishd[27892]: Child (27893) said redis error (command): err=1 errstr=Connection timed out
varnishd[19528]: Child (19529) said redis error (command): err=1 errstr=select(2): Invalid argument
varnishd[19528]: Child (19529) said redis error (command): err=1 errstr=Connection timed out
varnishd[19528]: last message repeated 9 times
varnishd[19528]: Child (19529) said redis error (command): err=1 errstr=select(2): Invalid argument
varnishd[19528]: Child (19529) said redis error (connect): fcntl(F_GETFL): Bad file descriptor
varnishd[19528]: Child (19529) said redis error (command): err=1 errstr=fcntl(F_GETFL): Bad file descriptor
kernel: [282284.005658] varnishd[19727] general protection ip:7f1f9dea1427 sp:7f1f4123c120 error:0 in libhiredis.so.0.10[7f1f9de9f000+9000]

私のタイムアウトは 1 秒で、Redis 用の ElastiCache ノードを使用しています。ここで正確に何が失敗しているのか疑問に思っています。私は C の専門家ではないので、何かが足りないように感じます。

4

2 に答える 2

1

コード、特にselect. 多くの同時リクエストがあるため、ファイル記述子の有効性を確認することをお勧めします。プロセス中にそれらのいずれかが閉じられている可能性があります...

于 2014-03-18T08:10:33.863 に答える