Qual é a melhor configuração do sysctl.conf para um servidor de streaming de conteúdo de alta carga e extremamente ocupado? O servidor busca o conteúdo de servidores remotos como amazon, s3, etc., em seguida, usa php para transmitir dinamicamente o conteúdo para o usuário sem salvá-lo no disco rígido. O php usa CURL para buscar o arquivo, depois usa flush () para transmiti-lo simultaneamente, para que não haja muito trabalho no disco rígido ... apenas rede e largura de banda.
O servidor é quad core xeon, com NIC full duplex de 1 Gbit, 8 GB de RAM e 500 GB x 2 em RAID. O uso de memória do servidor e a carga da CPU são bem baixos.
Estamos executando o debian lenny e o lighttpd2 nele (sim, eu sei que ainda não foi lançado :-)) com o php 5.3.6 e o php fastcgi com spawn-fcgi bind em 4 soquetes unix diferentes com 20 filhos cada. As solicitações máximas de fcgi são 20, com o módulo mod_balancer na configuração lighttpd2 para equilibrar as solicitações fastcgi entre esses 4 soquetes na configuração SQF (primeira fila curta).
Nossos servidores usam muita largura de banda, ou seja, a conexão de rede está sempre ocupada. Logo após 100 a 200 conexões paralelas, o servidor começa a ficar lento e, eventualmente, deixa de responder, começa a gerar erros de tempo limite de conexão. Quando tivemos o cpanel, nunca tivemos erros de tempo limite, por isso não pode ser um problema de script. Deve ser um problema de configuração de rede.
configuração lighttpd2: processos de trabalho = 8, manter pedidos ativos é 32, manter tempo limite inativo ativo é 10 segundos e o número máximo de conexões é 8192.
Nosso conteúdo atual do sysctl.conf é:
net.ipv4.tcp_fin_timeout = 1
net.ipv4.tcp_tw_recycle = 1
# Increase maximum amount of memory allocated to shm
kernel.shmmax = 1073741824
# This will increase the amount of memory available for socket input/output queues
net.ipv4.tcp_rmem = 4096 25165824 25165824
net.core.rmem_max = 25165824
net.core.rmem_default = 25165824
net.ipv4.tcp_wmem = 4096 65536 25165824
net.core.wmem_max = 25165824
net.core.wmem_default = 65536
net.core.optmem_max = 25165824
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_orphans = 262144
net.ipv4.tcp_max_syn_backlog = 262144
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 2
# you shouldn't be using conntrack on a heavily loaded server anyway, but these are
# suitably high for our uses, insuring that if conntrack gets turned on, the box doesn't die
# net.ipv4.netfilter.ip_conntrack_max = 1048576
# net.nf_conntrack_max = 1048576
# For Large File Hosting Servers
net.core.wmem_max = 1048576
net.ipv4.tcp_wmem = 4096 87380 524288
sysctls
. Verifique se há processos bloqueados, falta de memória etc. strace
os processos e veja por que / onde eles estão pendurados.