首页 > 解决方案 > php并发连接到redis超时

问题描述

大家我有三台php服务器(8C,16G),每台php服务器设置如下:

pm.max_requests = 1024
pm.max_children = 370
pm.start_servers = 100
pm.min_spare_servers = 10
pm.max_spare_servers = 20
request_terminate_timeout = 120
request_slowlog_timeout = 1s

当我并发发送1000时,我发现每个php服务器上的负载都很高。发现php连接redis有超时:

poll([{fd=5, events=POLLIN|POLLPRI|POLLERR|POLLHUP}], 1, 0) = 0 (Timeout)
poll([{fd=5, events=POLLIN|POLLPRI|POLLERR|POLLHUP}], 1, 0) = 0 (Timeout)
poll([{fd=5, events=POLLIN|POLLPRI|POLLERR|POLLHUP}], 1, 0) = 0 (Timeout)
poll([{fd=5, events=POLLIN|POLLPRI|POLLERR|POLLHUP}], 1, 0) = 0 (Timeout)
poll([{fd=5, events=POLLIN|POLLPRI|POLLERR|POLLHUP}], 1, 0) = 0 (Timeout)

我用的是lsof命令:</p>

[root@10-13-82-25 ~]# lsof -d 5 |grep 19822
php-fpm  19822  www  5u     IPv4  6625694  0t0   TCP 10-13-82-25:mcagent->10.13.151.44:6379 (ESTABLISHED)

redis(2G, 8G) 参数配置:</p>

tcp-backlog 262144

phpredis 版本:5.3.2 php 版本:7.0.26 redis 版本:4.0.2 真不知道为什么会超时。请帮我。认为!

标签: phpredisphpredis

解决方案


推荐阅读