2

我一次用 200 个并发用户测试 JMeter 大约 30 秒,发现 MySQL 连接失败。

该数据库结构良好,具有索引、查询和缓存。

现在是时候我们需要看看像 MySQL 企业这样的东西了吗?

或者有什么办法可以改善这一点?

这是我得到的错误:

Error: 2002 - Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

mysql_connect()触发 PHP 函数时也会创建错误

4

3 回答 3

2

您需要设置 MySQL 全局变量 max_connections 以增加每台 MySQL 服务器的最大连接数。但是,您需要知道增加多个连接意味着更多的 CPU 和内存消耗。

于 2012-12-13T07:00:19.373 回答
1

尝试max_connections在 MySQL 中设置变量 - 200 个连接应该不是太大的问题,除非您的查询非常复杂。

SET GLOBAL max_connections=500;

如果这没有帮助,请使用您的 JMeter 结果来确定哪些查询比其他查询花费更长的时间(使用加速期和/或最大用户数来获得大量样本而不会实际连接失败

然后,这些查询需要重构和/或相关数据需要重构。如果您尝试避免过多的连接和嵌套的选择语句,即使在索引良好的系统上,也可以大大提高查询性能。使用 MySQL 的EXPLAIN功能来了解数据库实际上为您做了多少工作。

于 2012-12-13T06:33:03.423 回答
0

在 php.ini 中,检查

mysql.allow_persistent = xx
mysql.max_persistent = xx
mysql.max_links = xx
mysql.connect_timeout = xx

如果您的服务提供商允许,也可以使用 ini_set() 在您的代码中设置它们。

http://php.net/manual/en/ini.list.php

于 2012-12-13T06:53:49.540 回答