mysql 服务器端关于用户连接方面的…

来源:互联网 发布:canonmp288清零软件 编辑:程序博客网 时间:2024/06/06 06:54
最近在对新版本的sqlproxy进行性能与压力的测试,这里记录一下测试过程碰到的关于mysql服务器端用户连接方面的限制。

1. max_allowed_packet
服务端允许的最大包长度。默认情况下,mysqld会把它初始化为net_buffer_length(最大值为1M)的大小,所以如果操作的表的行的长度太大的话,比如有个TEXT或BLOB字段的话,就会失败。

max_allowed_packet 最大可以设置到1G,一般16M就基本够用了。
这个值是只读的,要修改的话必须重启。

2. max_connections
服务端允许的最大并发连接数。5.5中默认是151个。在压力测试中需要调高该值,最大值为100000。
该值可以动态修改,而不重启mysqld。

3.back_log
服务端提供的客户端连接的等待队列长度。当在很短的时间内到达大量连接的时候,客户端连接就会被放入该队列等待mysqld主线程来处理(检查,并分配工作线程)。
调大该值之前,需要先调大linux操作系统的限制。
系统允许的单个端口最大等待队列长度在/proc/sys/net/core/somaxconn中。
可以通过命令 sysctl net.core.somaxconn=4096来增大该值到4096。
然后在设置mysqld中的back_log选项,该值可以动态设置。

4.open_files_limit
操作系统允许mysqld打开的最大文件句柄数。
默认值为0,即按照系统的最大限制来。
可以通过命令ulimit -HSn 65535来调大系统限制。
因为socket本身也是一个文件,所以该值限制了mysqld处理的连接数。
在my.cnf 的mysqld中添加 open-files-limit = 65536

5. thread_stack
mysql为每个工作线程分配的堆栈空间大小,32位机器默认为192K 64位为256K, 把这个调小可以增加mysql
能够承受的最大连接数,但不能太小,否则会影响性能。
可以考虑把64位的调小到192K

6. net_read_timeout 和 connect_timeout
如果网络不是太稳定或执行的查询的规模较大,有时会碰到2013错误即lost connection tomysql...,还有mysql status中的aborted_connects数量在增加。
建议调大这2个值。
mysql5.5中
net_read_timeout默认为30s,可以调大到60s或更多.
connect_timeout默认为10s,可以调大到60或更多。(也别太多了)

这样可以避免2013错误。



其他的以后在补充。。。
0 0
原创粉丝点击