为了账号安全,请及时绑定邮箱和手机立即绑定

SetMaxOpenConns() 无法解决“错误 1040:连接过多”

SetMaxOpenConns() 无法解决“错误 1040:连接过多”

当年话下 2022-03-07 16:01:26
我正在将 golang 与 Mysql 一起使用。我正在使用apache benchmark tool. 我收到太多连接错误。我读了这篇文章。所以,我SetMaxOpenConns(100)在我的代码中添加了。我仍然收到太多连接错误。我正在做以下查询ab -n 1000 -k -c 20 -p post.txt -T application/x-www-form-urlencoded http://localhost:8084/abcd注意: post.txt 文件包含 35 个 id 的数组(整数类型)。这是我的主要功能:db, err := models.NewDB("root:@/rules")    if err != nil {        panic(err)    }    db.SetMaxOpenConns(100)    http.Handle("/abcd", getReq(db))    log.Fatal(http.ListenAndServe(":8084", nil))我在 goroutine 中查询所有 id 的这个函数。func getRuleforProduct(db *sql.DB, id int) map[int]string {    m := make(map[int]string)    var res string    err := db.QueryRow("select rules from table where product_id = ?", id).Scan(&res)    checkError(err)    m[id] = res    return m}即使每秒请求较少,如何解决此问题。我希望代码至少适用于 20 个并发请求。
查看完整描述

2 回答

?
桃花长相依

TA贡献1860条经验 获得超8个赞

首先,您应该检查您的 MySQL 服务器允许使用SHOW VARIABLES LIKE 'max_connections'. 默认值为 151,但如果它小于 100,那么您的程序显然会尝试打开太多连接。

但即使它超过 100,你仍然可以很容易地得到那个错误。MySQLmax_connections是一个影响整个服务器的全局变量。如果您的程序在同一台服务器上使用其他数据库,它们也将计入您的max_connections限制。或者类似地,如果您有其他程序使用您的数据库服务器,您也可能会用完连接。在这种情况下,您必须使用较小的值SetMaxOpenConns()或增加max_connections变量。

还可以考虑将db.SetMaxIdleConns()To 设置为低于 的值db.SetMaxOpenConns()。否则,您可能有 100 个(或您赋予的任何值SetMaxOpenConns)到数据库服务器的空闲连接用尽了连接池。


查看完整回答
反对 回复 2022-03-07
?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

要更新打开连接限制并查看该限制,您只需登录 mysql 并执行以下命令。


mysql> SHOW VARIABLES LIKE 'max_connections';

+-----------------+-------+

| Variable_name   | Value |

+-----------------+-------+

| max_connections | 90  |

+-----------------+-------+

1 row in set (0.00 sec)

下面的命令将打开连接的限制设置为 1000,可以根据您的需要进行更改。


mysql> SET GLOBAL max_connections = 1000;

Query OK, 0 rows affected (0.00 sec)


mysql> SHOW VARIABLES LIKE 'max_connections';

+-----------------+-------+

| Variable_name   | Value |

+-----------------+-------+

| max_connections | 90  |

+-----------------+-------+

1 row in set (0.00 sec)

作为参考,您可以从这里mysql 链接转到 mysql 官方链接


查看完整回答
反对 回复 2022-03-07
  • 2 回答
  • 0 关注
  • 260 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号