PHP -fpm 长连接(pconnect)到 redis

2019-04-24 11:13:15 +08:00
 thomaswang
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 ”

2614 次点击
所在节点    问与答
11 条回复
NjcyNzMzNDQ3
2019-04-24 12:54:54 +08:00
长连接还是不要用 fpm 了吧,cli 模式常驻进程好点,swoole 的 redis 连接池可以用
thomaswang
2019-04-24 14:23:16 +08:00
@NjcyNzMzNDQ3 明白你的意思,swoole 那个在别的地方用了,这里没有用, 这个 fpm 不也是常驻内存的吗, 你怀疑 fpm 会断掉连接 redis 的 socket?
nilai
2019-04-24 14:25:45 +08:00
我记得 fpm 就是一个进程池管理协调的程序, 在空闲时,是有被 kill 掉的可能的。。
NjcyNzMzNDQ3
2019-04-24 14:33:28 +08:00
@thomaswang fpm 只有 master 进程是常驻,master 下子子 fpm 进程每个只能处理 3-5 个请求,处理完成后会结束进程,我琢磨着不太靠谱。
NjcyNzMzNDQ3
2019-04-24 14:39:46 +08:00
直接用 connect,用完就 close 就挺好,即使上了进程池 /常驻连接,如果你的业务用 redis 的耗时长,并发高了也照样等待啊。

想控制连接数?有控制连接数的功夫还是优化业务吧。
thomaswang
2019-04-25 09:50:33 +08:00
@NjcyNzMzNDQ3 php-fpm 配置的 static 也是处理三五次就死掉吗
thomaswang
2019-04-25 09:51:39 +08:00
@NjcyNzMzNDQ3 短链,用过 close,time_wait 不会高吗
thomaswang
2019-04-25 09:52:40 +08:00
@NjcyNzMzNDQ3 不控制连接数, 优化业务, 如何优化呢, 是不用 redis 了吗
NjcyNzMzNDQ3
2019-04-25 13:48:35 +08:00
static 不是,redis 不是瓶颈(觉得 redis 扛不住就水平扩展),业务方面 zray/xhprof 扩展和开启 slowlog 都可以看出业务瓶颈
thomaswang
2019-04-25 14:30:04 +08:00
@nilai 我们的项目虽然没有多大的并发量,应该也不会让他空闲下来
genglintong
2019-05-30 17:02:50 +08:00
pconnect 生命周期是和 fpm 一致的,fpm 死掉后,应该会重新建立连接吧

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/558184

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX