Estou perguntando aqui porque não consigo encontrar muita informação sobre isso...
Qual é o principal uso da configuração para "Encadeamentos de E/S" e "Encadeamentos máximos de tarefas" na configuração de trabalhadores do subsistema de E/S?
Em todos os lugares que leio, as pessoas estão dizendo que os "threads de Io" especificam o número de solicitações simultâneas que o servidor pode manipular e que o "máximo de threads de tarefas" é o número máximo de solicitações simultâneas que o servidor pode manipular.
Então, isso significa que se eu definir os "threads Io" para 50, isso significa que o JBoss pode lidar com 50 solicitações do navegador simultaneamente?
Tenho um site onde o requisito é poder atender 1500 usuários simultâneos em um prazo de 15 segundos. E cada solicitação não deve levar mais de 3 segundos para ser concluída. Isso inclui baixar o html, js, css e todos os arquivos jpg que o navegador precisa.
Isso significa que preciso definir os "threads Io" para um número mais alto, como 100, e os "threads máximos da tarefa" para 150?
Eu tentei configurar "Task max threads" para 150 e até 250, e parece que meu site fica mais lento.
Alguém pode explicar como funcionam essas 2 configurações?
Normalmente, você não precisa ter um thread de E/S separado para cada conexão de usuário. Você pode precisar de threads de tarefas com tantos usuários simultâneos a qualquer momento para evitar lentidão. Você pode experimentar os padrões e ver como eles funcionam para seu aplicativo. Veja estes artigos de suporte:
Observe que o EAP 7.2 possui configuração de threads de núcleo adicional para eficiência.
Atualização: Dado que você deseja instruções mais abrangentes, consulte o guia completo de ajuste de desempenho do Red Hat Enterprise Application Platform .
Atualização 2: como o EAP 7 está usando o Undertow, para entender o que o IO e o thread de trabalho fazem, os documentos do undertow devem fornecer algumas dicas:
@IWantSimpleLife como @akostadinov se refere à documentação descreve o design e como o trabalho de "bloqueio de E/S" é separado do trabalho do manipulador. Acho que estou correto em dizer para responder à sua pergunta que os "threads de IO" e "Task max threads" não estão diretamente relacionados. Digo isso porque eles se referem a dois grupos de threads separados. O primeiro é "Worker IO threads" que descreve o grupo inicial de manipuladores de IO relacionados, "ler" e "gravar" que ouvem os canais e eventos do nio. Idealmente, apenas 1 thread no pool de E/S e nunca deve executar o processamento de bloqueio (rede ou arquivo). O outro grupo é geralmente chamado de grupo "Worker Task Threads". Que é dedicado a executar o trabalho de bloqueio.