如何更改mysql的并发数(最大连接数)
mysql的最大连接数默认是100,这个数值对于并发连接很多的数据库应用是远远不够的,当连接请求大于默认连接数后,就会出现无法连接数据库的错误,因此我们需要把它适当调大一些。调节方法为:1.linux服务器中:改my.cnf中的值就行了2.Windows服务器中(我用的):在文件“my.ini”中找到段[mysqld],在其中添加一行max_connections=200###200可以更改为想设置成的值.然后重启"mysql"服务。/mysqladmin所在路径/mysqladmin -uroot -p variables输入root数据库账号的密码后可看到| max_connections | 1000 |其他需注意的:在编程时,由于用mysql语句调用数据库时,在每次之执行语句前,会做一个临时的变量用来打开数据库,所以你在使用mysql语句的时候,记得在每次调用完mysql之后就关闭mysql临时变量。另外对于访问量大的,可以考虑直接写到文本中,根据预测的访问量,先定义假若是100个文件文件名依次为1.txt,2.txt100.txt。
1、查看最大连接数的代码:
show variables like '%max_connections%';
2、修改最大连接数的代码:
set GLOBAL max_connections = 200;
在命令行中查看和修改 MySQL 的最大连接数,具体代码如下:
>mysql -uuser -ppassword(命令行登录MySQL)
mysql>show variables like 'max_connections';(查可以看当前的最大连接数)
msyql>set global max_connections=1000;(设置最大连接数为1000,可以再次查看是否设置成功)
mysql>exit
扩展资料
MySQL的系统特性:
1、使用 C和 C++编写,并使用了多种编译器进行测试,保证了源代码的可移植性。
2、支持 AIX、FreeBSD、HP-UX、Linux、Mac OS、NovellNetware、OpenBSD、OS/2 Wrap、Solaris、Windows等多种操作系统。
3、为多种编程语言提供了 API。这些编程语言包括 C、C++、Python、Java、Perl、PHP、Eiffel、Ruby,.NET和 Tcl 等。
4、支持多线程,充分利用 CPU 资源。
5、优化的 SQL查询算法,有效地提高查询速度。
6、既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中。
7、提供多语言支持,常见的编码如中文的 GB 2312、BIG5,日文的 Shift_JIS等都可以用作数据表名和数据列名。
8、提供 TCP/IP、ODBC 和 JDBC等多种数据库连接途径。
9、提供用于管理、检查、优化数据库操作的管理工具。
10、支持大型的数据库。可以处理拥有上千万条记录的大型数据库。
11、支持多种存储引擎。
12、MySQL 是开源的,所以你不需要支付额外的费用。
13、MySQL 使用标准的 SQL数据语言形式。
14、MySQL 对 PHP 有很好的支持,PHP是比较流行的 Web 开发语言。
15、MySQL是可以定制的,采用了 GPL协议,你可以修改源码来开发自己的 MySQL 系统。
参考资料:百度百科-mySQL
这个数值对于并发连接很多的数据库应用是远远不够的,当连接请求大于默认连接数后,就会出现无法连接数据库的错误,因此我们需要把它适当调大一些。
调节方法为:
1.linux服务器中
:改my.cnf中的值就行了
2.Windows服务器中(我用的):
在文件“my.ini”中找到段
[mysqld],在其中添加一行
max_connections=200###
200可以更改为想设置成的值.
然后重启"mysql"服务。
/mysqladmin所在路径/mysqladmin -uroot -p variables
输入root数据库账号的密码后可看到
| max_connections | 1000 |
其他需注意的:
在编程时,由于用mysql语句调用数据库时,在每次之执行语句前,会做一个临时的变量用来打开数据库,所以你在使用mysql语句的时候,记得在每次调用完mysql之后就关闭mysql临时变量。
另外对于访问量大的,可以考虑直接写到文本中,根据预测的访问量,先定义假若是100个文件文件名依次为1.
txt,2.
txt
100.
txt。
现象
Sysbench对MySQL进行压测, 并发数过大(>5k)时, Sysbench建立连接的步骤会超时.
猜想
猜想: 直觉上这很简单, Sysbench每建立一个连接, 都要消耗一个线程, 资源消耗过大导致超时.
验证: 修改Sysbench源码, 调大超时时间, 仍然会发生超时.
检查环境
猜想失败, 回到常规的环境检查:
MySQL error log 未见异常.
syslog 未见异常.
tcpdump 观察网络包未见异常, 连接能完成正常的三次握手; 只观察到在出问题的连接中, 有一部分的TCP握手的第一个SYN包发生了重传, 另一部分没有发生重传.
自己写一个简单的并发发生器, 替换sysbench, 可重现场景. 排除sysbench的影响
检查MySQL堆栈未见异常, 仿佛MySQL在应用层没有看到新连接进入.
通过strace检查MySQL, 发现 accept() 调用确实没有感知到新连接.
Client 向 Server 发起连接请求, 发送SYN.
Server 预留连接资源, 向 Client 回复SYN-ACK.
Client 向 Server 回复ACK.
Server 收到 ACK, 连接建立.
在业务层上, Client和Server间进行通讯.
Client 向 Server 发起连接请求, 发送SYN.
Server 不预留连接资源, 向 Client 回复SYN-ACK, 包中附带有签名A.
Client 向 Server 回复ACK, 附带 f(签名A) (对签名进行运算的结果).
Server 验证签名, 分配连接资源, 连接建立.
在业务层上, Client和Server间进行通讯.
从Client的视角, 连接已经建立.
从Server的视角, 连接并不存在, 既没有建立, 也没有”即将建立” (若不启用SYN-cookie, Server会知道某个连接”即将建立”)
若业务层的第一个包应是从 Client 发往 Server, 则会进行重发或抛出连接错误
若业务层的第一个包应是从 Server 发往 Client的, Server不会发出第一个包. MySQL的故障就属于这种情况.
- Some of these packets get lost because some buffer somewhere overflows.
probe kernel.function("cookie_v4_check").return
{
source_port = @cast($skb->head + $skb->transport_header, "struct tcphdr")->source
printf("source=%d, return=%d
",readable_port(source_port), $return)}
function readable_port(port) {
return (port & ((1<<9)-1)) << 8 | (port >> 8)
}
- static inline bool sk_acceptq_is_full(const struct sock *sk){ return sk->sk_ack_backlog > sk- >sk_max_ack_backlog;}
if (!queue->synflood_warned &&
sysctl_tcp_syncookies != 2 &&
xchg(&queue->synflood_warned, 1) == 0)
pr_info("%s: Possible SYN flooding on port %d. %s.
Check SNMP counters.
",proto, ntohs(tcp_hdr(skb)->dest), msg);
猜想2
怀疑 MySQL 在应用层因为某种原因, 没有发送握手包, 比如卡在某一个流程上:
怀疑是OS的原因, Google之, 得到参考文档: A TCP “stuck” connection mystery【http://www.evanjones.ca/tcp-stuck-connection-mystery.html】
分析
参考文档中的现象跟目前的状况很类似, 简述如下:
正常的TCP连接流程:
当发生类似SYN-flood的现象时, TCP连接的流程会使用SYN-cookie, 变为:
当启用SYN-cookie时, 第3步的ACK包因为 某种原因 丢失, 那么:
发生这种情况时:
TCP握手的第三步ACK包为什么丢失
参考文档中, 对于TCP握手的第三步ACK包的丢失原因, 描述为:
我们可以通过Systemtap进一步探究原因. 通过一个简单的脚本:
观察结果, 可以确认cookie_v4_check (syn cookie机制进行包签名检查的函数)会返回 NULL(0). 即验证是由于syn cookie验证不通过, 导致TCP握手的第三步ACK包不被接受.
之后就是对其中不同条件进行观察, 看看是哪个条件不通过. 最终原因是accept队列满(sk_acceptq_is_full):
恢复故障与日志的正关联
在故障处理的一开始, 我们就检查了syslog, 结论是未见异常.
当整个故障分析完成, 得知了故障与syn cookie有关, 回头看syslog, 里面是有相关的信息, 只是和故障发生的时间不匹配, 没有正关联, 因此被忽略.
检查Linux源码:
可以看到日志受到了抑制, 因此日志与故障的正关联被破坏.
粗看源码, 每个listen socket只会发送一次告警日志, 要获得日志与故障的正关联, 必须每次测试重启MySQL.
解决方案
这种故障一旦形成, 难以检测; 系统日志中只会出现一次, 在下次重启MySQL之前就不会再出现了; Client如果没有合适的超时机制, 万劫不复.
解决方案:
1. 修改MySQL的协议, 让Client先发握手包. 显然不现实.
2. 关闭syn_cookie. 有安全的人又要跳出来了.
3. 或者调高syn_cookie的触发条件 (syn backlog长度). 降低系统对syn flood的敏感度, 使之可以容忍业务的syn波动.
有多个系统参数混合影响syn backlog长度, 参看【http://blog.dubbelboer.com/2012/04/09/syn-cookies.html】
下图为精华总结
请点击输入图片描述
mysql,有一张表里面已经有几千万条数据了,网页访问时极其缓慢,如何提高...
一般查询的话应该有常用的语句的。比如常见查询为:select * from factdata where user='a' and module='b' and dtime between '2012-11-01 00:10:00' and '2012-11-01 00:11:10';那么你这时候需要在factdata表上建立(user,module,dtime)的联合索引。alter table factdata add index i_...
每个MAC地址都是唯一的,那为又何能通过软件修改?
你说的是网卡上的mac地址码 每个网卡上的mac地址都是唯一的 但是如果你想更改 可以通过路由器的 mac地址克隆功能 把你以前电脑的网卡的mac地址,克隆到新的mac地址上 路由器都有这个功能
爸爸走了没了靠山,何猷君更改认证,二房家姐说不认识他,姐弟反目了吗...
而何超仪从小不想上学,考试成绩很差,跟何猷君产生迥然不同。并且如今何鸿燊过世,家中主导权都是在何超仪亲姐何超琼手上,他们一家应当也不把何猷君当儿子对待,这也许才算是何猷君改验证的缘故。之后在2011年的情况下,太太们总算达成共识,也完全把赌王的资产给分完后,可以说4房太太变成了企业...
何服驱动器改参数要不要断使能
何服驱动器改参数要断使能,因为在使能状态下,不能更改参数,需要断开使能才能更改参数。伺服驱动器又称为伺服控制器、伺服放大器,是用来控制伺服电机的一种控制器,其作用类似于变频器作用于普通交流马达,属于伺服系统的一部分,主要应用于高精度的定位系统。通过位置、速度和力矩三种方式对伺服电机进行...
何猷君更改微博认证是怎么回事?
何猷君更改微博认证是5月28日,有网友发现,在赌王何鸿燊去世后,作为四房儿子的何猷君将自己的微博认证从原来的“香港社交名人\/赌王何鸿燊四房儿子”,更改成了“澳门电竞总会会长”等所任职务的名称。赌王还在世的时候,何猷君的微博认证是香港社交名人,赌王何鸿燊四房儿子。不少网友都嘲讽何猷君四房儿子...
赌王刚死,何猷君的微博认证身份已改,这么急于修改个人身份说明了什么...
有网友发现,赌王死后不久,何猷君就更改了自己的微博认证信息。以前是“四室之子”“香港社会名人”,现在改成了“澳门电竞协会会长”“梦幻世界合伙人”“深圳魏武电竞”。而从其发布的聊天记录来看,微博认证的修改似乎是新浪工作人员刻意所为,何猷君对这种落井下石的行为表示了强烈谴责。
win98下何软件可更改硬盘信息
现在,再来修改在dxdiag程序中显示的硬件信息(CPU、RAM、VGA)文件:%windir%\\system32\\dxdiag.exe 修改CPU、RAM信息:打开dxdiag.exe 点"资源"-"对话框"-"6201"-"中文(中国)"找到中框的"Static:处理器:" 标题改为:"处理器: AMD Athlon64 X2 4800+ 2.41 GHz "附我参数(120,182,200)分别为(X...
有没有认何游戏多可以改的软件
请问能问的具体点吗?我的理解是:一个软件可以操作\/更改所有游戏 这个是不现实的=-= 每个游戏的全局变量,开关,条件分歧……包括物理引擎都不一样,而且打开方式也不一样:例:虚幻竞技场用的是 UNREAL ENGINE,然而狙击手幽灵战士使用的是CRY ENGINE,死亡之屋用的BLITZ ENGINE,而且变量名,变量...
赌王刚死,何猷君的微博认证身份已改,这么急于修改个人身份说明了什么...
这个何猷君已经辟谣了,他其实早在半年前就已经申请修改微博认证了。但是却一直都因为资料问题没有修改成功,而何猷君的父亲刚一去世,何猷君的微博认证就修改成功了。据他自己说,这是有人在利用他炒热度,并非自己想要。一、何猷君虽傻但是并不智障,父亲刚死就做背信弃义的事情何猷君身为赌王最喜欢...
百度百科中想要更改公司的名字怎么办,就是更改词条名称
词条名称一旦创建便无法修改 只能创新创建正确的名称 然后用同同义词反馈合并
载范奥扎: mysql的最大连接数默认是100, 这个数值对于并发连接很多的数据库应用是远远不够的,当连接请求大于默认连接数后,就会出现无法连接数据库的错误,因此我们需要把它适当调大一些. 调节方法为: 1.linux服务器中 :改my.cnf中的值就行...
麻章区18786096638: mysql中如何查看最大连接数max - ?
载范奥扎: 通常,mysql的最大连接数默认是100, 最大可以达到16384. 1、查看最大连接数: show variables like '%max_connections%'; 2、修改最大连接数 方法一:修改配置文件.推荐方法一 进入MySQL安装目录 打开MySQL配置文件 my.ini 或 my.cnf...
麻章区18786096638: 如何查询和修改MySQL最大连接数 - ?
载范奥扎: 1. 在my.cnf或者my.ini中设置max_connections=122. 在命令行中修改,如:mysql> show variables like '%connections%';+----------------------+-------+ | Variable_name | Value |+----------------------+-------+ | max_connections | 151 | | max_user_...
麻章区18786096638: 我的mysql版本是5.7,怎么修改它的最大连接数 - ?
载范奥扎: 进入MYSQL安装目录 打开MYSQL配置文件 my.ini 或 my.cnf查找 max_connections=100 修改为 max_connections=1000 服务里重起MYSQL即可.想要了解更多关于Linux的资讯和文章请关注《linux就该这么学》.
麻章区18786096638: mysql数据库最大连接数可以设置为多少 - ?
载范奥扎: MySQL服务器的最大并发连接数是16384. MySQL作为一种开放源代码的关系型数据库管理系统(RDBMS),使用最常用的数据库管理语言结构化查询语言(SQL)进行数据库管理. MySQL服务器的最大并发连接数受服务器配置,及网络...
麻章区18786096638: 如何修改mysql数据库的连接数?
载范奥扎: 新安装后的mysql数据库,其默认的最大连接数为100. 方法一:在mysql安装路径下,找到my.ini或者my.cnf文件,打开它找到max_connections,设置成1000; 然后重启mysql服务. 方法二:在mysql运行环境下,进入mysql命令下: mysql set ...
麻章区18786096638: 怎样更改MYSQL最大连接数 - ?
载范奥扎: 在windows下怎样更改mysql的最大连接数???改my.cnf -> set-variable = max_connections=200 [mysqld]datadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql...
麻章区18786096638: 如何设置sql server的最大连接数 - ?
载范奥扎: 设置最大连接数下面的T-SQL 语句可以配置SQL Server 允许的并发用户连接的最大数目.exec sp_configure 'show advanced options', 1 exec sp_configure 'user connections', 100 第一句用以表示显示sp_configure 系统存储过程高级选项,使...
麻章区18786096638: MySQL修改最大连接数,没有my.ini文件,只有my - default,这怎么改 - ?
载范奥扎: 第一种是通过命令行的方式 mysql -h host -u user -p password mysql> show variables like 'max_connections';(查可以看当前的最大连接数) msyql> set global max_connections=1000;(设置最大连接数为1000,可以再次查看是否设置成功) ...
麻章区18786096638: 怎么修改pl/sql最大连接数? - ?
载范奥扎: select count(*) from v$process; ----- 查看当前连接的进程 select value from v$parameter where name = 'processes'; -----查看当前最多看连接的进程数 alter system set processes = 450 scope = spfile;--- 最高可连接进程数设置为45 shutdown immediate;---立即重启服务 startup;---立即重启服务