addr=172.10.12.23:32639 fd=1018 name= age=6868 idle=46 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=set
在 redis 执行 client list 显示 age 长短不一, 这是说明这个长连接会断掉然后重新建立,是 redis service 主动断掉这个链接还是 fpm 会断掉呢
现在的问题是 php 在操作 redis 的时候, 偶尔会报“ read error on connection ”
1
NjcyNzMzNDQ3 2019-04-24 12:54:54 +08:00
长连接还是不要用 fpm 了吧,cli 模式常驻进程好点,swoole 的 redis 连接池可以用
|
2
thomaswang OP @NjcyNzMzNDQ3 明白你的意思,swoole 那个在别的地方用了,这里没有用, 这个 fpm 不也是常驻内存的吗, 你怀疑 fpm 会断掉连接 redis 的 socket?
|
3
nilai 2019-04-24 14:25:45 +08:00
我记得 fpm 就是一个进程池管理协调的程序, 在空闲时,是有被 kill 掉的可能的。。
|
4
NjcyNzMzNDQ3 2019-04-24 14:33:28 +08:00
@thomaswang fpm 只有 master 进程是常驻,master 下子子 fpm 进程每个只能处理 3-5 个请求,处理完成后会结束进程,我琢磨着不太靠谱。
|
5
NjcyNzMzNDQ3 2019-04-24 14:39:46 +08:00
直接用 connect,用完就 close 就挺好,即使上了进程池 /常驻连接,如果你的业务用 redis 的耗时长,并发高了也照样等待啊。
想控制连接数?有控制连接数的功夫还是优化业务吧。 |
6
thomaswang OP @NjcyNzMzNDQ3 php-fpm 配置的 static 也是处理三五次就死掉吗
|
7
thomaswang OP @NjcyNzMzNDQ3 短链,用过 close,time_wait 不会高吗
|
8
thomaswang OP @NjcyNzMzNDQ3 不控制连接数, 优化业务, 如何优化呢, 是不用 redis 了吗
|
9
NjcyNzMzNDQ3 2019-04-25 13:48:35 +08:00
static 不是,redis 不是瓶颈(觉得 redis 扛不住就水平扩展),业务方面 zray/xhprof 扩展和开启 slowlog 都可以看出业务瓶颈
|
10
thomaswang OP @nilai 我们的项目虽然没有多大的并发量,应该也不会让他空闲下来
|
11
genglintong 2019-05-30 17:02:50 +08:00
pconnect 生命周期是和 fpm 一致的,fpm 死掉后,应该会重新建立连接吧
|