并发

在一条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 并发相关推荐

  1. mysql 高并发加锁_Mysql高并发加锁事务处理

    MySQL 使用 SELECT - FOR UPDATE 做事务写入前的确认 以MySQL 的InnoDB 为例,预设的 Tansaction isolation level 为 REPEATABLE ...

  2. mysql高并发不用事务_Mysql高并发加锁事务处理

    # Mysql高并发加锁事务处理 MySQL 使用 SELECT - FOR UPDATE 做事务写入前的确认 以MySQL 的InnoDB 为例,预设的 Tansaction isolation l ...

  3. php如何对mysql加锁_PHP+MySQL高并发加锁事务处理问题解决方法

    本文实例讲述了PHP+MySQL高并发加锁事务处理问题解决方法.分享给大家供大家参考,具体如下: 1.背景: 现在有这样的需求,插入数据时,判断test表有无username为'mraz"的 ...

  4. MySQL多线程并发调优

    学习MySQL数据库技术,一个非常重要的技能就是性能调优.通常情况下,都是自下而上的调优方法,主要包括运行环境.配置参数.SQL性能和系统架构设计调优等. 本文从多线程并发的角度进行的思考,简单描述M ...

  5. MySQL在并发场景下的问题及解决思路

    MySQL在并发场景下的问题及解决思路 参考文章: (1)MySQL在并发场景下的问题及解决思路 (2)https://www.cnblogs.com/leefreeman/p/8286550.htm ...

  6. MySQL单机并发量_mysql百万并发量-MySQL集群能支持100万个并发请求吗

    当然支持100万并发. 首先,我们必须做出决定,把阅读和写作分开. 然后,它取决于你需要分配多少个单元用于写作和阅读. 我的SQL集群不建议您使用它,因为有太多的错误. 所有这些都需要先进行压力测试. ...

  7. MySQL的性能优化及自动化运维实践与Mysql高并发优化

    首先,我们来看看DBA的具体工作,我觉得 DBA 真的很忙:备份和恢复.监控状态.集群搭建与扩容.数据迁移和高可用,这是我们 DBA 的功能. 了解这些功能以后要对体系结构有更加深入的了解,你不知道怎 ...

  8. Mysql高并发解决方案

    Mysql高并发解决方案 前言 随着近些年来分布式的应用,其伴随而来的是系统的数据量也越来越大,为了可以提升系统的整体性能,我们对以Mysql为代表的关系型数据库也提出了"分布式" ...

  9. MYSQL多线程并发操作同一张表同一个字段的更新问题

    MYSQL多线程并发操作同一张表同一个字段的更新问题? 可以用乐观锁方案: 在表里增加个字段,版本号字段 每次更新前先从数据库里获取这个版本号的值,然后更新时要同步更新版本号+1,并且增加更新条件版本 ...

最新文章

  1. PointNet++:(1)网络完成的任务分析
  2. 比特币如何实现—《区块链历史链条》2
  3. 利用nRF Sniffer对蓝牙BLE通信数据进行嗅探和分析
  4. DataNumen RAR Repair中文版
  5. 序列化与反序列化_序列化和反序列化JAVA成长之路
  6. 如何让光标处于EditText的末尾
  7. Flask框架(SQLAlchemy(python3版本)中添加数据 )
  8. centos7修改默认网卡名称
  9. Barefoot和Stordis在欧洲领导开源网络
  10. python画折线图虚线_python绘制简单折线图代码示例
  11. Swagger使用总结
  12. CSDN博客代码高亮显示
  13. android版本升级功能,手机安卓系统怎么升级 安卓系统更新升级的三种方法介绍...
  14. java为什么会乱码_Java中文乱码原因
  15. (BLE)蓝牙抓包(1) -nRF-sniffer和wireshark
  16. Lua 程序设计——Lua 教程01
  17. Unable to resolve dependency for :app@debug/compileClasspath': Could not resolve com.***问题解决
  18. 使用 Android Studio 查看模拟器和手机根目录方法Android Device Monitor
  19. C#(Winform)程序无法使用Windows Media Player 组件播放视频文件
  20. 移动桌面位置,再也不怕C盘爆满!

热门文章

  1. 关于私钥加密、公钥加密、签名在生活中的场景
  2. 留给星巴克的时间不多了
  3. 小米回应“上海徐汇拿地”:不用于造车
  4. 华为的第一辆车来了,38.89万元起!王兴评论亮了
  5. 得物App获得2020“年度新经济企业”奖项
  6. 2020 OPPO开发者大会:融合共创 打造多终端、跨场景的智能化生活
  7. 官方暗示与TÜV莱茵合作? MIUI12真的不远了
  8. 小鹏汽车创始人何小鹏:做梦梦到投资人要投资
  9. 全球品牌百强榜单出炉:中国品牌仅有华为上榜
  10. 继安卓市场下架后 探探App也在苹果商店下架