В случае сбоя C-программы соединение MySQL будет автоматически закрыто? - PullRequest
0 голосов
/ 11 июля 2019

Будут ли автоматически закрываться соединения MySQL в случае сбоя моей программы на C?

К сожалению, я не очень разбираюсь в C и отлаживаю некоторый код, написанный кем-то другим.Я пытаюсь диагностировать проблему, из-за которой количество подключений к моему серверу MySQL увеличивается.Есть много запущенных программ, и это могло быть вызвано любой, но я считаю, что я сузил их до определенной.

У меня есть основания полагать, что что-то вызвало сбой программы, а затемон был перезапущен супервизором .Это могло произойти более 20 раз подряд, потому что супервизор пытается перезапустить программу после сбоя.Это все нормально, я, вероятно, смогу найти проблему сам.

Теперь я не могу найти никакой информации о том, будут ли программы C очищать соединения MySQL после смерти.

Мы запускаемпрограмма со стандартным процессом подключения.

MYSQL *con = mysql_init(NULL);
if (con == NULL)
    {
    fprintf(stderr, "%s\n", mysql_error(con));
    exit(1);
    }

if (mysql_real_connect(con, "localhost", "username", "password", "database", 0, NULL, 0) == NULL)
    {
    finish_with_error(con);
    }

Для записи finish_with_error() равно

void finish_with_error(MYSQL *con)
    {
    fprintf(stderr, "%s\n", mysql_error(con));
    mysql_close(con);
    exit(1);
    }

В любом случае, скрипт обычно выполняется так, как задумано, и заканчивается на

mysql_close(con);

Таким образом, мой вопрос: если в какой-то момент происходит сбой программы между открытием соединения и его закрытием, будет ли соединение автоматически закрываться или оно будет оставаться открытым неограниченное время?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...