:: DEVELOPER ZONE
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 MySQL. 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.
See Secção 4.6.8.4, “SHOW VARIABLES”.
O modo mais fácil de fazer isto é adicioar a opção ao seu arquivo de opção.
See Secção 4.1.2, “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!
© 1995-2005 MySQL AB. All rights reserved.
