nginx 和 apache 适合作为高并发 APP 服务器吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
gsq19920418
V2EX    NGINX

nginx 和 apache 适合作为高并发 APP 服务器吗?

  •  
  •   gsq19920418 2018-12-09 11:24:09 +08:00 7106 次点击
    这是一个创建于 2556 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如果适合,我想问下应该如何设置,或者说是运维,现在一到高并发(后续有数据库查询,一次得 0.7S ),APP 端就卡住

    24 条回复    2018-12-10 18:04:06 +08:00
    isCyan
        1
    isCyan  
       2018-12-09 11:27:38 +08:00
    “数据库查询,一次得 0.7S ”
    那就不是 nginx apache 的锅了
    去优化你的程序和数据库吧
    monsterxx03
        2
    monsterxx03  
       2018-12-09 11:28:01 +08:00
    你业务代码 /db 慢和 nginx/apache 有啥关系...
    donyee
        3
    donyee  
       2018-12-09 11:31:56 +08:00
    Apache、Nginx 只是前端代理转发,应用服务器得看你是什么语言实现的; Java 的话就是 Tomcat、jetty 或者 Spring Boot 集成的;你说的高并发是多少 TPS、QPS ? 0.7S 也得看是哪里耗时最多?
    t6attack
        4
    t6attack  
       2018-12-09 11:44:10 +08:00
    所有学校的数据库课程,都教外连接之类的复杂查询。但在高性能应用中,复杂查询是要极力避免的。
    gsq19920418
        5
    gsq19920418  
    OP
       2018-12-09 11:48:12 +08:00
    @donyee 应用服务器是 tomcat,0.7S 都是查询数据库时间,TPS 目前软件和我说是 100,但是服务器很渣,阿里云的最低配 2 个 CPU、8g 内存,在上面跑所有的服务。
    gsq19920418
        6
    gsq19920418  
    OP
       2018-12-09 11:50:16 +08:00
    @donyee 现在我也在怀疑是 TCP 半连接的问题,因为我们的 APP 的应用场景是在网络极其不好的情况下打开。但是 windows 下没有找到怎么测试和统计。
    donyee
        7
    donyee  
       2018-12-09 11:50:20 +08:00
    0.7S 都是查询数据库时间,加个索引看看
    likuku
        8
    likuku  
       2018-12-09 11:53:44 +08:00
    #5 #6 看起来楼主对“病因”很清楚啊,那就对症下药嘛... 当然,生产机得谨慎,各种备份作好,先弄个类似的试验环境
    gsq19920418
        9
    gsq19920418  
    OP
       2018-12-09 11:55:19 +08:00
    @likuku 我是搞嵌入式硬件的,只是对 TCP/UDP 比较熟,但是不懂软件的 Tomcat 什么的,所以我问问需要怎么设置。
    likuku
        10
    likuku  
       2018-12-09 12:02:44 +08:00
    @gsq19920418 数据库用什么?能查查它近期的 ops 统计信息么?

    MySQL 的话,可以设置开启 慢查询 日志,记录超过你设定最小时长的查询语句。
    fghjghf
        11
    fghjghf  
       2018-12-09 12:23:33 +08:00
    1、app 是什么类型的 app ? IO 密集型的还是做长链接的?
    2、你理解的高并发是什么啊,ng 是 epoll/kqueue 实现的,网络 IO 复用。这跟你高并发毫无关系啊。
    3、TCP 半链接堵塞没什么可能,除非 SYN 攻击,这个根本不是短板,listen 在 unix 记得是 64465 个(我也不确定)
    4、我猜问题应该出在磁盘 IO。这个不是 IO 多路复用可以解决的问题,跟 nginx 和 apache 一点关系都没有啊。这个情况一定要开多线程 /进程,用异步。不然量一大,或者重接,mysql 被击穿,你客户端只会收到 504.。
    fghjghf
        12
    fghjghf  
       2018-12-09 12:25:15 +08:00
    @fghjghf 说错了,大概是 65535,不记得了,这个问题你应该优化代码逻辑,尤其是数据库都读写,搞主从,reads 热缓存,等等都策略咯
    gsq19920418
        13
    gsq19920418  
    OP
       2018-12-09 12:32:01 +08:00
    @fghjghf 新平台已经上了 reads 什么的啦,但是目前处在新老交替,老的目前还得维持一段时间,APP 是属于长连接模式,得到数据断开。磁盘 IO 有可能。另外我们的服务器由于好管理,用的 windows,不知道阿里云的 windows 是否有设置相关参数。
    loveCoding
        14
    loveCoding  
       2018-12-09 12:35:16 +08:00
    很多开发同学碰到 window 平台都是一脸懵逼~~我也是
    fghjghf
        15
    fghjghf  
       2018-12-09 12:43:59 +08:00
    @gsq19920418 老哥,这就尴尬了,windows 做 server 端我真没用过。只能说这大概是磁盘 IO 引起的,阿里云应该能看到相关数据图的,这个我真没了解过。真没有的话,你可以 psutil 这个库写个检测脚本的。
    zjiecode
        16
    zjiecode  
       2018-12-09 15:00:21 +08:00
    一般,nginx 就做前端的负载均衡,反相代理一下流量。你查询慢,要不是程序问题,比如查询 sql 不够优化,要不也可能是 db 负载太高了。

    另外,为啥查询 0.7s ,app 就卡住了?你一次请求,就算 3-4s,app 也不会卡住吧?
    cominghome
        17
    cominghome  
       2018-12-09 17:38:45 +08:00
    1. keepalive 开起来
    2. 内核参数把 tcp 复用和快速回收开一下,作为代理,nginx 基本上没什么问题了。

    一条查询 0.7s ,本身就是很大的问题
    gamecreating
        18
    gamecreating  
       2018-12-09 22:16:26 +08:00 via iPhone
    golang
    如果你不会 C C++ golang 爽到你爆
    alex321
        19
    alex321  
       2018-12-09 22:32:08 +08:00
    IIS6 都抗过 1241 每秒的请求压力。Nginx 可比它强多了。。。你这压力还不在 web server 上。
    KasuganoSoras
        20
    KasuganoSoras  
       2018-12-09 22:36:12 +08:00 via Android
    啥数据库,我 CentOS 7.5 下 Nginx + PHP 7 + Mariadb 10.3,每秒扛 2000 多请求没啥问题
    akira
        21
    akira  
       2018-12-09 23:11:27 +08:00
    优化数据库吧,如果你们没人做 dba 工作,那就上个中等的 rds, 先看看堆硬件能不能抗过去吧.

    1. 要么花钱堆硬件
    2. 要么花钱找人帮你们优化,
    3. 要么花时间自己研究

    三选一
    EIJAM
        22
    EIJAM  
       2018-12-10 10:11:56 +08:00
    @t6attack 连复杂 SQL 查询都学不会的人,确实不适合写代码
    ithou
        23
    ithou  
       2018-12-10 10:14:54 +08:00 via Android
    @t6attack 对啊。我发现学校里的东西和实际用的几乎不太一样
    gsq19920418
        24
    gsq19920418  
    OP
       2018-12-10 18:04:06 +08:00
    @mrjiejiejie 比如登入 APP 程序,刷新页面
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3200 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 11:35 PVG 19:35 LAX 03:35 JFK 06:35
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86