У меня есть метод веб-сервиса JAXWS, который имеет 2 миллиона звонков в день. Это развернуто на wildfly. Длительность этих вызовов очень важна с точностью до миллисекунды.
Теперь у меня есть продолжительность, рассчитанная по файлам журнала. Я вычитаю время окончания и начала запроса, но оно может отличаться от реального времени обработки запроса.
12:00:00,100 INFO [com.myapp] (default task-19) Request:mymethod started, id=25
12:00:00,150 INFO [com.myapp] (default task-19) Request:mymethod ended, id=25
Когда мы позвонили нашим, мы увидели, что в некоторых случаях продолжительность, рассчитанная по журналам, отличается от продолжительности, рассчитанной службой вызывающего абонента (звонки были сделаны с одной и той же дикой бабочки). Для 10000 вызовов средняя разница составляла 2 мс, но для 25 операций разница составляла около 100 мс.
public void myMethod() {
long startTime = System.nanoTime();
/* some code here */
long endTime = System.nanoTime();
lgg.info("myMethod ended, duration=" + endTime - startTime );
}
Это будет более точная длительность, но мне нужна точная обработка операций полный рабочий день. Со всеми запросами на сериализацию и т. Д.
Как рассчитать реальную продолжительность работы веб-службы? Время между получением вызова на моем сервере и ответным вызовом с сервера. (без сетевого времени)