powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / неудача.что делать?
25 сообщений из 84, страница 3 из 4
неудача.что делать?
    #37857232
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
silvanPetro123, куда я трейс пошлю?
не верете, не надо.но то что одно ползет по кабелю а другое по воздуху факт.
Петро не про это пишет. Очень похоже, что вы занимаетесь гаданием места ошибки. А лучше провести анализ и найти бутылочное горлышко, которое и нужно решать. 650кб - это хороший канал.
...
Рейтинг: 0 / 0
неудача.что делать?
    #37857383
silvan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Leonidv,как вы предлагаете проводить анализ?
...
Рейтинг: 0 / 0
неудача.что делать?
    #37857403
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
silvan,
найти того, кто писал код, и попросить замерить все участки кода по времени.
...
Рейтинг: 0 / 0
неудача.что делать?
    #37857511
Йуный джавистЪ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вам нужно сделать следующее:
1)Понять, что же все-таки тормозит - получение данных из базы, или отправка данных пользователю. Судя по тому, что с локальной базой у вас все работает быстро, то скорее всего дело в базе.
2)Включить логгирование SQL запросов (на уровне Hibernate или JDBC). Посмотреть, сколько SQL запросов выполняется на один запрос пользователя (нормальное значение - не больше 5). Проанализировать эти запросы. Создать необходимые индексы. Включить в Hibernate в нужных местах eager fetching. Посмотреть, нет ли у вас такого, что вы делаете запрос, а потом на каждую строчку делаете еще один запрос (это обычно самая главная причина тормозов). Заменить все такие места на join. Мне таким образом удавалось разгонять скорость работы с двух часов до двадцати секунд.
3)Как я понял, вы высасываете все данные из базы, а потом выдаете их в грид. Грид сам делает по ним пейджинг. Этот подход крайне неправильный. Должен делаться запрос к базе на каждое перелистывание страницы.
...
Рейтинг: 0 / 0
неудача.что делать?
    #37857526
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Йуный джавистЪ,
+1
...
Рейтинг: 0 / 0
неудача.что делать?
    #37857548
Йуный джавистЪ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по ТЗ: выдать клиенту все договора

Вы в ваадин все договора выдаете? То есть на ОДНОЙ странице интерфейса просмотр ВСЕХ договоров?
...
Рейтинг: 0 / 0
неудача.что делать?
    #37858127
Йуный джавистЪ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonidv,как вы предлагаете проводить анализ?

1)Инструментировать java функции руками. Например, у вас есть функция
getContracts(){
//bla bla bla
}

Вы вставляете

getContracts(){
long t = System.currentTimeInMillis();
//bla bla bla
System.out.println("getContracts "+((double)t-System.currentTimeInMillis())/1000);
}
Делаете запрос к проблемной странице, смотрите, что пишется в лог, делаете выводы.

2)Включить логирование запросов на стороне СУБД.

3)Взять Firefox+firebug, посмотреть какие XMLHttpRequest тормозят.
...
Рейтинг: 0 / 0
неудача.что делать?
    #37874238
