V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
thomaswang
V2EX  ›  问与答

PHP -fpm 长连接(pconnect)到 redis

  •  
  •   thomaswang · 2019-04-24 11:13:15 +08:00 · 2618 次点击
    这是一个创建于 2075 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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 ”

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

    想控制连接数?有控制连接数的功夫还是优化业务吧。
    thomaswang
        6
    thomaswang  
    OP
       2019-04-25 09:50:33 +08:00
    @NjcyNzMzNDQ3 php-fpm 配置的 static 也是处理三五次就死掉吗
    thomaswang
        7
    thomaswang  
    OP
       2019-04-25 09:51:39 +08:00
    @NjcyNzMzNDQ3 短链,用过 close,time_wait 不会高吗
    thomaswang
        8
    thomaswang  
    OP
       2019-04-25 09:52:40 +08:00
    @NjcyNzMzNDQ3 不控制连接数, 优化业务, 如何优化呢, 是不用 redis 了吗
    NjcyNzMzNDQ3
        9
    NjcyNzMzNDQ3  
       2019-04-25 13:48:35 +08:00
    static 不是,redis 不是瓶颈(觉得 redis 扛不住就水平扩展),业务方面 zray/xhprof 扩展和开启 slowlog 都可以看出业务瓶颈
    thomaswang
        10
    thomaswang  
    OP
       2019-04-25 14:30:04 +08:00
    @nilai 我们的项目虽然没有多大的并发量,应该也不会让他空闲下来
    genglintong
        11
    genglintong  
       2019-05-30 17:02:50 +08:00
    pconnect 生命周期是和 fpm 一致的,fpm 死掉后,应该会重新建立连接吧
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   941 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 21:45 · PVG 05:45 · LAX 13:45 · JFK 16:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.