Erro inconsistente “incapaz de abrir arquivo de banco de dados” de um programa CGI usando SQLite

2

Eu tenho executado um programa de tarefas para um experimento de psicologia no meu servidor virtual privado com o lighttpd 1.4.28 e o Ubuntu 12.04 . O experimento é um programa CGI escrito em Perl usando um módulo Perl que eu escrevi , apresentando uma interface web sobre o Mechanical Turk. Os dados são armazenados em um banco de dados SQLite usando o modo WAL, com o DBD :: SQLite fornecendo a interface Perl subjacente.

O experimento parece funcionar bem para a maioria dos trabalhadores que o completam no Mechanical Turk. Ocasionalmente, no entanto, os usuários recebem o erro DBD::SQLite::db prepare failed: unable to open database file . Isso acontece em pontos aparentemente arbitrários no meio de uma tarefa que envolve clicar em cerca de 100 páginas HTML geradas pelo programa CGI, cada uma delas acessa o banco de dados. Não parece desaparecer quando os usuários atualizam a página (penso ). Eu não tenho idéia de como replicar isso sozinho, mas eu sei que ele atingiu pelo menos 2 dos 15 usuários. Observando top enquanto isso acontecia, a CPU e a memória não pareciam estar estressadas. O espaço em disco também não é um problema (estou usando apenas 1,4 GB de uma partição de 3 GB). O banco de dados tem cerca de 280 kb atualmente. PRAGMA integrity_check; retornou ok .

Alguma idéia de como depurar isso? O Google me diz que "não é possível abrir o arquivo de banco de dados" geralmente é um erro de permissão ou algo parecido, mas tudo está configurado corretamente; a tarefa geralmente funciona.

    
por Kodiologist 02.07.2015 / 19:09

0 respostas