Производительность: com.sun.net.httpserver.HttpServer vs. jetty
Я работаю над веб-приложением Java, которое будет отправлять и получать строки JSON. JSON генерируется с помощью джерси и отображается в аннотации jaxb.
Само приложение не очень сложно, но должно работать в условиях интенсивного трафика. Я попробовал два подхода. Первый сервлет основан на jetty в качестве контейнера, а второй - на консольном приложении с оракулами класса HttpServer (используя jetty через "HttpServerFactory.create(..)").
Я протестировал обе версии с помощью apaches ab tool. Выполнение 10000 запросов на уровне параллелизма 100. К моему удивлению, консольному приложению требовалось значительно меньше времени для ответа и была более высокая скорость передачи. Я ожидал обратного результата.
Является ли простое консольное приложение лучшим решением с точки зрения производительности для небольших приложений? Благодарю.
1 ответ
Без дополнительной информации почти невозможно понять, почему ваше консольное приложение работало быстрее, чем сервер Jetty.
Я ожидал бы, что встроенный экземпляр Jetty может работать немного быстрее, чем сервлет Jetty, так как встроенный экземпляр Jetty сможет отбросить ненужные части API сервлета (в этом приложении) и тем самым снизить накладные расходы. Я не ожидал бы, что разница будет значительной.
Но: в небольшом тесте, подобном тому, который вы выполнили, я бы с большей вероятностью заподозрил, что проблема конфигурации (на сервере или в тесте) приводит к разнице в результатах.