Encontrando a causa raiz das retransmissões TCP

Encontrando a causa raiz das retransmissões TCP

Temos um produto baseado em uma aplicação de terceiros, rodando em um servidor Apache conectado a um banco de dados Firebird (v2.5.3).

Infelizmente, chegamos a um ponto em que o tempo limite é atingido quando os usuários tentam fazer solicitações ao servidor. Ao abrir a guia devtools->network, vemos que os pacotes são descartados.

Para depurar esse problema, registramos o tráfego wireshark no servidor e vemos muitos eventos de retransmissão. Alguns dos pacotes http foram passados ​​corretamente, mas alguns estão recebendo essas retransmissões e suspeito que isso esteja causando o tempo limite.

A CPU do servidor é alta (50-100%), principalmente por causa do banco de dados firebird. O provedor de nuvem onde o servidor está hospedado não possui discos SSD e estamos cientes de que isso pode ser um problema.

Uma coisa estranha é que na gravação do wireshark não vemos as solicitações http dos usuários. É assim que procura os pacotes recebidos:

insira a descrição da imagem aqui

Quando tentei capturar solicitações de um IP específico que falhou, obtive apenas retransmissão TCP (portanto, não vejo a solicitação em si). Não tenho certeza se é significativo, mas a conexão está na porta 443. Este é um exemplo de como fica:

insira a descrição da imagem aqui

  1. É possível que, como o banco de dados firebird esteja ocupado/a CPU esteja alta, os pacotes http sejam descartados em um nível mais baixo (após 4-5 segundos), mesmo sem registrar a solicitação http no wireshark?

  2. Como não podemos mudar os discos para SSD, você acha que atualizar a CPU pode ajudar com esse problema?

  3. Existe alguma configuração do Apache ou Firebird que possa melhorar o desempenho?

Alguma outra informação que eu possa tentar reunir para obter mais informações sobre o problema?

informação relacionada