Alguns motivos, além de um bug, para um site ficar lento: um é o aumento gradual de usuários, atividade do usuário, tamanho do banco de dados; o outro é o Discourse ficando cada vez maior à medida que se desenvolve, adiciona recursos, atualiza componentes de software.
Mas vale a pena ficar de olho na responsividade e se a máquina atual tem o tamanho certo.
(De passagem, noto que a máquina mais barata da Hetzner agora tem 4G de RAM, pelo mesmo preço da máquina mais barata agora indisponível que tem 2G de RAM. Um dos meus sites ainda está rodando no tamanho mais antigo de 2G.)
Para constar, como venho acompanhando o uso do meu site principal, já que ele foi migrado recentemente e o servidor é novo e recém-reiniciado, incluirei algumas descobertas. São muitos dados - sinta-se à vontade para não estudá-los!
O estado atual da máquina é
# uptime
13:55:23 up 4 days, 21:10, 1 user, load average: 0.07, 0.08, 0.02
# free
total used free shared buff/cache available
Mem: 3905344 1638012 98492 481864 2168840 1595004
Swap: 4194288 252928 3941360
Noto que ao fazer login a máquina anuncia
Memory usage: 45%
que reflete mais de perto a coluna ‘used’, não a coluna ‘free’.
Tenho tirado leituras periódicas dos seguintes comandos
date
uptime
free
ps aux|sort -n +5|tail
vmstat 5 5
e o que vi é que a memória ‘free’ foi trocada por memória ‘buffer’ e ‘cache’, sem que o footprint de RAM dos processos (RSS) aumentasse. Acho que isso mostra por que não é bom rastrear a memória ‘free’, mesmo que alguns provedores de hospedagem facilitem isso. Acho que também mostra, neste caso, nenhum vazamento de memória.
Pouco depois de reiniciar, vejo isto:
# free
total used free shared buff/cache available
Mem: 3905344 1560508 996400 179712 1348436 1974692
Swap: 4194288 0 4194288
e não muito depois
# ps aux|sort -n +5|tail
...
1000 1688 0.1 6.5 1006548 256428 ? Sl 16:44 0:10 unicorn master -E production -c config/unicorn.conf.rb
1000 2189 0.1 8.5 5657760 333248 ? Sl 16:45 0:06 unicorn worker[3] -E production -c config/unicorn.conf.rb
1000 2113 0.1 8.5 5656608 334352 ? Sl 16:45 0:07 unicorn worker[2] -E production -c config/unicorn.conf.rb
1000 2044 0.4 8.7 6052196 342380 ? Sl 16:44 0:23 unicorn worker[1] -E production -c config/unicorn.conf.rb
1000 2006 1.7 9.0 5628640 352492 ? Sl 16:44 1:33 unicorn worker[0] -E production -c config/unicorn.conf.rb
1000 1971 3.1 11.1 6033652 435388 ? SNl 16:44 2:54 sidekiq 6.5.12 discourse [0 of 5 busy]
# vmstat 5 5
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----\n r b swpd free buff cache si so bi bo in cs us sy id wa st
...
0 0 0 866112 314288 1083816 0 0 32 28 484 621 4 1 95 0 0
Você vê que sidekiq (435 MByte) e unicorns (330-350 cada) são os maiores processos.
Com o tempo, a RAM livre e depois o uso de RAM (RSS) do sidekiq diminuem, presumivelmente devido ao page out, sem efeitos indesejados - a máquina não mostra nenhuma atividade de paginação. Em favor de um aumento no espaço de buffer e cache, eu acho.
# vmstat 5 5
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----\n r b swpd free buff cache si so bi bo in cs us sy id wa st
...
0 0 0 679764 326988 1190840 0 0 0 11 285 396 1 1 98 0 0
Cerca de 14 horas depois:
# uptime
10:12:06 up 17:27, 1 user, load average: 0.04, 0.02, 0.00
# ps aux|sort -n +5|tail
...
1000 2006 1.2 9.6 5647908 377424 ? Sl Sep05 12:42 unicorn worker[0] -E production -c config/unicorn.conf.rb
1000 1971 1.8 11.3 6431988 444184 ? SNl Sep05 18:51 sidekiq 6.5.12 discourse [0 of 5 busy]
# vmstat 5 5
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----\n r b swpd free buff cache si so bi bo in cs us sy id wa st
...
0 0 2048 199972 342480 1576156 0 0 0 17 361 511 2 2 96 0 0
Mais tarde…
# uptime
19:52:00 up 1 day, 3:07, 1 user, load average: 0.02, 0.06, 0.01
# ps aux|sort -n +5|tail
...
1000 2006 1.2 9.8 5654308 382944 ? Sl Sep05 20:44 unicorn worker[0] -E production -c config/unicorn.conf.rb
1000 1971 1.5 11.1 6431668 436340 ? SNl Sep05 25:04 sidekiq 6.5.12 discourse [0 of 5 busy]
# vmstat 5 5
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----\n r b swpd free buff cache si so bi bo in cs us sy id wa st
...
0 0 2304 103356 301632 1690136 0 0 0 10 360 511 1 1 98 0 0
Mais tarde…
# uptime
12:13:09 up 1 day, 19:28, 2 users, load average: 0.05, 0.06, 0.01
# ps aux|sort -n +5|tail
...
1000 2006 1.2 9.1 5654820 358612 ? Sl Sep05 31:47 unicorn worker[0] -E production -c config/unicorn.conf.rb
1000 1971 1.3 10.0 6431668 393584 ? SNl Sep05 35:08 sidekiq 6.5.12 discourse [0 of 5 busy]
# vmstat 5 5
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----\n r b swpd free buff cache si so bi bo in cs us sy id wa st
...
0 0 284416 281596 77904 1908528 0 0 0 38 315 450 1 1 98 0 0
Mais tarde
# uptime
13:26:42 up 2 days, 20:42, 1 user, load average: 0.20, 0.06, 0.02
# ps aux|sort -n +5|tail
...
1000 2006 1.2 9.3 5789072 365720 ? Sl Sep05 51:54 unicorn worker[0] -E production -c config/unicorn.conf.rb
1000 1971 1.2 10.0 6433332 393472 ? SNl Sep05 50:44 sidekiq 6.5.12 discourse [0 of 5 busy]
# vmstat 5 5
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----\n r b swpd free buff cache si so bi bo in cs us sy id wa st
...
0 0 242944 82016 95188 2082180 0 0 0 131 332 488 1 1 98 0 0
Mais tarde
# uptime
09:21:33 up 3 days, 16:36, 1 user, load average: 0.13, 0.10, 0.03
# free
total used free shared buff/cache available
Mem: 3905344 1618936 323032 476664 1963376 1619208
Swap: 4194288 250112 3944176
# ps aux|sort -n +5|tail
...
1000 2006 1.2 9.3 5789200 363572 ? Sl Sep05 67:02 unicorn worker[0] -E production -c config/unicorn.conf.rb
1000 1971 1.1 9.6 6433652 377472 ? SNl Sep05 63:14 sidekiq 6.5.12 discourse [0 of 5 busy]
# vmstat 5 5
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----\n r b swpd free buff cache si so bi bo in cs us sy id wa st
...
0 0 250112 321888 56052 1906672 0 0 2 13 293 420 1 0 99 0 0
Mais tarde
# uptime
13:55:23 up 4 days, 21:10, 1 user, load average: 0.07, 0.08, 0.02
# free
total used free shared buff/cache available
Mem: 3905344 1638012 98492 481864 2168840 1595004
Swap: 4194288 252928 3941360
# ps aux|sort -n +5|tail
...
1000 1971 1.1 9.5 6434676 371648 ? SNl Sep05 80:49 sidekiq 6.5.12 discourse [0 of 5 busy]
1000 2006 1.2 9.5 5658468 373404 ? Sl Sep05 88:44 unicorn worker[0] -E production -c config/unicorn.conf.rb
# vmstat 5 5
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----\n r b swpd free buff cache si so bi bo in cs us sy id wa st
...
1 0 252928 101040 86736 2082372 0 0 0 10 333 482 1 0 99 0 0