Eu alugo um servidor Gentoo com a pilha LAMP usual (prefork Apache MPM) + suPHP.
Ocasionalmente, meu servidor fica sem memória e fica mais lento (responde aos pings, mas é praticamente impossível efetuar login, e os pressionamentos de tecla enviados pelo SSH podem levar minutos para serem ecoados, muito menos processados) . Muitas coisas do oom_killer nos logs do sistema também.
Isso é o que eu vejo em top
durante um desses momentos:
top - 16:45:05 up 22 days, 8:08, 3 users, load average: 104.26, 103.87, 93.3
Tasks: 393 total, 1 running, 388 sleeping, 0 stopped, 4 zombie
Cpu(s): 4.6%us, 9.3%sy, 0.8%ni, 0.0%id, 84.8%wa, 0.0%hi, 0.5%si, 0.0%st
Mem: 2042128k total, 1634392k used, 407736k free, 1792k buffers
Swap: 0k total, 0k used, 0k free, 27724k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
3125 apache 20 0 288m 105m 1368 S 0 5.3 0:01.00 apache2
2886 apache 20 0 285m 102m 1368 S 0 5.1 0:02.44 apache2
3048 apache 20 0 279m 96m 1192 D 0 4.8 0:01.58 apache2
3037 apache 20 0 278m 95m 1076 S 0 4.8 0:02.23 apache2
3014 apache 20 0 278m 94m 1204 D 0 4.8 0:01.81 apache2
2859 apache 20 0 274m 91m 1368 S 0 4.6 0:00.63 apache2
3016 apache 20 0 269m 86m 1368 S 0 4.3 0:01.49 apache2
2887 apache 20 0 269m 86m 1192 D 0 4.3 0:01.06 apache2
2753 apache 20 0 269m 86m 1368 S 0 4.3 0:01.09 apache2
3036 apache 20 0 266m 83m 1372 S 1 4.2 0:01.10 apache2
3006 apache 20 0 266m 83m 1368 S 0 4.2 0:01.98 apache2
3007 apache 20 0 265m 82m 1372 S 0 4.1 0:02.00 apache2
3064 apache 20 0 264m 81m 1368 S 0 4.1 0:00.57 apache2
3045 apache 20 0 263m 80m 1368 S 0 4.1 0:00.60 apache2
2888 apache 20 0 263m 79m 416 S 0 4.0 0:01.09 apache2
2862 apache 20 0 260m 77m 1368 S 1 3.9 0:01.95 apache2
2891 apache 20 0 259m 76m 1332 D 0 3.9 0:01.98 apache2
3046 apache 20 0 258m 75m 1080 S 0 3.8 0:01.20 apache2
2873 apache 20 0 255m 72m 1380 S 0 3.6 0:01.51 apache2
2987 apache 20 0 252m 69m 1368 S 0 3.5 0:01.04 apache2
2666 apache 20 0 250m 67m 1368 S 0 3.4 0:00.72 apache2
2903 apache 20 0 248m 66m 1368 S 0 3.3 0:01.02 apache2
3013 apache 20 0 247m 63m 416 S 0 3.2 0:01.02 apache2
Note que o PHP está rodando no modo CGI, então isso é apenas o Apache sem nenhum módulo PHP.
Francamente, não entendo por que outro motivo seria lento, a não ser que fosse executado com muita memória RAM, mas ele afirma ter 400 MB de RAM livre. "84,8% wa" também indica que o sistema está aguardando operações de E / S (paginação?).
Coisas que tentei:
Por enquanto, reduzi MaxClients
para 25, mas agora as solicitações de página levam vários segundos para serem processadas, e algumas crianças com o FlashGet teoricamente podem entupir todos os processos do Apache e tornar todos os sites inacessíveis: /
Perguntas:
-
Alguém pode sugerir alguns ajustes na configuração do Apache que poderiam melhorar radicalmente minha situação?
-
É possível dizer ao Linux para não trocar / sair da página sshd, bash e todo o resto requerido para eu ssh in e matar processos de fuga?
-
Se a resposta à pergunta acima for "não", alguém explique-me como é que hoje em dia os sistemas operacionais modernos são terrivelmente falhos. Soa como falha épica no design do SO para mim: (