Como eu controlo o crescimento temporário de arquivos no SQL Anywhere?

3

No momento, estamos com um problema crescente de arquivos temporários. Assistindo a um de nossos sites, podemos ver um crescimento de 100 a 200 MB por dia em um site que estamos assistindo. Neste site ocorreu uma falha quando o arquivo temporário atingiu 20GB e ocorreu um problema de espaço livre.

No momento, estamos suprimindo os tempos limite. -ti e -tl estão definidos para zero. Qual é a chance de as tabelas temporárias estarem se acumulando devido a essa configuração?

Além disso. Para aprofundar minha compreensão do sinalizador -tl, é a seguinte uma declaração verdadeira: A conexão não será redefinida a menos que o cliente não possa ser alcançado via tcpip.

    
por Breck Carter 08.05.2009 / 11:46

2 respostas

2

É improvável que tanto o -ti 0 quanto o -tl 0 tenham algo a ver com o problema de espaço temporário no SQL Anywhere. É mais provável que seja o resultado de uma consulta de fuga. Se você estiver usando a versão 9, poderá ativar a verificação de limites da seguinte maneira:

SET OPTION PUBLIC.temp_space_limit_check = 'ON';

Nas versões 10 e 11, essa opção já deve estar ativada, mas talvez tenha sido desativada. A nova opção max_temp_space também é útil.

Nas versões anteriores, você só precisa encontrar as consultas de fuga; A Foxhound pode ajudar: link

Veja também "Perigo! As consultas estão em andamento!" a link

FYI a configuração de tempo limite de inatividade ilimitada -ti 0 é muito comum quando você espera longos períodos de inatividade; por exemplo, durante a noite em um grande pool de conexões baseado na Web.

No entanto, a configuração de tempo limite de livinidade -tl 0 é realmente perigosa se resultar em muitas conexões zumbis se acumulando (os clientes estão mortos há muito tempo, mas o servidor mantém as conexões abertas). Como a Ajuda diz, geralmente é melhor aumentar o período de tempo limite se você estiver tendo problemas de tempo limite de atividade prematura; por exemplo, -tl 3600 por uma hora.

AFAIK a declaração "A conexão não será redefinida a menos que o cliente não possa ser alcançado via tcpip" parece ser uma simplificação excessiva: a verificação de pacotes de atividade parece ser um pouco mais complexa do que um simples "não pode ser alcançado" teste.

Breck

    
por 08.05.2009 / 11:46
1

Você está certo de que os switches -ti e -tl não estão relacionados ao espaço temporário.

Em relação ao problema de atividade, o cliente e o servidor enviam pacotes de atividade a cada n/3 segundos, em que n é o valor de tempo limite de atividade. Isso só acontece se nenhum outro pacote for enviado nesse meio tempo. Se um dos lados não receber nenhum pacote do outro lado após n segundos, a conexão será interrompida.

A vitalidade não é necessária no caso em que a conexão é realmente descartada pelo outro lado (por exemplo, o aplicativo / servidor trava ou a máquina é reinicializada) desde que a conexão TCP será fechada imediatamente. O Liveness é útil, no entanto, para detectar aplicativos que estão suspensos e problemas de rede que impedem que os pacotes passem, mas não causam a queda da conexão TCP.

    
por 08.05.2009 / 14:57