重载下的JDBC通信链路故障

时间:2016-03-24 08:01:14

标签: java mysql scala jdbc

我有Scala / Akka / Slick 3.x可运行,可以在Mysql 5.6社区数据库中检索25000条记录。对于它们中的每一个,它会生成一个将执行7次计数的actor,并将包含这7个值的case类返回给runner,一旦完成保存为csv文件。

它在本地工作得很好,它获取所有数据,将它们存储在内存中,输出它们,关闭它们,一切都很好。在我的生产数据库上,大约40秒就可以了,我可以在日志中看到它获取所有数据,直到发生这种情况:

[INFO] [03/24/2016 08:41:46.710] [indicator-runner-akka.actor.default-dispatcher-17] [akka://indicator-runner/user/user-usage-provider/$gO] Valid data set sent for xxxxxx [INFO] [03/24/2016 08:41:46.711] [indicator-runner-akka.actor.default-dispatcher-17] [akka://indicator-runner/user/user-usage-provider/$fO] Valid data set sent for xxxxxx [INFO] [03/24/2016 08:41:46.722] [indicator-runner-akka.actor.default-dispatcher-9] [akka://indicator-runner/user/user-usage-provider/$uN] Valid data set sent for xxxxxx [INFO] [03/24/2016 08:41:46.731] [indicator-runner-akka.actor.default-dispatcher-12] [akka://indicator-runner/user/user-usage-provider/$hO] Valid data set sent for xxxxxx [ERROR] [03/24/2016 08:41:46.823] [indicator-runner-akka.actor.default-dispatcher-6] [akka://indicator-runner/user/user-usage-provider/$kO] Should'nt receive this message : Failure(com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

成功发送到服务器的最后一个数据包是0毫秒前。驱动程序未收到来自服务器的任何数据包。)$

此时,我关闭了actorsystem并返回了相应的退出代码,但是这个操作还没有完成。

我在光滑中遇到了maxQueue异常,我修复了:

executor = AsyncExecutor("HeavyLoad", numThreads = 24, queueSize = 10000)

我也尝试过:

echo 4096 > /proc/sys/net/core/somaxconn

并将max_connections设置为500 ......没有运气

任何可能出错的想法?​​

谢谢!

0 个答案:

没有答案