我正在使用 MATLAB 为数据库提供数据,但过了一段时间后出现too many connections错误。我总是成对使用 opendb 和 closedb 。是要禁食吗?插入一行后是否需要等待?
Connecting to host = localhost user = root password = ***
Uptime: 1591 Threads: 149 Questions: 2956294 Slow queries: 0 Opens: 196391 Flush tables: 1 Open tables: 81 Queries per second avg: 1858.135
Current database is "forwind"
Connection closed, current status:
No connections open
add row
Connecting to host = localhost user = root password = ****
Uptime: 1591 Threads: 150 Questions: 2956402 Slow queries: 0 Opens: 196491 Flush tables: 1 Open tables: 75 Queries per second avg: 1858.203
Current database is "forwind"
Connection closed, current status:
No connections open
add row
Run Code Online (Sandbox Code Playgroud)
默认情况下,MySQL 只允许151 个连接(对于超级用户再加上一个)。
在您的 MATLAB 输出中,您先显示 149 个线程,然后显示 150 个线程。我认为其中大多数都连接到数据库。150 个 MATLAB 线程将生成 150 个连接。
有几种方法可以尝试解决此问题。
一种可能性是限制 MATLAB 中的线程数。您可以使用maxNumberCompThreads函数来做到这一点。请注意,这仅在 R2007b 到 R2010a 中可用(并且它会从 R2009b 开始向您发出警告)。或者,-singleCompThread选项也可以使用,但将您限制为一个线程。
尝试将连接打开的时间限制为绝对最短的时间间隔:打开连接、处理数据库工作、关闭连接。这可能会起作用,具体取决于每个线程正在执行的其他(非数据库)工作量。
最后,您可以增加允许的数据库连接数。您将需要更改max_connections 服务器选项。只需使用命令“SET MAX_CONNECTIONS = 500”。
正如理查德指出的那样,您达到了 max_connections 限制。你可以增加它,但你可能只是推迟了再次达到极限的必然结果。
与其打开连接,添加插入,然后关闭连接,不如尝试安排操作:打开连接,提供一堆更改,然后关闭连接。
| 归档时间: |
|
| 查看次数: |
6707 次 |
| 最近记录: |