[Microsoft] [Драйвер SQLServer 2000 для JDBC] Время входа в систему истекло - PullRequest
0 голосов
/ 27 июня 2019

Существует устаревшее веб-приложение, созданное и работающее на Java 6 (1.6.0_21), развернутое на Apache tomcat 6.0.29 на виртуальной машине CentOS, которая подключается к двум базам данных - базе данных MySQL (локальной) и SQL Server 2000 база данных (удаленная). Все было хорошо в течение многих лет, пока только один день, определенный логин к SQL Server получает ошибку входа в систему по тайм-ауту. Раньше это было с перебоями, поскольку в действительности были периоды ожидания при входе в систему, но теперь он стал «постоянным» без изменений как в веб-приложении, так и на удаленном сервере базы данных.

Веб-приложение вызывает несколько хранимых процедур на SQL Server, используя следующие наборы кодов:

Connection con = null;
PreparedStatement stmt = null;
String query = "exec StoreProcedureGoesHere ?,?";
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
DriverManager.setLoginTimeout(60);

con = DriverManager.getConnection(
          "jdbc:microsoft:sqlserver://host:port;databaseName=myDB;",
          "user", "pass");

if (con != null) {
    stmt = con.prepareStatement(query);
    ...set parameters of stmt
    stmt.close();
    con.close();
}

Допустим, SP1 (хранимая процедура1) вызывается и успешно выполняется. Однако для части соединения SP2 я уже получаю [Microsoft][SQLServer 2000 Driver for JDBC]Login has timed out.. Теперь, когда SP1 снова вызывается, я не получу никаких ошибок, но нет никаких изменений в SQL Server, которые ожидались от SP1. Мне нужно перезапустить Tomcat, чтобы запустить SP1, как и ожидалось. Если SP2 запускается снова - я получаю ту же ошибку, цикл продолжается, и мне нужно снова запустить tomcat.

Вот что я пробовал до сих пор:

  1. Создана тестовая программа с тем же кодом, что и в веб-приложении. Скопировал его на сервер, запустил, и SP1 и SP2 прошли успешно. Поместите цикл, чтобы запустить его несколько раз без проблем. Таким образом, подтверждение, что это не проблема с разрешением, брандмауэром или сетью (хотя исправьте меня, если я ошибаюсь)
  2. На моем локальном компьютере была запущена та же самая тестовая программа, которая подключена к той же сети, что и сервер веб-приложений и сервер SQL Server. Все было хорошо, так что проблема с сетью или разрешением по-прежнему не была.
  3. Очистил кеш javaws (javaws -uninstall), удалил содержимое каталога tomcat / work и перезапустил сервер. Эффект был таким же при перезапуске сервера: первый запуск SP1 успешен - тайм-аут SP2 - SP1 ничего не произошло.
  4. Un-deployed - развернул файл war приложения для перезагрузки всего.
  5. Перезапустил сервер SQL Server
  6. Увеличено время ожидания входа в систему, время ожидания запроса и времени удаленного входа в систему сервера SQL до 5 минут, даже если ранее SP2 выполнялся менее чем за 10 секунд. Нет эффекта.
  7. Перекомпилированы все хранимые процедуры с SQL Server
  8. Удалил все хранимые процедуры и создал их заново

Конечно, я все еще жду обратной связи, если произошли изменения в физическом сетевом соединении, обновлении / понижении маршрутизатора и т. Д., Когда проблема стала «постоянной», если она когда-либо будет иметь какое-либо влияние. Но на данный момент мне нужны комментарии от ваших гуру, чтобы попробовать что-то еще.

...