silvan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я ошибся в производственной системе сервер приложений там же где и база.загруженность агрегата высокая.
на данный момент воткнули таймер на запросах и преобразованиях в ДТО.
запросы шустро летят.самый тормозной 2 сек.
основная просадка получается в преобразовании в ДТО
1 объект создается 3 сек умножаем на тысячи получаем минуты.сильно ускориться можем если не все сразу преобразовывать будем, но все равно будет хреново(((

так же у клиентов аппараты дохленькие.говорят если скрол на табличках потянуть вниз подтормаживает.
итого проблема комплексная. 1)полный пересмотр сервис слоев и дао 2)морду надо разгружать.

пичалька.
...
Рейтинг: 0 / 0
неудача.что делать?
    #37874284
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
silvan1 объект создается 3 сек умножаем на тысячи получаем минуты.
Что именно включается в процесс создания объекта? 3 секунды - это оооочень долго.
...
Рейтинг: 0 / 0
неудача.что делать?
    #37874440
silvan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Leonidv, в большинстве своем проверку на нулл и расшивровку кодов по мапам.последнее считаю что должно быть на уровне бд но на текущий момент это невозможно.иногда парсинг строки
...
Рейтинг: 0 / 0
неудача.что делать?
    #37874470
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
silvanLeonidv, в большинстве своем проверку на нулл и расшивровку кодов по мапам.последнее считаю что должно быть на уровне бд но на текущий момент это невозможно.иногда парсинг строки
Приведите пример кода. Нечему там делаться 3 секунды.
...
Рейтинг: 0 / 0
неудача.что делать?
    #37874471
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
silvanLeonidv, в большинстве своем проверку на нулл и расшивровку кодов по мапам.последнее считаю что должно быть на уровне бд но на текущий момент это невозможно.иногда парсинг строки
И напишите модульный тест на преобразование. Eclipse/IDEA показываются время выполнения теста в миллисекундах.
...
Рейтинг: 0 / 0
неудача.что делать?
    #37874552
Большой Синий Кит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
silvan,

Сколько же там мап и пар ключ-значение в них? Или сколько проверок на каждый распарсенный ключ-значение?
...
Рейтинг: 0 / 0
неудача.что делать?
    #37874585
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Большой Синий Китsilvan,

Сколько же там мап и пар ключ-значение в них?
По идее количество элементов в HashMap не должно влиять производительность. Обычно там скорость очень близка к O(1) (подсчитать хэш и найти элемент в массиве по хэшу). Правда это только в том случае, если хэш код рассчитывается корректно.

http://stackoverflow.com/questions/4553624/hashmap-get-put-complexity
...
Рейтинг: 0 / 0
неудача.что делать?
    #37874596
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LeonidvПо идее количество элементов в HashMap не должно влиять производительность. Обычно там скорость очень близка к O(1) (подсчитать хэш и найти элемент в массиве по хэшу). Правда это только в том случае, если хэш код рассчитывается корректно.

А вот когда хэшкоды совпадают у разных по equals объектов, тут-то HashMap и деградирует очень быстро.
...
Рейтинг: 0 / 0
неудача.что делать?
    #37874608
silvan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
один из методов
Код: 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.
   public List<ArchiveTO> getALL() throws ParseException {

        if(logger.isDebugEnabled()){
            logger.debug("GET ALL FROM ARCHIVE");
        }


        List<ArchiveTO> listArchiveTO = new ArrayList();

        if(logger.isDebugEnabled()){
            t = System.currentTimeMillis();
        }

        List<KU_ARHC_OGR> listArch = dao.selectALL();
        for( KU_ARHC_OGR ku_arhc_ogr : listArch){
            ArchiveTO archiveTO = new ArchiveTO();
            SimpleDateFormat df = new SimpleDateFormat("dd.MM.yyyy HH:mm");
            archiveTO.setCorrectionDate(new java.sql.Date(df.parse(df.format(ku_arhc_ogr.getId().getCOR_TIME())).getTime()));
            archiveTO.setCorretionType(correctionTypeMap.get(ku_arhc_ogr.getCOR_TIP().trim()));
            archiveTO.setUserId(ku_arhc_ogr.getID_USER());
            archiveTO.setUserName(ku_arhc_ogr.getNAME_USER());

            // контроль
            archiveTO.setControlName(StaticCollectionsService.getControlmap().get(ku_arhc_ogr.getKOD_OBR().trim())) ;
            //номер документа
            archiveTO.setDocNumber(ku_arhc_ogr.getNOM_DOC().trim());
            // дорога погрузки
            archiveTO.setRwLoadName(sqlQueryNSIService.getRwBiMap().get(Short.parseShort(ku_arhc_ogr.getId().getDOR_RASCH().trim())));
            //станция погрузки
            archiveTO.setStationLoadName(sqlQueryNSIService.getStationBiMap().get(ku_arhc_ogr.getId().getSTAN_POGR())) ;
            //дорога назначения
            archiveTO.setRwAppointmentName(sqlQueryNSIService.getRwBiMap().get(ku_arhc_ogr.getId().getDOR_NAZN())) ;
            //отделение назначения
            archiveTO.setBranchAppointmentName(ku_arhc_ogr.getId().getNOD_POGR().toString());
            //Станция назначения
            archiveTO.setStationAppointmentName(sqlQueryNSIService.getStationBiMap().get(ku_arhc_ogr.getId().getSTAN_NAZN())) ;
            //наименование груза
            archiveTO.setCargoName(sqlQueryNSIService.getCargoBiMap().get(ku_arhc_ogr.getId().getROD_GRZ_OSN())) ;
            //наименование груза ЕТСНГ
            archiveTO.setCargoETSNGName(sqlQueryNSIService.getCargoETSNGBiMap().get(ku_arhc_ogr.getId().getKOD_GRZ_UCH())) ;
            //Администрация собственника
            archiveTO.setOwnersAdmName(sqlQueryNSIService.getAdmBiMap().get(ku_arhc_ogr.getId().getKOD_SOB())) ;
            //Род вагона
            archiveTO.setVansTypeName(sqlQueryNSIService.getVansTypeBiMap().get(ku_arhc_ogr.getId().getROD_VAG_UCH())) ;
            //призак принадлежности вагонов
            archiveTO.setVansSignOfBelong(StaticCollectionsService.getVansSignOfBelong(Integer.parseInt(ku_arhc_ogr.getId().getPR_AR()), Integer.parseInt(ku_arhc_ogr.getId().getPR_SOB()), Integer.parseInt(ku_arhc_ogr.getId().getPR_MPS()))) ;
            //код предприятия собственника ОКПО
            archiveTO.setOkpo(ku_arhc_ogr.getId().getOKPO_SOB()==null?0:ku_arhc_ogr.getId().getOKPO_SOB()) ;
            //Вид ограничения
            archiveTO.setRestrictionTypeName(StaticCollectionsService.getRestrictiontypemap().get(ku_arhc_ogr.getVID_OGR().trim())) ;
            //Количество вагонов
            archiveTO.setAmountVans(ku_arhc_ogr.getKOL_VAG()==null?0:ku_arhc_ogr.getKOL_VAG()) ;
            //Количество тонн
            archiveTO.setAmountTn(ku_arhc_ogr.getVES_GRZ()==null?0:ku_arhc_ogr.getVES_GRZ()) ;
            //Начало ограничения
            archiveTO.setRestrictionStart(ku_arhc_ogr.getDATE_NACH_OGR()) ;
            //конец ограничения
            archiveTO.setRestrictionEnd(ku_arhc_ogr.getDATE_OKON_OGR()) ;
            // ОКПО грузоотправителя
            archiveTO.setOkpoShipper(ku_arhc_ogr.getOKPO_GRUZOTPR()==null?0:ku_arhc_ogr.getOKPO_GRUZOTPR());
            // ОКПО грузополучателя
            archiveTO.setOkpoConsignee(ku_arhc_ogr.getOKPO_GRUZPOL()==null?0:ku_arhc_ogr.getOKPO_GRUZPOL());



            listArchiveTO.add(archiveTO);
        }

        if(logger.isDebugEnabled()){
            logger.debug("Total time of transformation into an object ArchiveTO is "+((double)(System.currentTimeMillis()-t))/1000 + "sec");
        }

        return listArchiveTO;
    }



авторСколько же там мап и пар ключ-значение в них?
до десятков тысяч
...
Рейтинг: 0 / 0
неудача.что делать?
    #37874622
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
silvan,

Этот метод 3 секунды работает?
Какая реализация Map используется? Судя по названия, какая-то BiMap?

Запросы к БД уходят какие-нибудь? (например, здесь может уходить если используется hibernate с lazy ассоциацией):
Код: java
1.
ku_arhc_ogr.getId().getPR_AR()
...
Рейтинг: 0 / 0
неудача.что делать?
    #37874625
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
silvanдо десятков тысяч
Десятки тысяч в HashMap - это ни о чем, если хватает оперативки. Посмотрите, может вы в swap выпадаете?
...
Рейтинг: 0 / 0
неудача.что делать?
    #37874684
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Под профайлером прогнать - сразу будет видно где затык.
...
Рейтинг: 0 / 0
неудача.что делать?
    #37874693
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

Это точно.
...
Рейтинг: 0 / 0
неудача.что делать?
    #37874717
silvan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Leonidv,
этот метод работает около 5 минут
logTotal time of transformation into an object ArchiveTO is 279.589sec


используются com.google.common.collect.HashBiMap
судя по логам запросы в БД уходят единожды далее в ОП сидит все кроме самого архива(т.е. идет 1 запрос List<KU_ARHC_OGR> listArch = dao.selectALL())
listArch.size не померял :-(


авторПосмотрите, может вы в swap выпадаете?
как понять?...если подряд метод дернуть разницы никакой.
...
Рейтинг: 0 / 0
неудача.что делать?
    #37874719
silvan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczПод профайлером прогнать - сразу будет видно где затык.
научите
...
Рейтинг: 0 / 0
неудача.что делать?
    #37874739
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
silvanBlazkowiczПод профайлером прогнать - сразу будет видно где затык.
научите
http://habrahabr.ru/search/?q= [visualvm]&target_type=posts
...
Рейтинг: 0 / 0
неудача.что делать?
    #37874776
Большой Синий Кит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LeonidvБольшой Синий Китsilvan,

Сколько же там мап и пар ключ-значение в них?
По идее количество элементов в HashMap не должно влиять производительность. Обычно там скорость очень близка к O(1) (подсчитать хэш и найти элемент в массиве по хэшу). Правда это только в том случае, если хэш код рассчитывается корректно.

http://stackoverflow.com/questions/4553624/hashmap-get-put-complexity

Я спрашивал об этом потому, чтобы понять, сколько валидаций на всю хешмапу идет.
...
Рейтинг: 0 / 0
неудача.что делать?
    #37874794
Большой Синий Кит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
P.S. Но это уже неактуально. :))
...
Рейтинг: 0 / 0
25 сообщений из 84, страница 3 из 4
Форумы / Java [игнор отключен] [закрыт для гостей] / неудача.что делать?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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