V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
bshu
V2EX  ›  Node.js

解决node js程序僵死问题总结

  •  
  •   bshu · 2013-12-17 14:31:31 +08:00 · 3595 次点击
    这是一个创建于 4023 天前的主题,其中的信息可能已经有所发展或是发生改变。
    node js 开发中碰到的僵死问题,发现其他兄弟也经常碰到,所以就小结一下。

    网站项目:火星问答 http://www.huoxingwenda.com/

    问题描述:当有较多用户访问时,正常运行一段时间就会出现程序僵死,页面无法打开的问题

    排查及解决:
    1、在测试环境里正常,程序重启后也能运行正常运行一段时间,而且程序僵死后并没退出,所以应该不是显性的程序错误。
    2、在程序错误时,尝试访问不同类型页面,发现不需要数据库数据的页面可以访问,一涉及到数据库就不能访问,但数据库运行正常,所以应该是程序和数据库连接问题。由于所有与数据库相关页面都不能正常访问,也说明不是单个数据查询出现问题,而是程序无法连接数据库了。
    3、由于此程序使用了pool功能,程序通过pool分配的connection与数据库连接,出现以上问题,初步断定是connection无法正常分配了。
    4、检查程序中涉及到pool的程序,发现某些条件下没能及时release connection,导致连接资源耗尽。修复这些地方,问题解决

    **node js里都是异步的,对于占用资源的分支一定要保证无论是否正确执行完都要释放相关资源,基本就不会僵死了**
    3 条回复    1970-01-01 08:00:00 +08:00
    rankjie
        1
    rankjie  
       2013-12-17 19:11:48 +08:00 via iPhone
    释放资源这种事情不管异步同步或者python/nodejs/whatever都需要吧=_=
    bshu
        2
    bshu  
    OP
       2013-12-17 19:31:51 +08:00
    @rankjie 以前是用java和php编程,从没有留心过这种事儿,因为是同步的,所以执行顺序是可预知的,资源使用后然后释放就可以了,但是在异步环境了,因为顺序不是预想的,导致无法释放资源
    turing
        3
    turing  
       2013-12-18 22:40:34 +08:00
    lz 用的是什么ORM?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5172 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 03:50 · PVG 11:50 · LAX 19:50 · JFK 22:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.