2015-03-26 2 views
2

У меня странное поведение с сервером-реслитом, и я не могу понять, что происходит!java + restlet = странное поведение производительности

У меня есть служба, которая выполняет базовую конкатенацию строк с данными из базы данных mySQL.

Мой код:

private static void testWS() throws Exception { 
Client client = new Client(Protocol.HTTP); 

for (String id : listIds) { 
    long startTime = System.nanoTime(); 
    Request request = new Request(Method.GET, REST_SERVICE + id); 
    Response response = client.handle(request); 
    long endTime = System.nanoTime(); 
    System.out.println("Duration of WS call:" + ((endTime - startTime)/1000000) + " ms"); 
    } 
} 

Когда я запускаю эту партию у меня есть что-то вроде этого:

Duration of WS call:128 ms 
Duration of WS call:1015 ms 
Duration of WS call:1069 ms 

Но когда этот же партии работает на двух разных компьютерах, в то же время, у меня есть как для пакетного что-то вроде этого:

Duration of WS call:90 ms 
Duration of WS call:92 ms 
Duration of WS call:81 ms 

Отклик я s 10 x быстрее, когда две программы запрашивают сервер вместо одного!

Реальный пример: из той же партии, работающие на двух разных компьютерах:

+-----------------------------+----------------------------+ 
|   Batch 1   |   Batch 2   | 
+-----------------------------+----------------------------+ 
| Duration of WS call:128 ms |       | Start of Batch1 
| Duration of WS call:1015 ms |       | 
| Duration of WS call:1010 ms |       | 
| Duration of WS call:1012 ms |       | 
| Duration of WS call:1031 ms |       | 
| Duration of WS call:1036 ms |       | 
| Duration of WS call:834 ms |       | 
| Duration of WS call:90 ms | Duration of WS call:75 ms | Start of Batch2 
| Duration of WS call:92 ms | Duration of WS call:82 ms | 
| Duration of WS call:81 ms | Duration of WS call:85 ms | 
| Duration of WS call:89 ms | Duration of WS call:82 ms | 
| Duration of WS call:146 ms | Duration of WS call:90 ms | 
| Duration of WS call:92 ms | Duration of WS call:85 ms | 
| Duration of WS call:85 ms | Duration of WS call:76 ms | 
| Duration of WS call:28 ms | Duration of WS call:96 ms | 
| Duration of WS call:165 ms | Duration of WS call:88 ms | 
| Duration of WS call:78 ms | Duration of WS call:84 ms | 
| Duration of WS call:85 ms | Duration of WS call:63 ms | 
| Duration of WS call:103 ms | Duration of WS call:37 ms | 
| Duration of WS call:129 ms | Duration of WS call:74 ms | 
| Duration of WS call:73 ms | Duration of WS call:140 ms | Batch2 manually stopped 
| Duration of WS call:1058 ms |       | 
| Duration of WS call:1016 ms |       | 
| Duration of WS call:1006 ms |       | 
| Duration of WS call:1020 ms |       | 
| Duration of WS call:1055 ms |       | 
| Duration of WS call:958 ms |       | 
| Duration of WS call:1003 ms |       | End of Batch1 
+-----------------------------+----------------------------+ 

Есть ли объяснение этому?

Заранее спасибо.

+0

Трудно ответить вам так :-) Я думаю, что вы должны включить трассировки, чтобы более точно увидеть, на какой части вашего серверного приложения есть разница (рестарт, обработка бизнеса, драйвер mysql, база данных). На уровне пульта, см. Эту ссылку для получения дополнительной информации: http://restlet.com/technical-resources/restlet-framework/guide/2.3/editions/jse/logging. Надеюсь, это поможет вам. –

+0

Я нашел! Я использовал HTTP-сервер по умолчанию в org.restlet.jar, который, кажется, производит странные результаты. Поскольку я переключаюсь на Jetty, все работает как ожидалось (среднее время отклика 50-70 мс). – elquenosabia

+1

Отлично! Я рад это слышать! Для информации, HTTP-сервер по умолчанию для Restlet не подходит для производства ... Он даже был удален из org.restlet в версии 2.3. Я настоятельно рекомендую вам использовать расширение 'org.restlet.ext.jetty' или вставить приложение Restlet в контейнер сервлета с помощью' org.restlet.ext.servlet'. –

ответ

1

Я использовал HTTP-сервер по умолчанию в org.restlet.jar, который, кажется, создает странные результаты. Поскольку я переключаюсь на Jetty, все работает так, как ожидалось (среднее время отклика 50-70 мс)

Смежные вопросы