Поиск основной причины повторных передач TCP

Поиск основной причины повторных передач TCP

У нас есть продукт, основанный на стороннем приложении, работающем на сервере Apache, подключенном к базе данных Firebird (v2.5.3).

К сожалению, мы дошли до точки, где мы получаем тайм-ауты, когда пользователи пытаются сделать запросы к серверу. При открытии вкладки devtools->network мы видим, что пакеты отбрасываются.

Для отладки этой проблемы мы записали трафик Wireshark на сервере, и мы видим много событий повторной передачи. Некоторые из http-пакетов проходят нормально, но некоторые получают эти повторные передачи, и я подозреваю, что это вызывает тайм-аут.

Загрузка cpu сервера высокая (50-100%), в основном из-за базы данных firebird. У облачного провайдера, где размещен сервер, нет SSD-дисков, и мы знаем, что это может быть проблемой.

Странно, что в записи Wireshark мы не видим http-запросов от пользователей. Вот как это выглядит для полученных пакетов:

введите описание изображения здесь

Когда я попытался поймать запросы с одного конкретного IP, которые не прошли, я получил только повторную передачу TCP (поэтому я не вижу сам запрос). Не уверен, имеет ли это значение, но соединение установлено на порту 443. Вот пример того, как это выглядит:

введите описание изображения здесь

  1. Возможно ли, что из-за того, что база данных Firebird занята/загрузка процессора высока, http-пакеты отбрасываются на более низкой скорости (через 4-5 секунд) даже без регистрации http-запроса в Wireshark?

  2. Поскольку мы не можем заменить диски на SSD, как вы думаете, может ли модернизация ЦП помочь решить эту проблему?

  3. Есть ли какая-либо конфигурация Apache или Firebird, которая могла бы улучшить производительность?

Какую еще информацию я могу попытаться собрать, чтобы получить больше информации о проблеме?

Связанный контент