Como você interpreta 'strace' em um processo apache retornando 'restart_syscall'?

6

Reiniciamos um servidor apache todos os dias porque o uso de RAM atinge seu limite.

Apesar de valor Veja esta resposta de falha de servidor , eu não acho que diminuir o MaxClients em a configuração do apache é uma solução para o problema da raiz desconhecida.

Os processos do apache abaixo aparecem incomumente grandes em MB e longos no tempo. Isso significa que há vazamento de memória. Isso significa que devemos reduzir as configurações de MaxRequestsPerChild?

Veja link

Você pode entender os dados abaixo?

Abaixo está um extrato do que

$top com M

retorna:

20839 www-data  20   0 1008m 359m  22m S    4  4.8   1:52.61 apache2                     
20844 www-data  20   0 1008m 358m  22m S    1  4.8   1:51.85 apache2                     
20842 www-data  20   0 1008m 356m  22m S    1  4.8   1:54.60 apache2                     
20845 www-data  20   0  944m 353m  22m S    0  4.7   1:51.80 apache2  

e, em seguida, investigar um único processo com

$sudo strace -p 20839

retorna apenas esta linha, que é enigmática para mim:

restart_syscall(<... resuming interrupted call ...> <unfinished ...>

Alguma ideia? Obrigado.

    
por b_dev 31.10.2012 / 21:37

1 resposta

4

Essa linha significa que a chamada do sistema atual foi interrompida pelo seu strace e que o strace pediu para executá-la novamente. Eu acho que o processo que você está traçando está dormindo.

Se o apache estiver forking em muitos clientes e o servidor iniciar a paginação para o disco, você deverá baixar a diretiva MaxClients .

MaxClients < = (RAM - RSS_all_other_processes) / (apache_process_RSS - apache_SHR) - 1

    
por 31.10.2012 / 21:51