nodeJS express mysql 高并发时连接数不够用问题 以及如何处理高并发
来源:互联网 发布:microsoft办公软件 编辑:程序博客网 时间:2024/04/30 08:05
首先 描述下问题,前段时间接到了通知,做nodejs高并发代码优化,于是开始整咯,首先用loadrunning模拟高并发,问题就来了,到高并发路由的时候,会出现数据库连接数不够用的情况。查询了代码,都是一条语句执行完毕之后,:在callback中执行释放连接然后通知下一个语句去执行。应该是一个用户一个数据库连接就够了,而且我做了队列限制并发数,应该足够限制住连接数才对,可是每次还是蹭蹭蹭的往上飙然后连接数不够用报错。
经过一段时间的摸索,总结出原因,在代码中我用到了一个往同一张表中插入多条记录的时候递归插入,虽然每次执行完毕后会通知数据库释放连接,但接收到释放消息以及释放的时间远远大于逻辑处理时间,所以会有在高并发的时候连接数不够用的问题。也就只有在高并发的那个点会这样。
解决思路:将多条语句的insert整合成一条语句的insert语句,这样可以减少与数据库取得连接的开销,同时可以避免高并发的时候连接数不够用问题。
ps:附记录nodejs高并发的优化方向。本身nodejs对高并发处理真的特别牛逼,但是一个项目往往是由多个方便组成的,比如DB,静态资源,页面渲染等。那如何提高性能:nginx+redis+mysql+客户端渲染+ cluster。nginx处理静态资源cdn加速,redis作缓存(redis需要持久化关掉,同时将redis集群),mysql进行集群,页面渲染如果只依赖ejs那么高并发下ejs渲染量过大的话会很成倍的提高处理时间所以建议将一些渲染平摊到客户端的浏览器上。nodejs是单线程无法利用多核cpu?nonono,你可以利用多进程利用cpu的,cluster就可以让你做到nodejs将电脑多核利用起来。只要做到这些,nodejs处理高并发想并发多少就并发多少。
- nodeJS express mysql 高并发时连接数不够用问题 以及如何处理高并发
- mysql处理高并发
- 如何处理高并发
- 如何处理Java中的高并发问题
- mysql数据库高并发处理
- nodejs经典高并发
- Java如何处理高并发
- 如何处理负载、高并发?
- epoll处理高并发连接丢失连接的问题
- PHP 处理高并发问题
- 系统高并发问题处理
- 高并发架构以及处理高并发的常见方法
- 高并发网络连接数因端口数量受限问题
- 如何解决高并发问题
- 如何解决高并发问题
- 如何解决高并发问题
- [转]The C10K problem(中文版) - 如何处理高并发连接
- redis使用乐观锁时处理竞争问题,高并发时失败率高如何解决
- 移动端web页面知识小结之meta部分(转载)
- JAVA中Static关键字解析
- 导航菜单示例
- 角色
- ServletInputStream available bug?
- nodeJS express mysql 高并发时连接数不够用问题 以及如何处理高并发
- 对象的克隆——原型模式(三)
- 在Word中添加图或表自动编号与引用功能
- HTML中的 href 和 src 的区别
- js特效 人形时钟
- poj 3009
- Frafment 的show和hide
- 初见Spring之AOP编程
- Java基础——冒号标记代码块的作用