Я использую симуляцию Gatling, которая объединяет HTTP-запросы с простыми пользовательскими действиями. Я вижу проблему, что иногда есть длинная (60 секунд) задержка между двумя последовательными действиями, которые должны быть выполнены мгновенным:Почему действие задерживается?
.exec(s => {
System.out.printf(/* logging time here */);
s
})
.exec(/* my custom action */)
и я вхожу метку время в Chainable.execute()
в моих пользовательских действиях. Это в основном работает, но некоторые исполнения задерживаются без какой-либо очевидной причины (и пользовательское действие терпит неудачу, поскольку оно должно быть выполнено менее чем через минуту после предыдущих действий).
Поскольку я новичок в актерах, есть ли способ отлаживать, где сообщение, чтобы продолжить действие следующего действия? Я думал, что последующее действие должно быть выполнено сразу же в одном потоке (поскольку ничто не должно блокировать это), но это, похоже, не так.
Система не застревает во время задержки; в то же время выполняются другие действия, и процессор не полностью используется.
Действие использует блокирующий код (вызовы внешнего API), но только после указанного журнала. Возможно ли, что действие не выполняется, поскольку выполняются другие экземпляры действия? –
Ответ только что отредактирован. –
Да, это помогло. Я думал, что, когда я вижу достаточно незанятых нитей akka, он должен работать, но, видимо, это сложнее. –