Гость
Map
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Java Stored Procedure - долгий первый запуск / 9 сообщений из 9, страница 1 из 1
16.12.2021, 13:11
    #40120588
pbda
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java Stored Procedure - долгий первый запуск
Здравствуйте, есть Oracle 11g, в ём Java 1.6. Написана хранимая процедура на Java, которая на всех объектах внедрения работает быстро, кроме одного. На этом объекте ее первый вызов в каждой новой сессии вызывает задержку до 1 минуты. А потом она летает. Отчего возникает эта задержка и как бы её устранить?
...
Рейтинг: 0 / 0
16.12.2021, 13:15
    #40120590
dmdmdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java Stored Procedure - долгий первый запуск
Ошибка в 47-й строке.
...
Рейтинг: 0 / 0
16.12.2021, 13:17
    #40120591
Vadim Lejnin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java Stored Procedure - долгий первый запуск
pbda,

Проверьте, вдруг в нем при запуске используется обращение к сайту, а dns не настроен
...
Рейтинг: 0 / 0
16.12.2021, 13:23
    #40120595
pbda
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java Stored Procedure - долгий первый запуск
Vadim Lejnin,

Посмотрел источник, там вообще работа с сетью не идёт, функция просто запускает внешний процесс

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
public static void executeCommand2(
        java.lang.String command,  // command
        java.lang.String arg1,     // arguments
        java.lang.String arg2,
        java.lang.String arg3,
        java.lang.String arg4,
        java.lang.String arg5,
        java.lang.String arg6,
        java.lang.String arg7,
        java.lang.String arg8,
        java.lang.String arg9,
        java.lang.String arg10,
        java.lang.String arg11,
        java.lang.String arg12,
        java.lang.Integer[] exitCode, 
        CLOB[] stdOut, 
        CLOB[] stdErr
     ) throws Throwable {
        ProcessBuilder processBuilder = null;
        final StringBuilder sbOut = new StringBuilder();
        final StringBuilder sbErr = new StringBuilder();
        
        List list = new ArrayList(); 
        if (command != null) list.add(command);
        if (arg1  != null) list.add(arg1);
        if (arg2  != null) list.add(arg2);
        if (arg3  != null) list.add(arg3);
        if (arg4  != null) list.add(arg4);
        if (arg5  != null) list.add(arg5);
        if (arg6  != null) list.add(arg6);
        if (arg7  != null) list.add(arg7);
        if (arg8  != null) list.add(arg8);
        if (arg9  != null) list.add(arg9);
        if (arg10 != null) list.add(arg10);
        if (arg11 != null) list.add(arg11);
        if (arg12 != null) list.add(arg12);
        
        processBuilder = new ProcessBuilder();
        processBuilder.command(list);
        processBuilder.redirectErrorStream(false);
        
        final Process pr = processBuilder.start();

        // Reading stdout
        BufferedReader processOutputReader = null;
        try {
            processOutputReader = new BufferedReader(new InputStreamReader(pr.getInputStream()));
            String readLine;
            while ((readLine = processOutputReader.readLine()) != null) {
                sbOut.append(readLine + "\r\n");
            }
        } finally {
            try {
                processOutputReader.close();
            } catch (Exception ex) {}
        }

        // Reading stderr
        BufferedReader processErrReader = null;
        try {
            processErrReader = new BufferedReader(new InputStreamReader(pr.getErrorStream()));
            String readLine;
            while ((readLine = processErrReader.readLine()) != null) {
                sbErr.append(readLine + "\r\n");
            }
        } finally {
            try {
                processErrReader.close();
            } catch (Exception ex) {}
        }

        int ec = pr.waitFor();

        if (stdOut[0] != null)
            stdOut[0].setString(1, sbOut.toString());
        if (stdErr[0] != null)
            stdErr[0].setString(1, sbErr.toString());
        exitCode[0] = ec;
    }
...
Рейтинг: 0 / 0
16.12.2021, 13:33
    #40120600
SQL*Plus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java Stored Procedure - долгий первый запуск
pbda
Vadim Lejnin,
Посмотрел источник, там вообще работа с сетью не идёт, функция просто запускает внешний процесс

А во внешнем процессе "при запуске используется обращение к сайту, а dns не настроен".
...
Рейтинг: 0 / 0
16.12.2021, 13:34
    #40120602
pbda
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java Stored Procedure - долгий первый запуск
SQL*Plus,

отличная гипотеза, пойду проверять
...
Рейтинг: 0 / 0
16.12.2021, 15:03
    #40120654
stdio
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java Stored Procedure - долгий первый запуск
А потом еще кто-то про log4j говорит, что в нём уязвимости.
...
Рейтинг: 0 / 0
16.12.2021, 16:21
    #40120692
Sayan Malakshinov
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java Stored Procedure - долгий первый запуск
pbda,

натравите dtrace или systemtap и смотрите что там творится целую минуту... Хотя возможно будет даже достаточно вручную oradebug short_stack многократно повызывать-посмотреть
...
Рейтинг: 0 / 0
16.12.2021, 23:45
    #40120851
pbda
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java Stored Procedure - долгий первый запуск
stdio, в теории да, ужос, но на практике на каждый запускаемый процесс надо сперва раздать гранты, от sys-а. Так шо все под контролем
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Java Stored Procedure - долгий первый запуск / 9 сообщений из 9, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]