Низкая производительность страницы JSP / JavaScript над прокси-сервером - PullRequest
0 голосов
/ 24 января 2012

У меня есть следующая архитектура: страница JSP с клиентским кодом JavaScript, бэкэнд - это класс JAVA, который получает данные из базы данных Oracle.Все приложение работает на сервере WebLogic 10.

Функция таймера находится в файле RedbudTimer.js, и страница JSP запускает его так:

<script type="text/javascript" src="/common/gp/js/RedbudTimer.js"></script>

function TimerCallback()
{
    window.location.reload();
}

displayTimer('<%= deadLine.toString() %>', true);

, где deadLine - некоторое число.Файл JavaScript выглядит следующим образом:

Date.ONE_SECOND = 1000;
Date.ONE_MINUTE = Date.ONE_SECOND * 60;
Date.ONE_HOUR = Date.ONE_MINUTE * 60;
Date.ONE_DAY = Date.ONE_HOUR * 24;
Date.ONE_WEEK = Date.ONE_DAY * 7;

function TimeSpan(d, toDeadline) {
    this.time = d.getTime ? d.getTime() : Date.parse(d);
    this.toDeadline = toDeadline;
}

TimeSpan.prototype.valueOf = function () {
var val = this.time - new Date().getTime();
if (!this.toDeadline) val *= -1;
return val;
}

TimeSpan.prototype.toString = function () {
    var t = Math.abs(this.valueOf());
    var d = Math.floor (t / Date.ONE_DAY);
    var h = Math.floor ((t % Date.ONE_DAY) / Date.ONE_HOUR);
    var m = Math.floor ((t % Date.ONE_HOUR) / Date.ONE_MINUTE);
    var s = Math.floor ((t % Date.ONE_MINUTE) / Date.ONE_SECOND);
    var showDays = false;
    var display = '';

    if (showDays) {
       display = (this.valueOf() < 0 ? '-' : '') + [d, (h < 10 ? '0' : '') + h, (m < 10 ? '0' : '') + m, (s < 10 ? '0' : '') + s].join(':');
    }
    else {
   display = (this.valueOf() < 0 ? '-' : '') + [(h < 10 ? '0' : '') + h, (m < 10 ? '0' : '') + m, (s < 10 ? '0' : '') + s].join(':');
    }

    return display;
}


function displayTimer(time, toDeadline) {
    var ts = new TimeSpan(time, toDeadline);

    if (ts <= 0){
        setTimeout("TimerCallback()", 1000);
        clearInterval(intId);
    }
    else {
        document.getElementById('counter').innerText = ts.toString();
        var intId = setTimeout("displayTimer('" + time + "'," + toDeadline +")", 1000);
}

}

Как это работает, таймер считает от некоторого числа обратно до 0, а когда он достигает 0, он вызывает TimerCallback на странице JSP,Он отлично работает, когда запускается во внутренней сети сервера, на котором он развернут, но если к нему обращаются извне через прокси-сервер, он работает очень, очень медленно (5 минут для загрузки страницы).

Доступк приложению извне реализовано так:

  1. внешний доступ к приложению осуществляется через веб-сервер Apache на пограничном сервере
  2. запрос от внешнего пользователя принимается apache через HTTPS
  3. экспедитор в Apache отправляет запрос во внутреннюю сеть

Я озадачен этим.Есть идеи, почему это будет так медленно?

Ответы [ 2 ]

0 голосов
/ 27 января 2012

Хорошо, я понял. Я не уверен, если вам нужны все эти модули. Я предполагаю, что это модули, загруженные в веб-сервер Apache на пограничном сервере. Я бы посоветовал вам подойти как можно ниже, чтобы изолировать проблему.

  1. Получите доступ к образцу нединамической страницы (может быть простой статической HTML-страницей) и проверьте, отличается ли время, необходимое для загрузки этой страницы, при обращении к ней напрямую и через прокси-сервер (веб-сервер Apache на пограничном сервере)? Это позволит убедиться, что есть какие-либо проблемы с вашей динамической страницы как таковой.

  2. Создать и среду, в которой вы могли бы смоделировать эту ситуацию. Разместите веб-сервис apache, который действует как прокси на компьютере в сети, выполните остальные настройки, чтобы вы могли получить к нему доступ так же, как и с реальной конфигурацией прокси. Протестируйте свое приложение с этой конфигурацией.

  3. Если проблема связана с Apache (то есть виновником медлительности), проанализируйте все модули, которые он загружает.

  4. Проверьте, действительно ли вам нужны все эти модули или вы можете удалить некоторые из них.

0 голосов
/ 26 января 2012

@ Сантош,

это то, что вы ищете?

LoadModule access_module modules/mod_access.so
LoadModule actions_module modules/mod_actions.so
LoadModule alias_module modules/mod_alias.so
LoadModule asis_module modules/mod_asis.so
LoadModule auth_module modules/mod_auth.so
LoadModule auth_anon_module modules/mod_auth_anon.so
LoadModule auth_dbm_module modules/mod_auth_dbm.so
LoadModule auth_digest_module modules/mod_auth_digest.so
LoadModule autoindex_module modules/mod_autoindex.so
LoadModule cern_meta_module modules/mod_cern_meta.so
LoadModule cgi_module modules/mod_cgi.so
LoadModule dav_module modules/mod_dav.so
LoadModule dav_fs_module modules/mod_dav_fs.so
LoadModule dir_module modules/mod_dir.so
LoadModule env_module modules/mod_env.so
LoadModule expires_module modules/mod_expires.so
LoadModule file_cache_module modules/mod_file_cache.so
LoadModule headers_module modules/mod_headers.so
LoadModule imap_module modules/mod_imap.so
LoadModule include_module modules/mod_include.so
LoadModule info_module modules/mod_info.so
LoadModule isapi_module modules/mod_isapi.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule mime_module modules/mod_mime.so
LoadModule mime_magic_module modules/mod_mime_magic.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule negotiation_module modules/mod_negotiation.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule speling_module modules/mod_speling.so
LoadModule status_module modules/mod_status.so
LoadModule unique_id_module modules/mod_unique_id.so
LoadModule userdir_module modules/mod_userdir.so
LoadModule usertrack_module modules/mod_usertrack.so
LoadModule vhost_alias_module modules/mod_vhost_alias.so
LoadModule ssl_module modules/mod_ssl.so
LoadModule weblogic_module modules/mod_wl_20.so
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...