我同时测试了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函数被触发时也会产生错误
发布于 2012-12-13 15:00:19
您需要设置名为max_connections的MySQL全局变量,以增加每台MySQL服务器的最大连接数。但是,您需要意识到,增加多个连接意味着更多的CPU和内存消耗。
发布于 2012-12-13 14:33:03
尝试在MySQL -200Connections中设置max_connections变量应该不会有太大问题,除非您的查询非常复杂。
SET GLOBAL max_connections=500;如果这还不起作用,那么使用您的JMeter结果来确定哪些查询比其他查询花费的时间要长得多(尝试使用上升期和/或最大用户数来获得一批好的样本,而不会导致连接实际失败。
然后,这些查询需要重构和/或相关数据需要重构。如果尽量避免过多的联接和嵌套select语句,即使是在索引良好的系统上,也可以极大地提高查询性能。使用MySQL的EXPLAIN特性来找出数据库实际为您做了多少工作。
发布于 2012-12-13 14:53:50
在php.ini中,签出
mysql.allow_persistent = xx
mysql.max_persistent = xx
mysql.max_links = xx
mysql.connect_timeout = xx如果您的服务提供商允许,也可以使用ini_set()在代码中设置它们。
https://stackoverflow.com/questions/13854218
复制相似问题