我在无头服务器上有一个长时间运行的过程。这是一个C程序,它监视调制解调器的来电Id,并挂断电话销售人员。启动时,程序将打开与本地计算机上的MariaDB 10.3数据库的连接。
每天早上4:00,一个单独的C程序获取最新的数据文件联邦贸易委员会。其中包括前一天的约10万宗投诉。我将它们添加到数据库中,所以黑名单表增加了50,000至60,000行。当前表大约有60万行。
上午9:00,当调用开始时,我的查询将失败,消息如下所示。它是C程序的调试跟踪。它包括Error: MySQL server has gone away。
我检查了dmesg和/var/log,但没有说明原因或问题。我哪儿都找不到它。OOM杀手似乎也没有杀死MariaDB服务器。
# cat /var/log/mariadb/mariadb.log
#
# dmesg | grep -iE 'maria|mysql|oom'
#如何开始解决此问题?
我可以找到很多关于MySQL server has gone away的帖子(显然这是一个长期的问题,从来没有解决过)。例如,这里和这里。它们是dev-2-dev“试试看”的答案,缺少故障排除来确定根本原因。
Debug: ===== new call =====
Debug: ring count: 1
Debug: modem_read
Debug: Read 68:
"DATE = 0308
TIME = 0936
NMBR = 4103174745
NAME = SPAM? PASADENA"
Debug: Ring: 0, Caller Id: 1
Debug: call_read_name
Debug: name: SPAM? PASADENA
Debug: call_read_number
Debug: Number: 4103174745
Debug: database_number_is_whitelist
Error: Failed to prepare statement, Error: MySQL server has gone away
Info: 4103174745 not found in whitelist
Debug: database_number_is_blacklist_lcl
Error: Failed to prepare statement, Error: MySQL server has gone away
Info: 4103174745 not found in local blacklist
Debug: database_number_is_blacklist_ftc
Error: Failed to prepare statement, Error: MySQL server has gone away
Info: 4103174745 not found in FTC blacklist
...发布于 2020-01-13 20:16:28
我有一个类似的问题,结果是连接超时。我的程序设置了一个连接池,当需要进行查询时,线程从该池中获取一个连接。每天早上,当我进来尝试运行我的程序时,我都会得到MySQL Server has gone away错误。我找到的许多解决方案据说都增加了my.cnf中的D2字段,但我在can中发现,您可以像这样启用自动重新连接:
// set up your connection
// enable automatic reconnect
bool reconnect = 1;
mysql_options(&connection, MYSQL_OPT_RECONNECT, &reconnect);从医生那里:
如果在试图向要执行的服务器发送语句时发现连接中断,则MySQL客户端库可以执行到服务器的自动重连接。如果启用了自动重新连接,库将尝试重新连接到服务器并再次发送语句。
这给了我一段时间的困难时间,因为它是相当困难的疑难解答,所以希望这是有益于其他人!
来源:C API自动重连接控制
https://dba.stackexchange.com/questions/231664
复制相似问题