600+ memcache req / s problemas - ajuda!

1

Estou executando o memcached no meu servidor e quando ele atinge 600 + req / s ele se torna instável e causa uma grande carga de problemas. Aparece quando a taxa de requisição fica tão alta, meus aplicativos PHP em horários aleatórios não conseguem se conectar ao servidor memcache, causando lentidão no tempo de carregamento, o que faz o nginx e o php-fpm enlouquecerem e eu recebo um monte de 104: Connection reset by peer erros nos meus registros nginx.

Gostaria de salientar que no meu servidor memcache eu tenho 'objetos quentes' - objetos que às vezes recebem 90% dos pedidos do memcache. Eu também notei que quando muitas solicitações atingem um único objeto, ele adiciona um pouco mais de tempo de carregamento à página geral (quando consegue carregar).

Eu apreciaria muito qualquer ajuda para esse problema. Muito obrigado!

    
por Aco 21.07.2011 / 06:56

1 resposta

2

Isso realmente parece um problema com a camada de rede. Quando você se deparar com este problema, você pode pegar a saída do netstat -ano e ver quantas conexões existem em determinados buckets? Se você vê uma tonelada de conexões que não estão em ESTABELECIDO, mas sim em TIME_WAIT / FIN_WAIT, etc, você provavelmente precisará ativar o tempo de reutilização e reciclagem de espera. De:

link

TCP_TW_REUSE This allows reusing sockets in TIME_WAIT state for new connections when it is safe from protocol viewpoint. Default value is 0 (disabled). It is generally a safer alternative to tcp_tw_recycle

echo 1 > /proc/sys/net/ipv4/tcp_tw_reuse (boolean, default: 0)

Note: The tcp_tw_reuse setting is particularly useful in environments where numerous short connections are open and left in TIME_WAIT state, such as web servers. Reusing the sockets can be very effective in reducing server load.

    
por 28.08.2011 / 05:53