我使用docker Docker version 19.03.1, build 74b1e89
与docker组成 docker-compose version 1.23.1, build b02f1306
我使用redis image来存储缓存和其他。当我进入redis容器并启动MONITOR命令时,我面临着无休止的请求,你知道这是什么吗,这是redis的正常行为吗?
1586967988.436843 [0 172.19.0.7:40238] "MGET" "ikbkr16GHQ:workers.restart_requested_timestamp"
1586967988.871148 [0 172.19.0.7:40252] "MGET" "ikbkr16GHQ:workers.restart_requested_timestamp"
1586967989.445710 [0 172.19.0.7:40238] "MGET" "ikbkr16GHQ:workers.restart_requested_timestamp"
1586967989.891562 [0 172.19.0.7:40252] "MGET" "ikbkr16GHQ:workers.restart_requested_timestamp"
1586967990.454699 [0 172.19.0.7:40238] "MGET" "ikbkr16GHQ:workers.restart_requested_timestamp"
1586967990.909510 [0 172.19.0.7:40252] "MGET" "ikbkr16GHQ:workers.restart_requested_timestamp"
1586967991.464312 [0 172.19.0.7:40238] "MGET" "ikbkr16GHQ:workers.restart_requested_timestamp"
我曾经建立 image: redis:alpine
和 redis:5.0.8
而面对同样的行为
redis:
container_name: container_redis
image: redis:5.0.8
ports:
- "6379:6379"
networks:
- php
在我的应用程序(Symfony)中,我为redis配置了如下端口的cace。
framework:
cache:
prefix_seed: minimoj/minimoj_be
# Redis
app: cache.adapter.redis
default_redis_provider: redis://redis:6379
在本地,这个MGET请求并没有给我带来问题,但是在测试服务器上,所有六个CPU的负载率都是100%,我不知道这是否取决于redis,但是在测试服务器上的htop监控中,所有的CPU都在浪费电力,并出现了以下情况 Command
- /tmp/kdevtmpfsi
. 我研究了有关信息,建议是删除 /tmp/kdevtmpfsi
从redis容器。但是没办法,在执行了一些缓存后,CPU又加载到了上面。我不知道,可能是两个问题关于 /tmp/kdevtmpfsi
和无休止的请求,但也许他们彼此之间的依赖性。
我的消费者由主管管理
[program:messenger-consume]
command=php /var/www/symfony/bin/console messenger:consume success andraction_parse_row_success --limit=100
numprocs=2
autostart=true
autorestart=true
process_name=%(program_name)s_%(process_num)02d
更新
我解决了CPU负载的问题,它是在防火墙中为外部的redis打开了端口(6379),一些恶意脚本解析了它并使用。现在只剩下这个了 restart_requested_timestamp
请求。你能给我解释一下这是正确的行为吗?
Symfony\Component\Messenger\Worker\StopWhenRestartSignalIsReceived
Symfony messanger组件只是检查messenger:stop-worker命令是否被触发。它在寻找 重启请求的时间戳 缓存密钥,如果该密钥存在,消费者将停止其工作。
也许这是关于numprocs的。你要启动多少个消费者?