При тестировании моего веб-приложения под нагрузкой я получил следующий отрывок top
под Linux:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
3964 nobody 20 0 4965m 622m 6048 S 8.5 11.0 6:02.49 java
1985 mysql 20 0 294m 125m 3804 S 2.1 2.2 0:05.39 /usr/sbin/mysqld
Мне нужно объяснение столбца %CPU
Java. Насколько я понимаю, во время веб-запроса один из потоков java
выполняет какую-то чистую логику Java, потребляя часть процессорного времени (пусть это будет 5 мс). Затем он подключается к базе данных через JDBC, отправляет какой-то sql-запрос и ждет, скажем, 10 мс ответа. Эти 10 мс, очевидно, учитываются как /usr/sbin/mysqld
использования ЦП. Затем поток java
возобновляет свою работу и завершается, потребляя еще 20 мс и составляя общее время выполнения 5+10+20=30 мс.
И вопрос новичка: не думаете ли вы, что эти связанные с базой данных 10 мс учитываются дважды: один раз как поток Java, ожидающий обработки запроса базой данных, а второй раз как само использование ЦП базы данных? Что я тут не понимаю?