V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
NGINX
NGINX Trac
3rd Party Modules
Security Advisories
CHANGES
OpenResty
ngx_lua
Tengine
在线学习资源
NGINX 开发从入门到精通
NGINX Modules
ngx_echo
gsq19920418
V2EX  ›  NGINX

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

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

    如果适合,我想问下应该如何设置,或者说是运维,现在一到高并发(后续有数据库查询,一次得 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   ·   实用小工具   ·   5727 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 01:46 · PVG 09:46 · LAX 17:46 · JFK 20:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.