Проблема с производительностью в весенней загрузке api rest webservice - PullRequest
0 голосов
/ 09 июля 2020

В нашей организации мы начали интеграцию через веб-службу с api rest, но у нас есть редкая проблема с производительностью.

Данные: У нас есть виртуальная машина (VMWare) с 4 ядрами / 8 ГБ оперативной памяти. достаточное удаленное хранилище. Сервер Ubuntu 18.04 openjdk 11.0.7 2020-04-14 JAVA_OPTS = '- D java .awt.headless = true -Xms512m -Xmx2048m -XX: MaxPermSize = 256m'

mysql: см. 5.7. 30-0ubuntu0.18.04.1 (он работает локально, но приложение подключается по имени хоста).

APP: Spring boot 2.1.3 (tomcat и данные Spring jpa и hikari и hibernate) Все параметры по умолчанию.

top - 15:09:15 up 2 days, 14:21, 1 user, load average: 0.03, 0.01, 0.00
Tasks: 189 total, 1 running, 100 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.3 us, 0.2 sy, 0.0 ni, 99.5 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 8168140 total, 148740 free, 7590936 used, 428464 buff/cache
KiB Swap: 2097148 total, 1352428 free, 744720 used.   332048 avail Mem
  PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
 2383 app 20 0 41920 3944 3220 R 0.7 0.0 0:00.53 top
 2698 app 20 0 5835612 402424 15312 S 0.7 4.9 23:13.92 java
 1786 mysql 20 0 2680528 321892 8108 S 0.3 3.9 20:38.32 mysqld
 2677 app 20 0 5850152 441440 15824 S 0.3 5.4 28:01.41 java <------
 2769 app 20 0 5868308 977.2m 16868 S 0.3 12.3 49:25.72 java
ps -eaf | grep java
app 2677 2676 0 Jul07 ? 00:28:01 java -Dserver.port=4560 -jar app-ws-1.0.0-SNAPSHOT.jar <------
app 2698 2696 0 Jul07 ? 00:23:14 java -Dserver.port=4561 -jar app-ws-1.0.0-SNAPSHOT.jar
app 2769 2768 1 Jul07 ? 00:49:26 java -jar app-gui-1.0.0-SNAPSHOT.jar

У нас есть 2 веб-сервиса, один из которых работает (2677), а другой находится в стадии тестирования (2698), и веб-приложение (2768).

У нас проблема с первым один. При обработке вызовов первый занимает> 30 с, вызывая тайм-аут в вызывающей системе, но следующие вызовы обрабатываются нормально <5 с. </p>

Количество вызовов минимальное, 10 максимальное. в день и никогда не одновременно. Тайм-аут также может возникнуть, если несколько часов без звонков (> 5 часов).

Мы проверили код, мы проверили WMware / Ubuntu (варианты приостановки) и ничего не увидели в мониторинге.

Нам сказали, что это могут быть проблемы с JVM и G C, но я лично мало что понимаю и ничего не видел с анализатором памяти.

Позже мы реализовали в самом приложении фиктивный вызов (localhost) каждые 10 минут для «разогрева машины», но даже в этом случае первый вызов все равно занимает> 30 секунд, а остальные - нет. Фиктивный вызов отвечает только нормально.

Мы не знаем, в чем может быть причина, и мы не знаем, как отказаться от опций, поскольку это продуктивная среда, и она не допускает многих изменений.

...