首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
fxjson
V2EX  ›  PHP

据说 swoole 性能特别好,大家怎么看?

  •  
  •   fxjson · 4 天前 · 2778 次点击

    据说 swoole 性能挺好,大家有用在实际项目中吗?用在什么场景下呢?

    32 条回复    2020-08-06 11:55:49 +08:00
    jaynos
        2
    jaynos   4 天前   ❤️ 1
    实际项目中在 websocket 上使用过 swoole,坑点还是有不少,选择的原因是着急上线+需要对接业务是 php 的。

    碰到的坑点有 Table 需要传入 capacity,超出就删已有数据,可能还有实际容量达不到 capacity 指定的数量的问题。隐约记得还有内存可见性问题,通过 Timer 创建的任务不能访问到链接信息问题。最严重的还是一次莫名的线上事故,整个进程完全阻塞,呆呆的停在那里= =,coredump 之后紧急重启了,事后分析堵塞在 epoll_wait 上,具体就没细看了,加了个班直接迁移到 golang 上了= =
    agdhole
        3
    agdhole   4 天前
    安装麻烦,使用麻烦
    有这功夫直接换语言
    z5864703
        4
    z5864703   4 天前
    用 swoole 跑长链接数据转发业务,性能还行吧,4 核 8G 单机 40 万链接。但是坑比较多,只有趟过了才知道
    janxin
        5
    janxin   4 天前
    有折腾的时间,都换上 java 了…
    nguoidiqua
        6
    nguoidiqua   4 天前
    对其没啥兴趣
    shanghai1998
        7
    shanghai1998   4 天前
    测试过,单跑代码比 java 都快
    但是链接数据库、链接 redis,比 java 慢的多,慢 50%左右,我怀疑是底层原生扩展不行
    但是比 pfm 方式有质的提升,而且不占用 tcp 链接了
    KasuganoSoras
        8
    KasuganoSoras   4 天前
    挺好,之前用 Swoole 写了个数据库查询的接口,配合 Redis 缓存,有连接池。后来这接口给人 CC 攻击了,4 核 4G 内存的服务器,跑上了 26w QPS,宽带先打满了,机器却没死机,攻击一停秒恢复
    wspsxing
        9
    wspsxing   4 天前 via Android   ❤️ 1
    rustgo 笑而不语
    edwinlauff
        10
    edwinlauff   4 天前
    用时候最好把主要代码理清,不过大多数还是用 Go
    richangfan
        11
    richangfan   4 天前
    这个是推广贴,标题 Google 一下就知道了
    back0893
        12
    back0893   4 天前
    wokerman 用着不比 swoole 舒服.
    反正用 swool 不如换语言
    shuimugan
        13
    shuimugan   4 天前   ❤️ 1
    选了错的路,越走越错。
    已转 Node.js 。
    sagaxu
        14
    sagaxu   4 天前
    3 年多 Swoole 使用经验,心里依然没底,用 JVM 或者 Go 的时候,大部分疑问可以在 memory model 里找到答案,还有一些相关的书可以参考,但是 PHP+Swoole 的相关资料可没那么好找。

    框架五花八门,现在官方最推荐的是 hyperf,注解和路由写起来很像 Spring,但 IDE 会提示删除未使用的 import,真要删了注解也就不工作了,这是个问题。第二个问题是启动慢,比 SpringBoot 还慢,似乎跟注解的工作方式有关。


    @jaynos
    如果不是历史遗留项目,还是 JVM 和 Go 靠谱的多,开发效率差不多,但生态和稳定性相差很大。

    @back0893
    wokerman 的回调,跟 Swoole 的协程比,体验还是差了写,写基础设施可能还行,写业务逻辑就累了。
    abcbuzhiming
        15
    abcbuzhiming   4 天前
    这个所谓的性能特别好,其实也只是和传统 PHP 比而已,在 PHP 以外的世界,一般般,不算特别出彩。

    Swoole 这个东西的最大问题在于马太效应,虽然我也认为它才是未来,CGI 已经落后了,驻留进程才是正确的做法。无奈在 PHP 的世界里,CGI 真的是历史(包袱)厚重,导致 Swoole 这个东西诞生了这么多年,还是非主流。开源社区里,你先进,你性能高,但是如果你非主流了,那一定前途堪忧,无数先烈证明了这点
    lsls931011
        16
    lsls931011   4 天前
    关键问题是 swoole 现在生态不完善,但是商业气息却非常浓厚,swoole 开源社区还互相吵,这还能起来嘛
    xooass
        17
    xooass   4 天前
    还用问大家怎么看?

    不看,不用
    wangbenjun5
        18
    wangbenjun5   4 天前
    一句话,用 swoole 还不如用 go,无论是从开发效率、生态、可维护性上面比,别说 swoole 是 PHP,其实没多大关系
    CoolSpring
        19
    CoolSpring   3 天前
    @richangfan 搜索结果除了 v2 上的这个帖之外,只有一个采集 v2 的站啊
    dvaknheo
        20
    dvaknheo   3 天前
    swoole 把主战场放在 web 是搞错方向了。
    hyperf ; swoole 节省下来的性能就浪费在这?
    如果用 只能用在 swoole 上的框架 来进行开发,开发效率会大大降低。
    另一方面,swoole 平台的东西用 composer 的东西都得要去看是否兼容 swoole.
    xingjue
        21
    xingjue   3 天前   ❤️ 1
    一堆 吹 go 的 本人实测 go 做 web 很痛苦 17 年底开始用,swoole 如果稳定性在牛逼点,就类似于 java 的 netty,成为 php 工业级基础软件,总之前景还是不错的,没楼上的那些人说的那么糟糕( PS:神烦一堆无脑 go 吹,就好像当年吹 python 做 web 的那波人一样)
    JaguarJack
        22
    JaguarJack   3 天前 via iPhone
    @xingjue 你让她们说出个一二三出来,最后只会来一句原生自带协程。其他啥也反驳不了
    Austaras
        23
    Austaras   3 天前
    艹 goroutine 起码支持多核不比 swoole 高级多了
    sagaxu
        24
    sagaxu   3 天前 via Android
    @JaguarJack

    一,静态类型,项目越大越需要类型约束。
    二,协程生态,所有库支持协程,不用猜和试。
    三,明确的 memory model,更少并发的坑。
    四,零依赖部署更简单,开箱即用的交叉编译。
    五,多线程利用多核,PHP 多线程能用?
    六,性能,框架可以拿 C 写,业务逻辑呢?
    lands
        25
    lands   3 天前
    用的那时候 swoole 还是 1.x, 当时填了不少坑...现在版本都到 4.x 了...这一路过来, 相关的框架太多了, 五花八门
    Evilk
        26
    Evilk   2 天前
    我们用 swoole 4.4+, swoft 2.0.x,虽然有问题,但没那么不堪吧
    haohappy
        27
    haohappy   2 天前
    @Evilk swoft 和 es 被官方打压 都不维护了吧?
    ragnaroks
        28
    ragnaroks   2 天前
    矮子里面拔高个
    CodeCodeStudy
        29
    CodeCodeStudy   2 天前
    可以辅助 PHP-FPM
    Evilk
        30
    Evilk   2 天前
    @haohappy swoft 和 es , 一直都在维护
    ben1024
        31
    ben1024   1 天前
    能真正嵌入 PHP 本身才能更快速的发展,
    以扩展形式存在且开发团队有限的情况下,发展速度还是有些慢
    xingjue
        32
    xingjue   2 小时 50 分钟前
    @Austaras 一天多核多核,你懂个屁,swoole 可以开多进程或者利用 docker 使用多核性能,照你这么说,node 单线程的,性能不是掉渣,辣鸡半桶水
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   4140 人在线   最高记录 5168   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 06:45 · PVG 14:45 · LAX 23:45 · JFK 02:45
    ♥ Do have faith in what you're doing.