php-fpm: carga de servidor muito alta

1

Desde hoje meu servidor web (nginx + php-fpm + mysql em um VPS) é muito lento.

htop diz:

 1  [|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||100.0%]     Tasks: 63 total, 13 running
  2  [|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||100.0%]     Load average: 11.67 10.95 6.95
  3  [|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||100.0%]     Uptime: 00:18:40
  4  [|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||100.0%]
  5  [|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||100.0%]
  6  [|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||100.0%]
  Mem[|||||||||||                                                137/1280MB]
  Swp[                                                                0/0MB]

  PID USER     PRI  NI  VIRT   RES   SHR S CPU% MEM%   TIME+  Command
 6802 www       20   0 76232 12320  5716 R 27.0  0.9  0:06.48 php-fpm: pool www
 7048 www       20   0 75200 12136  5700 R 52.0  0.9  0:03.64 php-fpm: pool www
 6699 www       20   0 74176 11124  5700 R 27.0  0.8  0:07.36 php-fpm: pool www
 7029 www       20   0 73668 10380  5676 R 42.0  0.8  0:03.52 php-fpm: pool www
 6995 www       20   0 76228 12456  5644 R 42.0  1.0  0:03.98 php-fpm: pool www
 6858 www       20   0 74172 10684  5620 R 35.0  0.8  0:05.52 php-fpm: pool www
 6998 www       20   0 75200 12072  5620 R 37.0  0.9  0:03.95 php-fpm: pool www
 7098 www       20   0 75200 12052  5616 R 42.0  0.9  0:02.33 php-fpm: pool www
 7093 www       20   0 76228 12496  5612 R 37.0  1.0  0:03.02 php-fpm: pool www
 7226 www       20   0 74692 11080  5588 R 32.0  0.8  0:00.66 php-fpm: pool www

CPU: (modelo cat / proc / cpuinfo | grep)

model           : 44
model name      : Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz
model           : 44
model name      : Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz
model           : 44
model name      : Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz
model           : 44
model name      : Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz
model           : 44
model name      : Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz
model           : 44
model name      : Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz

Eu acho que uma carga de 10 e 100% de uso da CPU não é normal ... Como posso corrigir isso?

Editar: Eu acho que poderia ser por causa do mysql. Aqui está a lista de processos do PhpMyAdmin:

Show Full Queries   ID  User    Host    Database    Command     Time    Status  SQL query
Kill    3567    bs  localhost   bs  Sleep   2   ---     ---
Kill    3575    bs  localhost   bs  Sleep   1   ---     ---
Kill    3576    bs  localhost   bs  Sleep   1   ---     ---
Kill    3578    bs  localhost   bs  Sleep   0   ---     ---
Kill    3579    bs  localhost   bs  Sleep   0   ---     ---
Kill    3580    bs  localhost   bs  Query   0   Writing to net  SELECT count( id )
FROM messages
WHERE uid_to =345
AND unread =1
Kill    3581    bs  localhost   bs  Sleep   0   ---     ---
Kill    3582    unauthenticated user    connecting host     None    Connect         login   ---
Kill    3583    phpmyadmin  localhost   None    Sleep   0   ---     ---
Kill    3584    root    localhost   mysql   Query   0   ---     SHOW PROCESSLIST

Como você pode ver, há apenas um thread usado, mas o Google Analytics diz:

Right now
429
active visitors on site 

Eu me conecto ao Mysql por PDO. Como posso obter mais tópicos?

    
por Derp Derpington 09.04.2012 / 23:05

2 respostas

1

Aqui está um link para o perfil do seu código: StackOverflow: a maneira mais simples de criar o perfil de um script PHP

    
por 09.04.2012 / 23:20
0

A carga não deve ser maior que a quantidade de núcleos. Atualmente você tem 6, uma carga maior que isso produzirá respostas lentas.

Parece que seus scripts PHP estão consumindo todos os recursos da CPU. A criação de perfis seria uma boa ideia.

Você também pode aumentar o processamento do PHP com algum armazenamento em cache. Eu recomendaria tentar o eaccelerator, que deve ser fácil de ativar, e também dar uma olhada nas opções de cache do nginx.

Outro bom perfilador que usamos foi o xhprof: link , mas requer um pouco mais de leitura para usar.

boa sorte

    
por 09.04.2012 / 23:48