Mysql错误=Can';t创建UNIX套接字(24)

Mysql错误=Can';t创建UNIX套接字(24),mysql,Mysql,我有以下例外 Mysql捕获异常=无法创建UNIX套接字(24) 我知道UNIX系统出现了24个错误。这是“打开的文件太多了。” 我提到这个问题: 但我需要了解确切的问题。 在我的代码中,我执行multipleselect查询并存储结果,中间不使用free_result方法 是否会出现以下错误:无法创建UNIX套接字(24) 这是我的密码: pthread_mutex_lock(&mysqlMutex); mysql = mysql_init(NULL); my_

我有以下例外

Mysql捕获异常=无法创建UNIX套接字(24)

我知道UNIX系统出现了24个错误。这是“打开的文件太多了。”

我提到这个问题:

但我需要了解确切的问题。 在我的代码中,我执行multipleselect查询并存储结果,中间不使用free_result方法

是否会出现以下错误:无法创建UNIX套接字(24)

这是我的密码:

    pthread_mutex_lock(&mysqlMutex);
    mysql = mysql_init(NULL);
    my_bool reconnect = 1;
    MYSQL* connection;
    mysql_options(mysql, MYSQL_OPT_RECONNECT, &reconnect);
    connection = mysql_real_connect( server,user,password, database_name, 0, NULL, 0 );
    if(connection == NULL)
    {
             //Connection failed.Exception Handling
    }
    //Execute query  :SELECT * from user ;
    mysql_query(mysql, getuser_query); 

     MYSQL_RES *mysql_res = mysql_store_result(mysql);

    // Query # 2
    // SELECT * from usergroup.
    mysql_query(m_pMysql, userGroup_query);
     mysql_res = mysql_store_result(mysql);
    // Query # 3
    // Query # 4
最后:

    //free mysql memory
    mysql_free_result(mysql_res);
    mysql_close(mysql);
    pthread_mutex_unlock(&mysqlMutex);

您可能同时打开了太多到mysql服务器的连接。您需要增加mysql进程的可用FDs。您通常可以在linux发行版中使用
/etc/security/limits*
来执行此操作。
您还可以看看这个问题:

是的,我们在服务器上处理大量文件。这是唯一的解决办法吗?增加FD?这会是编程问题吗?正如我所要求的,我存储mysql结果,但不在两者之间执行free_result语句。看起来您正在正确关闭连接。mysql/mariaDB不应该为不涉及不适合内存的临时表的简单查询打开新文件。也许您可以尝试使用在执行之间共享的连接池,但除非您在连接保持打开的情况下花费大量时间处理应用程序,否则它不会有帮助。默认情况下,大多数发行版中的最大fds为1024,这相当低。没必要担心增加到10公里或其他什么。在手册中,你们可以看到免费结果只消耗内存,而不是FDs:我也遇到了这个问题,首先,我按照akostadinov的回答增加可用FDs,减少mysql的open_table_缓存和max_连接。但似乎这仍然会发生很长时间。我想我的代码可能还有其他问题,我打印了FDs,我发现FDs的回报率在上升。所以我认为可能是其他地方没有关闭FD。所以我建议你看看是否有其他地方没有关闭FDs。