Temos um aplicativo customizado interno, onde um grande conjunto de clientes Windows está acessando um serviço de criação de imagens no IBM i (AS/400) executando V5R4. Ocasionalmente, sob carga pesada da CPU, os clientes não conseguem estabelecer uma conexão TCP/IP. Como o IBM i é um pouco estranho para mim, não tive outra escolha senão começar a traçar paralelos com outros sistemas operacionais, principalmente *NIX e Windows. Ambos possuem conceito e utilização de portas efêmeras, nas quais é estabelecida a conexão de volta ao cliente. No outro sistema operacional, o tamanho do pool de conexões varia, de aproximadamente quatro mil a sessenta e quatro mil. Fiquei pensando, depois de lereste manual, se o IBM i também suportar configuração de intervalo de portas efêmeras ou se estiver usando todo o conjunto de IPs de 1024 a 65535 por padrão?
Responder1
Pelo que eu sei, o IBM i e seus antecessores usam todo o intervalo de portas de 1024 a 65535.
O serviço de imagem também é escrito internamente? Ou é um aplicativo de fornecedor?
Muitos aplicativos nativos do IBM i usam processos separados (conhecidos como tarefas) em vez de um processo único multiencadeado para manipular a atividade do servidor cliente. Como iniciar um novo processo é relativamente caro, a prática padrão é ter um conjunto de tarefas "pré-iniciadas" disponíveis aguardando para processar solicitações. No entanto, se muitas solicitações de conexão chegarem ao mesmo tempo, é possível que a conexão seja atrasada enquanto novos trabalhos são iniciados. Também é possível limitar o número total de conexões em uso por vez.
Por exemplo, vejamos o trabalho QZDASOINIT que lida com solicitações ODBC/JDBC/OLEDB.
Este comando:
DSPACTPJ SBS(QUSRWRK) PGM(QZDASOINIT)
mostrará a contagem atual, média e de pico de tarefas QZDASOINIT em execução e em uso:
Prestart jobs:
Current number . . .
Average number . . .
Peak number . . . .
Prestart jobs in use:
Current number . . .
Average number . . .
Peak number . . . .
A paginação para baixo mostrará a segunda página de informações:
Program start requests:
Current number waiting . . . . . . . .
Average number waiting . . . . . . . .
Peak number waiting . . . . . . . . .
Average wait time . . . . . . . . . .
Number accepted . . . . . . . . . . .
Number rejected . . . . . . . . . . .
Os trabalhos de pré-início são controlados através das "entradas de trabalho de pré-início" atribuídas a um determinado subsistema. A sequência a seguir levará você ao "":
dspsbsd qusrwrk
10. Prestart job entries
5=Display details
Para minha entrada QZDASOINIT, tenho o seguinte
Initial number of jobs . . . . . . . . . . . . . : 1
Threshold . . . . . . . . . . . . . . . . . . . : 1
Additional number of jobs . . . . . . . . . . . : 2
Maximum number of jobs . . . . . . . . . . . . . : *NOMAX
Maximum number of uses . . . . . . . . . . . . . : 200
Wait for job . . . . . . . . . . . . . . . . . . : *YES
Para obter informações mais detalhadas, consulte a documentação doajustando entradas de trabalho de pré-início
Responder2
Não é o sistema operacional que usa portas efêmeras; é o aplicativo. O sistema operacional não é realmente o fator determinante nisso. Dito isto, @Charles tem uma boa resposta para tentar evitar que o servidor fique sobrecarregado ao tentar agendar novas solicitações recebidas.