Muitas falhas de página principais no CentOS

2

Temos um script PHP bastante complicado, que gera uma série de pequenas e grandes falhas de página.

$>  ps -o min_flt,maj_flt,time,cmd,pid  4686 
 MINFL  MAJFL     TIME CMD                           PID
3074640 255514 00:06:51 php scripts/daemon/PostProc 4686

Este script é executado por 10 minutos e depois se mata. Cron recomeça um minuto depois.

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                                                                                                       
 4686 apache    20   0 2138m 1.6g 2012 T 48.5 86.9   6:33.30 php

Não tenho ideia do que está causando um número tão alto de falhas de página. Eu duvido que você também. Mas espero que alguém possa me apontar alguns comandos do Linux que eu possa usar para investigar o que pode estar causando essas falhas de página.

Obrigado!

Editar 1

Corri o script, e aqui está o que eu recebi de volta.

% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ----------------
 20.15    9.297617          22    424130           gettimeofday
 13.49    6.223247          64     96600           read
 13.01    6.001955         158     37945           stat
  8.40    3.876297         306     12677           open
  7.43    3.425291          63     54691           write
  6.47    2.985425          41     72945           sendto
  6.00    2.765838          25    109401           recvmsg
  4.84    2.234694          26     85617           close
  4.79    2.210381          20    109401           fcntl
  3.54    1.635305          22     72934           socket
  3.01    1.387212          19     72906           poll
  1.96    0.901874          25     35712        70 lstat
  1.72    0.795357          22     36467           connect
  1.62    0.745462          20     36467           getsockname
  1.60    0.740286          20     36467           bind
  0.77    0.353189          28     12719           fstat
  0.67    0.309640          24     12664           lseek
  0.51    0.236759          71      3346           brk
  0.01    0.004424          36       123           munmap
  0.00    0.000524          25        21           mmap
  0.00    0.000000           0         2           mremap
  0.00    0.000000           0        11           recvfrom
  0.00    0.000000           0         1           shutdown
  0.00    0.000000           0         4           uname
  0.00    0.000000           0         1           flock
  0.00    0.000000           0         1           unlink
------ ----------- ----------- --------- --------- ----------------
100.00   46.130777               1323253        70 total
    
por Alan C. 25.07.2014 / 21:33

2 respostas

2

Uma falha de página ocorre quando um programa em execução tenta acessar um pouco de sua memória que não está na RAM, muito provavelmente está no arquivo de troca no disco. (Artigo Wikipedia obrigatório)

Sua saída de um comando em execução mostra que o programa PHP está tentando alocar 2138MB (a coluna "VIRT") e é capaz de manter apenas 1.6GB (a coluna "RES") na RAM. ( citação )

Cada vez que o script acessa algo que não está na RAM, uma falha de página é gerada informando ao sistema operacional que ele precisa trocar um pouco mais da memória de processos do disco.

Voltar para sua pergunta:

But I'm hoping someone can point me at some Linux commands that I can use to investigate what might be causing these page faults.

Você pode querer ver quão grande é um programa simples PHP. Pode ser algo como uma variável com dados anexados, em vez de apagados e sobrescritos, ou pode ser necessário limitar o tamanho do conjunto de dados que você está processando de uma só vez.

Se você precisar de mais ajuda, poderá colocar essa questão em um fórum específico do PHP.

    
por 25.07.2014 / 21:58
0

como você pode ver, o processo do apache está usando 86% da memória:

  • ou o script é defeituoso e usa muita memória devido a um mau design,
  • ou você deve considerar algum upgrade do hw (adicionar memória).

se o uso da memória não estiver aumentando com o passar do tempo, adicionar memória resolveria o problema.

    
por 25.07.2014 / 23:23