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

2013-12-17 14:31:31 +08:00
 bshu
node js 开发中碰到的僵死问题,发现其他兄弟也经常碰到,所以就小结一下。

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

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

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

**node js里都是异步的,对于占用资源的分支一定要保证无论是否正确执行完都要释放相关资源,基本就不会僵死了**
3595 次点击
所在节点    Node.js
3 条回复
rankjie
2013-12-17 19:11:48 +08:00
释放资源这种事情不管异步同步或者python/nodejs/whatever都需要吧=_=
bshu
2013-12-17 19:31:51 +08:00
@rankjie 以前是用java和php编程,从没有留心过这种事儿,因为是同步的,所以执行顺序是可预知的,资源使用后然后释放就可以了,但是在异步环境了,因为顺序不是预想的,导致无法释放资源
turing
2013-12-18 22:40:34 +08:00
lz 用的是什么ORM?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/93493

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX