Interbase заема всички ресурси

4 отговора 430 прегледа
#1

Interbase заема всички ресурси

Имам приложение, което работи по мрежа с Интербейс(около 30 компа).
WIN XP
През 3-4 дена обаче на Ibserver.exe на сървъра започва да заема 100%
от процесора и 100 МБ памет. съответно докато е така приложението умира.
работи супер бавно.
Предполагам, че подавам някакви прецакани заявки. Прегледах програмата
за отворени транзакции, кофти куерита, но не се сещам какво точно може да
натовари толкова сървъра.
Забелязах и че след като къмитна дадена транзакция Ibserver.exe не освобождава памет, но това не товари процесора и не забавя програмата.

Ако имате идеи или повече информация по Интербасе теория ще съм благодарен.

Отговор
в отговор на chovek #2

Re: Interbase заема всички ресурси

Съдейки по това, че не знаеш че трябва да посочваш версията на сървъра когато задаваш въпрос си мисля, че не ти е известeн и параметъра sweep interval и за какво служи
Вж. Кооперативная сборка мусора
Ето ти и един добър инструмент за анализ и диагностика на различни подобни проблеми

Отговор
в отговор на NDeu #3

sorry

знаех си че все нещо съм забравил версията е Firebird1.1

Отговор
в отговор на NDeu #4

10x

Багодаря NDeu. Този инструмент за анализ ми помогна много, а също и информацията за транзакциите. Имал съм 5 лоши индекса, кото жместо да подобряват призжодителността, и намаляваха многократно.
Само за сега не ми стана много ясно дали да използвам sweep. Проблема е ако се включи в работно време ще затормози сървъра и пак ще убие скоростта,
ако обаче никога не се чистят остарелите транзакции пак не е добре ...

Отговор
в отговор на chovelk #5

Re: 10x

Аз изказах само предположение, че проблема ти е в sweep-а. За да се убедиш, че това ти е проблема е добре да проверяваш периодично статистиката. Вж Как правильно получать статистику
Ако се потвърди хипотезата, имаш няколко направления по които да работиш.
1. Ако приложението е ваша разработка, да съкратите времето на I/U/D/ транзакциите, като разделите транзакциите на модифициращите операции от визуализиращите.
Ако направите това, може и никога да не стигнете до 20 000 задържани транзакции при вашите тридесетина клиента.
2. Ако не може да се приложи т.1. или въпреки това се стига до sweep, то тогава е добре да изключите автоматичния sweep: gfix -housekeeping 0 и да се пуска в ненатоварените часове ръчно (или от шедулер) : gfix -sweep

Отговор