MySql - 客户端超时
MySql - client timed out
我正在使用 C3P0 (0.9.5.2) 连接池连接到 MySQL 数据库。我已将默认语句超时设置为 1 秒。我看到在高负载期间,一些连接请求超时(checkoutTimeout
为 1 秒),但未达到最大池容量。在分析线程堆栈时,我看到 'MySQL Cancellation timer' 个线程处于可运行状态。可能存在批量超时,导致数据库无响应并且在 1 秒内未创建新连接。
有没有办法最大限度地减少取消计时器的影响,并确保在未达到最大池容量时不会发生客户端超时?
即使池不是 maxPoolSize
,如果设置了 checkoutTimeout
,检出尝试也会超时,并且无法在超时内获取新连接。 checkoutTimeout
就是 - 超时 - 并且无论原因如何都会强制执行时间限制。
如果你想防止超时,你必须确保连接可以在分配的时间内可用。如果有什么原因导致数据库无法响应连接请求,最直接的解决方案显然是解决该问题。其他方法可能包括设置更大的 acquireIncrement
(以便更有可能预取连接)或更大的 minPoolSize
(相同)。
或者,您可以选择更长的超时(或根本不设置超时)。
我正在使用 C3P0 (0.9.5.2) 连接池连接到 MySQL 数据库。我已将默认语句超时设置为 1 秒。我看到在高负载期间,一些连接请求超时(checkoutTimeout
为 1 秒),但未达到最大池容量。在分析线程堆栈时,我看到 'MySQL Cancellation timer' 个线程处于可运行状态。可能存在批量超时,导致数据库无响应并且在 1 秒内未创建新连接。
有没有办法最大限度地减少取消计时器的影响,并确保在未达到最大池容量时不会发生客户端超时?
即使池不是 maxPoolSize
,如果设置了 checkoutTimeout
,检出尝试也会超时,并且无法在超时内获取新连接。 checkoutTimeout
就是 - 超时 - 并且无论原因如何都会强制执行时间限制。
如果你想防止超时,你必须确保连接可以在分配的时间内可用。如果有什么原因导致数据库无法响应连接请求,最直接的解决方案显然是解决该问题。其他方法可能包括设置更大的 acquireIncrement
(以便更有可能预取连接)或更大的 minPoolSize
(相同)。
或者,您可以选择更长的超时(或根本不设置超时)。