在本地测试Mysql 引擎Innodb与MyISAM的性能差别, 通过Shell脚本来进行并发更新操作,如下所示:
for ((i=0; i<$concurrent; i++)) do mysql -uroot -p123456 -Dtest -e "update ${tablename} set count=count+1;" & done
但设置并发为200时报错: Too many connections.
看文档得知报此错误正常.
If you get a Too many connections error when you try to connect to the mysqld server, this means that all available connections are in use by other clients. The number of connections permitted is controlled by the max_connections system variable. The default value is 151 to improve performance when MySQL is used with the Apache Web server. (Previously, the default was 100.) If you need to support more connections, you should set a larger value for this variable.
但使用ab测试(访问php页面)来进行同样并发量的测试时,却没有报错。
php脚本:
<?php $conn=mysql_connect('127.0.0.1', 'root', '123456') or die(mysql_error()); mysql_select_db("test") or die(mysql_error()); $sql="update count_t set count=count+1"; mysql_query($sql) or die(mysql_error()); ?>
ab测试命令:
$ ab -n200 -c200 http://localhost/test_update_count_t.php
mysql管理者自己的连接池,mysql链接的过期时间默认是8个小时,所以持续不断的请求,mysql还是会把旧的链接分配给你;
mysql的链接是按需创建的,没有固定的链接;
可以通过 max_connections=num设置最大连接数
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。