Que tal criar um ramdisk e colocar conteúdo lá? Você pode executar o rsync para fazer backup dos dados no disco físico e evitar a perda de dados.
Eu tenho um servidor web nginx de grande sucesso no CentOS que fornece grande conteúdo estático. quando o número de conexões simultâneas é baixo, o servidor pode facilmente fornecer até 4 Gb de tráfego, mas quando o número de conexões simultâneas aumenta, o desempenho do servidor cai drasticamente para 400 Mb com 100% de utilização de I / O. Eu tentei cache SSD, montagem de sistema de arquivos com noatime, alterando I / O scheduler, aumentar a memória do servidor de até 256GB, configuração diferente em nginx como aio, enviar arquivo, mas sem sucesso. Existe alguma outra configuração para melhorar seu desempenho?
Que tal criar um ramdisk e colocar conteúdo lá? Você pode executar o rsync para fazer backup dos dados no disco físico e evitar a perda de dados.
Suponho que, quando você está atendendo a um número baixo de clientes, o servidor pode armazenar em cache a maioria dos dados necessários na RAM, por isso está servindo quase exclusivamente da RAM.
Mas quando mais e mais clientes são atendidos, a maioria dos dados não se ajusta à sua RAM e o seu servidor precisa lê-los a partir do seu subsistema de ES. O cache é muito menos usado, já que a maioria dos dados necessários não está lá. E os acionamentos mecânicos precisariam procurar muito.
Eu não sei quantos dados você tem e como está o seu IO configurado, mas acho que os drives mecânicos não são suficientes. Também qualquer cache SSD menor que os dados que você usa.
Você pode usar vários SSDs com alto desempenho de leitura aleatória no RAID1. Ou talvez você possa "fragmentar" seus dados - em vez de usar um sistema de arquivos enorme, divida seus arquivos para um grande número de pequenos discos SSD baseados, por exemplo, em crc32(filepath) % 8
para 8 SSDs.
Tags nginx io linux tuning perfomance