我正在为 Varnish 使用一个名为libvmod-redis的 redis 集成插件。我看到一个问题,如果我收到大量并发请求,大约 350 个,redis 开始超时,我最终在 Varnish 中遇到了一个段错误。
我收到这些错误:
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 方面的专家,所以我觉得我错过了一些东西。