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

在做网站的时候,你是如何保持 Web Server 与数据库的连接的?

  •  
  •   locktionc · 2018-05-30 19:51:38 +08:00 · 1998 次点击
    这是一个创建于 2350 天前的主题,其中的信息可能已经有所发展或是发生改变。

    你会在 Web Server 里面保持一个对数据库的长连接,前端发来一个请求你就直接查询数据库,还是每次前端请求来了以后再和数据库建立连接,查询完成以后就关闭?

    如果保持一个长连接,有没有什么风险?

    并发量几十,数据库返回的数据只有几 KB,这种情况下最佳处理方案是什么?

    6 条回复    2018-05-30 23:44:15 +08:00
    a7a2
        1
    a7a2  
       2018-05-30 20:27:49 +08:00
    连接池啊 一般数据库连接库都带有。

    例如;
    DialTimeout: 3 * time.Second,
    ReadTimeout: 3 * time.Second,
    WriteTimeout: 3 * time.Second,
    PoolSize: 99,
    PoolTimeout: time.Second * 3,
    IdleTimeout: time.Second * 10,
    IdleCheckFrequency: time.Second * 10,
    locktionc
        2
    locktionc  
    OP
       2018-05-30 22:19:54 +08:00
    @a7a2 嗯。这是一种方式。在一定时间内复用,超过一定时间就算开。同时最多 PoolSize 个连接。
    a7a2
        3
    a7a2  
       2018-05-30 22:48:52 +08:00
    其实数据库配置文件可以设置超时、空闲多久等选项 自己搜索
    panyanyany
        4
    panyanyany  
       2018-05-30 22:54:40 +08:00
    这种数据量需要考虑最佳方案么……等你到了并发连接 300~500 的时候再考虑不迟啊
    yangqi
        5
    yangqi  
       2018-05-30 22:59:47 +08:00
    网站不要用长连接,除非特殊情况,而且你知道你在干什么,都有哪些坑。就正常的连接查询断开就行,别想太多了。
    iyaozhen
        6
    iyaozhen  
       2018-05-30 23:44:15 +08:00 via Android
    连接池更好,不然把 db 打崩了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5565 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 07:56 · PVG 15:56 · LAX 23:56 · JFK 02:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.