Arquivo Não Encontrado


Se você obter ERROR '...' not found (errno: 23), Can't open file: ... (errno: 24), ou qualquer outro erro com errno 23 ou errno 24 no MySQL, significa que você não alocou descritores de arquivo suficiente para o MariaDB. Você pode usar o utilitário perror para obter uma descrição sobre o que o número de erro significa:

shell> perror 23
File table overflow shell> perror 24
Too many open files shell> perror 11
Resource temporarily unavailable

O problema aqui é que mysqld está tentando manter aberto muitos arquivos simultanemanete. Você pode também dizer para o mysqld não abrir muitos arquivos de uma vez ou aumentar o número de descritores de arquivos disponíveis para o mysqld.

Para dizer para o mysqld manter aberto poucos arquivos por vez, você pode tornar a cache de tabela menor usando a opção -O table_cache=32 para mysqld_safe (o valor padrão é 64). Reduzindo o valor de max_connections também reduzirá o número de arquivos abertos (o valor padrão é 90).

Para alterar o número de descritores de arquivos disponíveis para mysqld, você pode usar a opção --open-files-limit=# para mysqld_safe ou -O open-files-limit=# para mysqld. Leia "SHOW VARIABLES". O modo mais fácil de fazer isto é adicioar a opção ao seu arquivo de opção. Leia "Arquivo de Opções my.cnf". Se você tiver um versão antiga do mysqld que não suporte isto, você pode editar o script mysqld_safe. Existe uma linha ulimit -n 256 comentada no script. Você pode remover o caracter '#' para descomentar esta linha, e altere o número 256 para afetar o número de descritores de arquivos disponíveis para mysqld.

ulimit (e open-files-limit) podem aumentar o número de descritorese de arquivo, mas apenas até o limite imposto pelo sistema operacional. Também há um limite 'maior' que só pode ser sobrescrito se você iniciar o mysqld_safe ou mysqld como root (apenas se lembre que você também precisa usar a opção --user=... neste caso). Se você precisa aumentar o limite do SO no número dos descritores de arquivo disponíveis para cada processo, cosulte a documentacão para ser sistema operacional.

Note que se você rodar o shell tcsh, ulimit não funcioará! tcsh também relatará o valor incorreto quando você pergunta pelo limite atual! Neste caso você deve iniciar mysqld_safe com sh!

Retornar