Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.10.23;
Скачать: [xml.tar.bz2];

Вниз

300 коннектов из 1 программы :(   Найти похожие ветки 

 
Карелин Артем   (2003-09-30 13:47) [0]

Ситуация такая: в цикле идет обращение методам неких самодельных обьектов. Из них идет вызов к хранимой процедуре. Эта процедура одна на весь проект (динамическое создание занимает много времени). Транзакция активируется до начала цикла и заканчивается после цикла. Prepare/UnPrepare идет при каждом вызове. Если это дело требует много итерации, система начинает жутко тормозить. В свойствах FB число аттачей к базе весело увеличивается, а скорость работы невесело падает.
Как это исправить?


 
Nikolay M.   (2003-09-30 14:03) [1]

Тут недавно пробегал вопрос про Prepare, результатом дискуссии, вроде бы, стало мнение, что для вызова похожих запросов, различающихся только параметрами, Prepare нужно делать только единожды. Попробуй вынести Prepare за цикл, в котором вызывается процедура.
Ну и, ессесно, подумать над реинжинирингом процесса в целом...


 
Карелин Артем   (2003-09-30 14:11) [2]

Сложно это. Кода много надо перелопатить... Попроще нет способа?


 
Alexandr   (2003-09-30 14:11) [3]

таки непонятно
1) зачем много коннектов?
2) если все-таки много то посмотреть на yaffil
3) коннект локальный или сетевой (через localhost хотя-бы)
4) Действительно prepare можно убрать.
5) Ставить много памяти и классик.


 
Fay   (2003-09-30 14:14) [4]

А у тебя в логе сервера, случайно, такой штуки нет?
internal gds software consistency check (Too many savepoints (287))


 
Карелин Артем   (2003-09-30 14:20) [5]

Fay (30.09.03 14:14)
Нет.
Alexandr © (30.09.03 14:11)
1) Программа одна, так что у меня самого непонятки с этим.
3) Локальнее не бывает.
4) Все вызовы к ХП в программе идут через этот экземпляр TIbStoredProc. Если UnPrepare убрать, то входные и выходные параметры остаются прежние. А у меня уже больше 100 ХП в базе.
5) При этом FB занимает всего ~40 мегов в памяти.


 
Alexandr   (2003-09-30 14:26) [6]

1) как это? а чья программа?
3) нужен localhost:\.... однозначно. Иначе это первая причина.
4) ах, так это разные процедуры...
5) Ну так нормально для супера.


 
Карелин Артем   (2003-09-30 14:31) [7]

1) Мое творчество.
3) Это обьяснение причины использования Prepare/UnPrepare в каждой итерации. В данном цикле идет вызов 1 процедуры с разными параметрами.


 
Alexandr   (2003-09-30 14:36) [8]

1) исправить путь на localhost
2) если вызывается одна процедура, с разными параметрами, то upprepare ненужен.
3) TIBStoredProc заменить на TIBSQL ибо глюк.

после этого приходи.


 
Карелин Артем   (2003-10-02 15:11) [9]

Сдается мне TIBStoredProc временами неправильно работает с FB, либо в FB 1.0.2.908 косячит иногда, потому как 127.0.0.1 не помог, FB начал зацикливаться после массовой переброски данных с помощью ХП: число коннектов быстро растет даже после выхода из программы. Число потоков внутри FB тоже растет. Сегодня к примеру было около 1200 коннектов и 1900 потоков в его сервисе. При этом сервис ел 0% времени процессора и не отзывался на внешние раздражители. Без prepare/unprepare.
После backup/restore проблем не было....


 
Alexandr   (2003-10-03 07:30) [10]

1) если новые коннекты быстро появляются, то количество потоков соответственно растет. Потом количество потоков уменьшится само.
2) непонятно как это "число коннектов быстро растет даже после выхода из программы"
3) непонятна фраза "После backup/restore проблем не было...."

P.S. уж очень экстремальный тест ты даешь серверу... Совершенно непонятно, зачем тебе столько коннектов. Неправильно это.
Для такого теста уж лучше попробовать Yaffil или FB1.5 в yaffil по-моему что-то крутили в эту сторону. Но в любом случае, нужно обоснование такой странной необходимости в таком количестве коннектов из одного приложения.
Вообще, из на какой ОС у тебя FB работает? Ибо странно выглядит цифра 1200... раз в 10 меньше - нормально. А тут как бы и сама ОС может запантоваться на этот счет...


 
Карелин Артем   (2003-10-03 12:35) [11]

Я конечно в сказки не верю, но....
1) Из программы при нормальных условиях должен быть 1 коннект, ибо она работает в единственном экземпляре и использует по одному компоненту типа TIbDataBase, одну транзакцию и т.д. Сети нет.
2) Ну что тут можно сказать?? Чудеса да и только. Вместо 0 коннектов их число растет на глазах.
3) Ну это... B/R сделал базы, чудес не стало. 1 база и 1 коннект. Как и должно было быть.

А ось у меня самая стабильная: 2000 сервер и 3 сервис-пак.
Вот скриншот: http://blackrain.pisem.net/1.gif


 
Карелин Артем   (2003-10-03 12:37) [12]

Вдогонку: это уже после выхода из всех программ, рабоающих с базами.



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2003.10.23;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.011 c
1-74225
Zheks
2003-10-09 11:10
2003.10.23
Закроем тему: Распечатка StringGrid_a


1-74258
Lam
2003-10-13 10:08
2003.10.23
ini файл


1-74222
webpauk
2003-10-13 15:38
2003.10.23
OnPopup


1-74252
avkniazev
2003-10-13 13:29
2003.10.23
Поиск слова в RichEdit


3-74006
jazz
2003-10-04 10:54
2003.10.23
Oracle





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский