Не удалось подключиться к MYSQL: соединение продолжает увеличиваться, даже если оно закрыто в коде

Я использую версию MySQL Ver 14.14 Distrib 5.7.23

У меня проблемы с запуском spark-submit, который пишет в SQL каждые 15 минут. В моем коде я сначала закрою любое текущее соединение SQL перед записью в таблицу SQL, а затем снова закрою соединение.

Мой код SQL, как показано ниже:

var connection = DriverManager.getConnection(url, "mysql", "xxxxxxxx")
if(!(connection.isClosed())){
  connection.close()
}
// use SaveMode.Append to keep adding new data and specify behavior of dataframe.
try {
  Class.forName(driver)
  // open new connection
  dfAnom.write.mode(SaveMode.Append).jdbc(url, "results_table", connectionProperties)
  println(s"- $now: Data successfully sent...")
  // connection = DriverManager.getConnection(url, "mysql", "P@xxxxxxxx")
  connection.close()
} catch {
  case unknown : Throwable => println(s"- $now: Connection Close? $connection.isClosed(). Could not connect to MYSQL")
}

Но много раз (иногда он успешно пишет в SQL) у меня появляются ошибки, которые показывают, что сервер слишком много подключений и начинает убивать задачи и теряет эти 15 минут данных.

message from server: "Too many connections"

сопровождаемая ошибкой планировщика с сотнями сообщений TaskKilled.

19/04/12 01:16:09 ERROR scheduler.TaskSetManager: Task 169 in stage 509.0 failed 4 times; aborting job
- Fri Apr 12 01:15:56 SGT 2019: Could not connect to MYSQL
19/04/12 01:16:09 WARN scheduler.TaskSetManager: Lost task 195.0 in stage 509.0 (TID 15428, bda1node04.bda.sg, executor 194): TaskKilled (Stage cancelled)
19/04/12 01:16:09 WARN scheduler.TaskSetManager: Lost task 135.0 in stage 509.0 (TID 15368, bda1node04.bda.sg, executor 194): TaskKilled (Stage cancelled)
19/04/12 01:16:09 WARN scheduler.TaskSetManager: Lost task 71.0 in stage 509.0 (TID 15304, bda1node07.bda.sg, executor 183): TaskKilled (Stage cancelled)
19/04/12 01:16:09 WARN scheduler.TaskSetManager: Lost task 105.0 in stage 509.0 (TID 15338, bda1node04.bda.sg, executor 194): TaskKilled (Stage cancelled)
19/04/12 01:16:09 WARN scheduler.TaskSetManager: Lost task 165.0 in stage 509.0 (TID 15398, bda1node04.bda.sg, executor 194): TaskKilled (Stage cancelled)

Я сделал несколько проверок на моем сервере SQL:

mysql> SHOW STATUS WHERE `variable_name` = 'Max_used_connections';
+----------------------+-------+
| Variable_name        | Value |
+----------------------+-------+
| Max_used_connections | 152   |
+----------------------+-------+
1 row in set (0.00 sec)

mysql> show status like 'Conn%';
+-----------------------------------+--------+
| Variable_name                     | Value  |
+-----------------------------------+--------+
| Connection_errors_accept          | 0      |
| Connection_errors_internal        | 0      |
| Connection_errors_max_connections | 417    |
| Connection_errors_peer_address    | 0      |
| Connection_errors_select          | 0      |
| Connection_errors_tcpwrap         | 0      |
| Connections                       | 189992 |
+-----------------------------------+--------+
7 rows in set (0.00 sec)

mysql> SHOW VARIABLES LIKE "max_connections";
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| max_connections | 151   |
+-----------------+-------+

max_used connections = 152 max_connections = 151 Я не уверен, является ли это причиной, но если это так, я не уверен, почему мой код не закрывал соединения. Еще одна мысль, которую я заметил, это то, что "Связи" продолжают расти.

Кончаются идеи. Надеюсь, что кто-то может указать мне на другую область, которую я могу исследовать, чтобы решить эту проблему.

Заранее спасибо.

0 ответов

Другие вопросы по тегам