mysql nodejs 并发
并发
在一条sql执行的时间内,如果来了1000条访问请求,那么一次查询结果将返回给1000条请求,
var EventProxy = require('eventproxy');
var proxy = new EventProxy();
var status = "ready";
var select = function(callback){proxy.once("selected",callback);if(status == "ready"){status = "pending";db.select("SQL", function(results){proxy.emit("selected",results);status = "ready";});}
}
function query(sql, sqlParams, callback) {pool.getConnection(function (err, conn) {if (err) {callback(err, null, null);} else {conn.query(sql, sqlParams, function (qerr, vals, fields) {callback(qerr, vals, fields);});}// conn.release(); // not work!!!pool.releaseConnection(conn);});
};exports.init = function (config) {pool = mysql.createPool({host: config.HOST,user: config.USER,password: config.PSWD,database: config.DB,port: config.PORT,});
};
并发访问时,通过conn.release()释放连接不成功,导致一定访问达到连接数上限后,pool.getConnection直接卡死没有任何的回调!
需要改成pool.releaseConnection(conn)
//上面其实是错误的,应该是这样,放到query以后
let pool = mysql.createPool(mysql_config);module.exports={select : function(sql,params,callback){if(sql.toLowerCase().indexOf('select') == -1){console.log('非查询语句不可使用!');return false;}pool.getConnection(function(err,connection){if(err){callback(err,null,null);return false;}connection.query(sql,params,function(err,results,fields){//释放连接connection.release();//事件驱动回调callback(err,results,fields);});});}
};
mysql连接查看
1:查看当前连接
mysql> show status like ‘Threads%’;
±------------------±------+
| Variable_name | Value |
±------------------±------+
| Threads_cached | 58 |
| Threads_connected | 57 | ###这个数值指的是打开的连接数
| Threads_created | 3676 |
| Threads_running | 4 | ###这个数值指的是激活的连接数,这个数值一般远低于connected数值
±------------------±------+
Threads_connected 跟show processlist结果相同,表示当前连接数。准确的来说,Threads_running是代表当前并发数
2:这是是查询数据库当前设置的最大连接数
mysql> show variables like ‘%max_connections%’;
±----------------±------+
| Variable_name | Value |
±----------------±------+
| max_connections | 1000 |
±----------------±------+
3:显示连接列表
mysql> show processlist;
4:显示连接状态
mysql> SHOW STATUS LIKE ‘%connect%’;
linux 配置
net.core.rmem_max = 33554432
net.core.wmem_max = 33554432
net.ipv4.tcp_rmem = 4096 16384 33554432
net.ipv4.tcp_wmem = 4096 16384 33554432
net.ipv4.tcp_mem = 786432 1048576 26777216
net.ipv4.tcp_max_tw_buckets = 360000
net.core.netdev_max_backlog = 2500
vm.min_free_kbytes = 65536
vm.swappiness = 0
net.ipv4.ip_local_port_range = 1024 65535
sysctl -w net.ipv4.tcp_tw_recycle=1
sysctl -w net.ipv4.tcp_tw_reuse=1
sysctl -w net.ipv4.ip_local_port_range=“2000 65535”
如果可以,增加远端服务的 IP 数量也是一个有效且非常推荐的方法。
mysql nodejs 并发相关推荐
- mysql 高并发加锁_Mysql高并发加锁事务处理
MySQL 使用 SELECT - FOR UPDATE 做事务写入前的确认 以MySQL 的InnoDB 为例,预设的 Tansaction isolation level 为 REPEATABLE ...
- mysql高并发不用事务_Mysql高并发加锁事务处理
# Mysql高并发加锁事务处理 MySQL 使用 SELECT - FOR UPDATE 做事务写入前的确认 以MySQL 的InnoDB 为例,预设的 Tansaction isolation l ...
- php如何对mysql加锁_PHP+MySQL高并发加锁事务处理问题解决方法
本文实例讲述了PHP+MySQL高并发加锁事务处理问题解决方法.分享给大家供大家参考,具体如下: 1.背景: 现在有这样的需求,插入数据时,判断test表有无username为'mraz"的 ...
- MySQL多线程并发调优
学习MySQL数据库技术,一个非常重要的技能就是性能调优.通常情况下,都是自下而上的调优方法,主要包括运行环境.配置参数.SQL性能和系统架构设计调优等. 本文从多线程并发的角度进行的思考,简单描述M ...
- MySQL在并发场景下的问题及解决思路
MySQL在并发场景下的问题及解决思路 参考文章: (1)MySQL在并发场景下的问题及解决思路 (2)https://www.cnblogs.com/leefreeman/p/8286550.htm ...
- MySQL单机并发量_mysql百万并发量-MySQL集群能支持100万个并发请求吗
当然支持100万并发. 首先,我们必须做出决定,把阅读和写作分开. 然后,它取决于你需要分配多少个单元用于写作和阅读. 我的SQL集群不建议您使用它,因为有太多的错误. 所有这些都需要先进行压力测试. ...
- MySQL的性能优化及自动化运维实践与Mysql高并发优化
首先,我们来看看DBA的具体工作,我觉得 DBA 真的很忙:备份和恢复.监控状态.集群搭建与扩容.数据迁移和高可用,这是我们 DBA 的功能. 了解这些功能以后要对体系结构有更加深入的了解,你不知道怎 ...
- Mysql高并发解决方案
Mysql高并发解决方案 前言 随着近些年来分布式的应用,其伴随而来的是系统的数据量也越来越大,为了可以提升系统的整体性能,我们对以Mysql为代表的关系型数据库也提出了"分布式" ...
- MYSQL多线程并发操作同一张表同一个字段的更新问题
MYSQL多线程并发操作同一张表同一个字段的更新问题? 可以用乐观锁方案: 在表里增加个字段,版本号字段 每次更新前先从数据库里获取这个版本号的值,然后更新时要同步更新版本号+1,并且增加更新条件版本 ...
最新文章
- PointNet++:(1)网络完成的任务分析
- 比特币如何实现—《区块链历史链条》2
- 利用nRF Sniffer对蓝牙BLE通信数据进行嗅探和分析
- DataNumen RAR Repair中文版
- 序列化与反序列化_序列化和反序列化JAVA成长之路
- 如何让光标处于EditText的末尾
- Flask框架(SQLAlchemy(python3版本)中添加数据 )
- centos7修改默认网卡名称
- Barefoot和Stordis在欧洲领导开源网络
- python画折线图虚线_python绘制简单折线图代码示例
- Swagger使用总结
- CSDN博客代码高亮显示
- android版本升级功能,手机安卓系统怎么升级 安卓系统更新升级的三种方法介绍...
- java为什么会乱码_Java中文乱码原因
- (BLE)蓝牙抓包(1) -nRF-sniffer和wireshark
- Lua 程序设计——Lua 教程01
- Unable to resolve dependency for :app@debug/compileClasspath': Could not resolve com.***问题解决
- 使用 Android Studio 查看模拟器和手机根目录方法Android Device Monitor
- C#(Winform)程序无法使用Windows Media Player 组件播放视频文件
- 移动桌面位置,再也不怕C盘爆满!