घर
Top.Mail.Ru Yandeks.Metrika
फोरम: "मामले";
वर्तमान संग्रह: 2009.08.16;
डाउनलोड करें: [xml.tar.bz2];

नीचे

फायरबर्ड एक्सेस करने पर एप्लिकेशन जम जाता है। क्या मदद करनी है इसी तरह की शाखाएँ खोजें


Tepex ©   (2008-11-05 14:29) [0]

सभी को शुभ दिन। निम्नलिखित में समस्या फायरबर्ड सर्वर और क्लाइंट्स से कनेक्ट होती है और ऐसा होता है कि कभी-कभी आप इसे पढ़ने के लिए रिकॉर्ड में बदल जाते हैं और एप्लिकेशन फ्रीज हो जाता है। क्या समस्या हो सकती है? हो सकता है कि अन्य उपयोगकर्ता रिकॉर्ड तक पहुंचें और उन्हें ब्लॉक करें?



Sergey13 ©   (2008-11-05 14:40) [1]

कभी-कभी यह बदतर है। इसकी अपनी शर्तों के तहत सभी कारणों से।



Tepex ©   (2008-11-05 15:05) [2]


> Иногда и хуже бывает. На все свои причины при своих условиях.

что ты этим хотел сказать?



Sergey13 ©   (2008-11-05 15:28) [3]

А что ты хотел сказать своим постом? Что-то, где-то, когда-то работает не так как хочется?



Правильный$Вася   (2008-11-05 15:35) [4]

> иногда обращаешься к записи чтобы ее считать и приложение зависает
कोड आता है



Sergey13 ©   (2008-11-05 15:48) [5]

> [4] सही $ वास्या (05.11.08 15: 35)
> код давай

Может и не в коде дело, а в том, например, что сервер это "сервер" и по совместительству рабочая машина какого нибудь геймера. 8-)



PEAKTOP ©   (2008-11-05 16:58) [6]

> सर्गेइएक्सन्यूम्एक्स © (13 05.11.08: 15) [48]
> Может и не в коде дело, а в том, например, что сервер это "сервер" и по совместительству рабочая машина какого нибудь геймера. 8-)


Ставлю 80% на параметры транзакции INSERT и еще 15% на сборку мусора SWEEP (если подключение происходит в 2 часа ночи и это единственный клиент в данный момент времени).



Tepex ©   (2008-11-05 23:18) [7]

Вообщем есть программа написанная на Delphi исходников нет поэтому не могу посмотреть что там происохдит, т.е является черным ящиком, она работает с БД, и есть обработка в 1С при помощи которой выгружаются данные которые создаются программкой на Delphi. Обработка из 1С как я понял подключается к базе данных через COM объект и использует ADO. Подключение происходит нормально, выгрузка данных, происходит нормально, но иногда после закрытия обработки и вновь ее открытия и запуска зависает, и не работает не nowait, не timeout которые установлены. Может ли быть так что клиенты из под Delphi приложения блокируют таблицы и можно ли их как то разблокировать?
P.S клиентов 10.
консультации по 1С не стоит давать я могу спросить и на другом форуме.
Интересует ответы только по поводу FireBird и ADO компонент



Сергей М. ©   (2008-11-06 08:27) [8]


> есть программа написанная на Delphi исходников нет


> Обработка из 1С как я понял


हम्म ।।
К разработке Делфи-приложения ты не имеешь отношения, 1С-обработку тоже не ты писал .. Возникает резонный вопрос - какое отношение к программингу सामान्य में ты имеешь ? Т.е. даже если причина "беды" будет локализована, как ты сможешь повлиять на ее устранение ?



Сергей М. ©   (2008-11-06 08:34) [9]


> обработка в 1С при помощи которой выгружаются данные


Куда выгружаются ?



Tepex ©   (2008-11-06 09:17) [10]


> Хм ..
> К разработке Делфи-приложения ты не имеешь отношения, 1С-
> обработку тоже не ты писал .. Возникает резонный вопрос
> - какое отношение к программингу вообще ты имеешь ? Т.е.
>  даже если причина "беды" будет локализована, как ты сможешь
> повлиять на ее устранение ?


Отношение к программированию я имею самое прямое. И как я буду влиять на устранение проблемы это тоже как бы мое дело.
Данные выгружаются в из базы данных firebird в базу данных 1С.
Строка соединения формируется следующим образом:
Соединение = Новый COMОбъект("ADODB.Connection");
Соединение.ConnectionString = "driver={Firebird/InterBase(r) driver};    |server=" + выбСервер + ";
  |uid=" + выбПользователь + ";                 |pwd=" + выбПароль + ";      |database=" + выбСервер   + ":" +выбПутьКБазе+ ";               |READONLY=1;
  |NOWAIT =1;
  |CursorType = ctForward-only;";
Соединение.ConnectionTimeOut = выбВремяОжидания;
Соединение.CursorLocation = "ltReadOnly";
Соединение.Open();



Tepex ©   (2008-11-06 09:38) [11]


> > Хм ..
> > К разработке Делфи-приложения ты не имеешь отношения,
> 1С-
> > обработку тоже не ты писал .. Возникает резонный вопрос
>
> > - какое отношение к программингу вообще ты имеешь ? Т.
> е.
> >  даже если причина "беды" будет локализована, как ты сможешь
>
> > повлиять на ее устранение ?
>
>
> Отношение к программированию я имею самое прямое. И как
> я буду влиять на устранение проблемы это тоже как бы мое
> सौदा।

от вас просто хочется услышать советов, а не нравоучений Господа



Сергей М. ©   (2008-11-06 09:48) [12]

Причем здесь "нравоучения" ?

Если обработку писал лично ты, то следовало бы сразу привести фрагмент кода, а не вводить в заблуждение фразой "как я понял" ..

अब अनिवार्य रूप से।

Что показывает отладчик при пошаговой трассировке кода 1С-обработки ?
На какой конкретно строчке происходит "вис" ?

द्वारा न्याय कर रहा है


> обращаешься к записи чтобы ее считать и приложение зависает


приведенный тобой код не имеет отношения к проблеме - в нем нет ни намека на работу с НД и транзакциями ..



Tepex ©   (2008-11-06 10:03) [13]

Пока Не ТаблицаБазы.EOF() Цикл  
 
СтрокаИДЗаявок = СтрокаИДЗаявок + Формат(ТаблицаБазы.fields("orderid").Value,"ЧГ=") + ",";
 
ТаблицаБазы.MoveNext();
 
КонецЦикла;


вообщем при получении данных из поля "orderid" обработка зависает и дальше ничего сделать не могу, приходится убивать процесс в диспетчере. Может быть с настройками самого firebird какие то проблемы или с подключением?



Сергей М. ©   (2008-11-06 10:21) [14]

और आप एक रीडिंग लेन-देन कहां सेट अप और प्रबंधित करते हैं?



Tepex ©   (2008-11-06 10:43) [15]

СтрокаСЗаявками = "";
Для Каждого СтрокаИзСпискаЗаявок Из СписокЗаявок Цикл
Если НЕ СтрокаИзСпискаЗаявок.Заявка.ПометкаУдаления Тогда
СтрокаСЗаявками = СтрокаСЗаявками + "cast(""+ ВРег(СокрЛП(СтрокаИзСпискаЗаявок.Заявка.Номер))+"" as varchar(32)),";
КонецЕсли;
КонецЦикла;

ТекстЗапросаИДЗаявок = "select * from orders where agreementno in (" + СтрокаСЗаявками + ")";

Соединение = Новый COMОбъект("ADODB.Connection");
Соединение.ConnectionString = "driver={Firebird/InterBase(r) driver};
         |server=" + выбСервер + ";
         |uid=" + выбПользователь + ";
         |pwd=" + выбПароль + ";
         |database=" + выбСервер + ":" + выбПутьКБазеАльтавин + ";
         |READONLY=1;
         |NOWAIT =1;
         |CursorType = ctForward-only;";
Соединение.ConnectionTimeOut = выбВремяОжидания;
Соединение.CursorLocation = "ltReadOnly";

Соединение.Open();

ТаблицаБазы = Новый ComОбъект("ADODB.RecordSet");

ТаблицаБазы.Open(ТекстЗапросаИДЗаявок, Соединение);
СтрокаИДЗаявок = "";
Пока Не ТаблицаБазы.EOF() Цикл  
СтрокаИДЗаявок = СтрокаИДЗаявок + Формат(ТаблицаБазы.fields("orderid").Value,"ЧГ=") + ",";
           ТаблицаБазы.MoveNext();
 
КонецЦикла;


Ну вообщем вот так вот все и формируется.



Sergey13 ©   (2008-11-06 10:51) [16]

> [7] Tepex ©   (05.11.08 23:18)
> но иногда после закрытия обработки и вновь ее открытия и
> запуска зависает, и не работает не nowait, не timeout которые
> установлены.

Закрытие и открытие имеется в виду перезапуск приложения или отдельной формы приложения? Может чего не так инициализируется?



Tepex ©   (2008-11-06 10:58) [17]


> > [7] Tepex ©   (05.11.08 23:18)
> > но иногда после закрытия प्रसंस्करण и вновь ее открытия
> और
> > запуска зависает, и не работает не nowait, не timeout
> которые
> > установлены.
>
> Закрытие и открытие имеется в виду перезапуск приложения
> или отдельной формы приложения? Может чего не так инициализируется?
>


Просто открываешь в 1С обработку, закрываешь обработку(не саму 1С) и снова через файл->открыть, открываешь обработку и запускаешь ее после это 1С виснет.



Sergey13 ©   (2008-11-06 11:11) [18]

> [17] Tepex ©   (06.11.08 10:58)
> закрываешь обработку(не саму 1С)

А если "саму 1С" закрыть/открыть, то все нормально? Значит что-то не до конца прибили, ИМХО.



sniknik ©   (2008-11-06 11:16) [19]

странно что и в первый раз то работает...
не знаю как 1С так вообще работает, и зависит ли описанное от этого, но вот тут ошибка
> Соединение.CursorLocation = "ltReadOnly";

(автору кода не составит груда заглянут в доку и исправить)



Tepex ©   (2008-11-06 11:17) [20]

[१ 18] १ सी को बंद करना ही मदद करता है, लेकिन हमेशा नहीं। यह सिर्फ इतना है कि जब आप प्रसंस्करण बंद करते हैं, तो सभी चर रीसेट हो जाएंगे और अनिश्चित काल के लिए = बन जाएंगे, इसलिए जिस वस्तु से कनेक्शन टूट जाता है और वह भी मारा जाता है। फिर क्या कारण हो सकता है? IMHO



sniknik ©   (2008-11-06 11:19) [21]

кстати я бы и это посчитал бы глюком, правда это не всегда "смертельно", от объема зависит, но всегда тормозно
> СтрокаИДЗаявок = СтрокаИДЗаявок + Формат(ТаблицаБазы.fields("orderid").Value,"ЧГ=") + ",";



Tepex ©   (2008-11-06 11:20) [22]

[१ ९] अच्छी तरह से हटा दिया गया था, पहली शुरुआत में इस ध्वनिशोषक फांसी प्रसंस्करण से कोई मतलब नहीं था। अगर मैं इसे सही ढंग से समझता हूं, तो कनेक्शन। CursorLocation = "ltReadOnly"; यह ADOConnection.CursorLocation = "ltReadOnly" के समान है; या शायद मैं गलत हूँ?



sniknik ©   (2008-11-06 11:22) [23]

> Это тоже самое что и в делфи ADOConnection.CursorLocation  = "ltReadOnly";
практически да, и дельфи это даже скомпилировать не даст.... насколько пинимаю.



Tepex ©   (2008-11-06 11:23) [24]


> кстати я бы и это посчитал бы глюком, правда это не всегда
> "смертельно", от объема зависит, но всегда тормозно
> > СтрокаИДЗаявок = СтрокаИДЗаявок + Формат(ТаблицаБазы.fields("orderid").
> Value,"ЧГ=") + ",";

И как надо написать правильнее?



Tepex ©   (2008-11-06 11:28) [25]

[23] Извени перепутал конечно это чушь. Просто сейчас под рукой нет Делфи



sniknik ©   (2008-11-06 11:30) [26]

> И как надо написать правильнее?
смотря для чего/что делается, если нужна именно строка то память обычно правильно выделять под неё полностью, и куски "вкопировать"  на места. а то что есть будет черезчур часто перераспределять память под строку. что и приведет к тормозам, если же строка превысит какой то объем (теоретически 2гига но практически меньше) то к нехватке памяти и/или глюку.



sniknik ©   (2008-11-06 11:34) [27]

> Извени перепутал конечно это чушь.
тогда вопрос... а что именно мы тут обсуждаем? если приведённый код не рабочий, приведён "по памяти" и является чушью... как именно ты хочешь найти ошибку.

это все одно что для ремонта одного авто в авто мастерскую пригнать другое, но говорить все таки про первое (и главное ожидать, что отремонтируют именно его)...



Tepex ©   (2008-11-06 11:40) [28]

код привден верно работало даже с этой строкой, хотя она не правильная, спасибо за то что указал. Писал код не я, есть проблема с зависанием и мне ее к сожалению приходится решать.



sniknik ©   (2008-11-06 11:46) [29]

ठीक है, अगर ऐसी गलती वहां की गई थी ... तो आपको पूरे कोड की समीक्षा करने की आवश्यकता है, यह स्पष्ट रूप से प्रक्रिया को समझने के बिना लिखा गया था।



Tepex ©   (2008-11-06 11:53) [30]

[29] Пересматривал код весь процесс проходит нормально, а вот в куске который я написал происходит зависание системы. может проблема в настройке самой СУБД? Или программа написанная на Делфи блокирует таблицы в чем проблема может быть?



Сергей М. ©   (2008-11-06 11:54) [31]


> Tepex ©   (06.11.08 11:40) [28]


А что мешает отказаться от доступа к базе через ADO непосредственно в обработке в пользу доступа через дельфийские компоненты прямого доступа в 1С-надстройке ?



Сергей М. ©   (2008-11-06 12:07) [32]


> Tepex

http://delphi-faq.zoxt.net/363.htm



sniknik ©   (2008-11-06 12:08) [33]

> Пересматривал код весь процесс проходит нормально, а вот в куске который я написал происходит зависание системы.
अच्छा हाँ ...

st:=  StringList.Text;
вот кусок в котором процесс (передача текста в переменную) проходит нормально.

после гденибудь в другом месте делаем StringList.Free, тоже что характерно совершенно нормально.

потом пытаемся выполнить первый "нормальный" кусок второй раз...



sniknik ©   (2008-11-06 12:10) [34]

> http://delphi-faq.zoxt.net/363.htm
это немного не то, это к к рекордсету... лучше обратиться к документации.



Сергей М. ©   (2008-11-06 12:31) [35]


> не то, это к к рекордсету


Судя по авторскому


> обращаешься к записи чтобы ее считать и приложение зависает


проблемы как раз при работе с НД



Tepex ©   (2008-11-06 13:59) [36]

[35] Извените конечно но что значит НД?



Сергей М. ©   (2008-11-06 14:06) [37]

НД = Набор Данных



Tepex ©   (2008-11-06 14:12) [38]

Ну так где копать надо начинать Уважаемые?



Сергей М. ©   (2008-11-06 14:36) [39]

[32] проштудировал ?



Tepex ©   (2008-11-06 14:59) [40]

Да вроде все понятно. Ничего нового не нашел.



sniknik ©   (2008-11-06 15:01) [41]

> Ну так где копать надо начинать Уважаемые?
исправить уже найденные ошибки, почитать документацию, и пересмотреть весь код ещё раз.



Сергей М. ©   (2008-11-06 15:13) [42]


> Ничего нового не нашел


Неужели ?!



Tepex ©   (2008-11-06 15:20) [43]

Ну да я это уже читал до того как создать тему. Ну так какие могут быть предложения?



Сергей М. ©   (2008-11-06 15:30) [44]

А какие м.б. предложения ?
Сетевые условия взаимодействия с IB-сервером и с хостом, на котором он размещен, ты так и не детализировал ..
А от них многое зависит ..



Сергей М. ©   (2008-11-06 15:37) [45]

Опять же есть сомнения в эффективности выполнения запроса, который возвращает тебе НД - к использованию статьи IN следует подходить с полным пониманием происходящего ..



Tepex ©   (2008-11-06 15:42) [46]

[44] да соединение с сервером FB происходит через TCP/IP протокол, настройки самого FB по умолчанию. Машина на которой расположен сервер FB Intel Xeon 3.20 GHz, подключатся одновременно могут 10 клиентов. Вот такое взаимодействие с сервером FB.



Сергей М. ©   (2008-11-06 15:45) [47]


> Tepex ©   (06.11.08 15:42) [46]


Этих сведений не достаточно для принятия решения о применении того или иного типа курсора. И в статье на это сделан довольно внятный акцент.



Сергей М. ©   (2008-11-06 15:47) [48]

Неизвестно также в каком режиме работает IB-сервер - CS или SS..



Tepex ©   (2008-11-06 16:00) [49]

[48] не могу посмотреть в данный момент в каком режиме работает. Насчет IN. что предлагаешь использовать в замен этой статьи?



Сергей М. ©   (2008-11-06 16:15) [50]

Об эффективности IN можно рассуждать лишь зная подробности плана запроса, используемого сервером при исполнении этого запроса .. Ты их тоже не привел ..



Сергей М. ©   (2008-11-06 16:30) [51]

Другие (кроме вставки) модификации таблицы, к которой ты выполняешь запрос, осуществляются ?
Подозрения на попадание твоей транзакции на сборку мусора пока еще не сняты ..



Tepex ©   (2008-11-06 16:54) [52]

[51] Да вот я только что проанализировал свою базу при помощи утилиты IBAnalyst и она показала что плохо проиндексирована база данных и много мусора. Скорее всего ваши подозрения верны(про мусор). Потому что приложение написанное на Делфи так же при работе с базой данных тормозит.  В базу данных fb ничего не вставляется только читается.



Сергей М. ©   (2008-11-06 17:08) [53]


> она показала что плохо проиндексирована база


Что значит "плохо" ?
Подробней..
Конкретно про все имеющиеся индексы, касающиеся поля orders.agreementno ..


> много мусора


> В базу данных fb ничего не вставляется


Откуда же там взялись данные, если ничего не вставляется ?

И откуда взялся мусор, если кроме вставок никаки модификации не осуществляются (да и модифицировать-то собственно нечего, раз ничего не вставляется) ?

Речь идет об операциях с базой со стороны प्रत्येक के из клиентов, а не только клиента в контексте твоего 1С-приложения !



Сергей М. ©   (2008-11-06 17:20) [54]


> Tepex

http://www.ibase.ru/devinfo/garbage.htm



Tepex ©   (2008-11-06 17:25) [55]


> Речь идет об операциях с базой со стороны каждого из клиентов,
>  а не только клиента в контексте твоего 1С-приложения !

Ну так бы и сразу. Дело в том как я писал раннее я не могу знать при помощи каких механизмов происходит вставка данных в базу потому что они вставляются при помощи приложения написанного на Делфи, а исходников нет у меня.
> > В базу данных fb ничего не вставляется
>
>
> Откуда же там взялись данные, если ничего не вставляется
>?

я имел ввиду что со стороны 1С ничего не вставляется.
> > она показала что плохо проиндексирована база
>
>
> Что значит "плохо" ?
> Подробней..
> Конкретно про все имеющиеся индексы, касающиеся поля orders.
> agreementno ..


Плохих индексов: 40.
Под `плохими` мы имеем в виду индексы с большим числом повторяющихся
ключей (90% от всех ключей) и большими группами одинаковых ключей
(30% от всех ключей). Большие группы одинаковых ключей замедляют
сборку мусора - MaxEquals здесь это % самой большой группы ключей с
одинаковыми значениями. Поиск по таким индексам является
неэффективным. Вы можете удалить такие индексы (если это не индекс по
Foreign Key).

Некоторые транзакции активны слишком долгое время. Самая старая
транзакция Oldest active стартовала 9060 транзакций назад, в то время
как среднее число транзакций в день примерно равно 13370.
Это может быть сигналом, что имеет смысл проверить текущую схему
обработки транзакций в ваших приложениях. Убедитесь, что транзакции
завершаются commit/rollback после использования, и не находятся в
активном состоянии долгое время без необходимости. Не стартуйте много
ненужных транзакций. Также имеет смысл посмотреть на динамику
количества транзакций в зависимости от активности клиентских
приложений. Одной из причин большого числа активных транзакций может
быть потеря transacton handle в коде приложения. То есть, приложение
стартует транзакцию, но не завершает ее по commit/rollback.
Другой причиной может быть использование BDE при отсутствии явного
управления транзакциями, и параметр алиаса SQLPASSTHROUGH = SHARED
NOAUTOCOMMIT.

Текущий размер страницы базы данных = 4096 байт.

Бесполезных индексов: 16.
Бесполезные индексы имеют только одно значение ключа. То есть,
столбец, по которому создан индекс, содержит одно единственное
значение во всех строках таблицы. Поэтому, использование индекса в
таких случаях приводит только к лишнему чтению страниц индекса с
диска. Вы можете удалить такие индексы (если это не индекс по Foreign
Key).

Ну вообщем вот такие вот рекомендации да IBAnalyst



Tepex ©   (2008-11-06 17:28) [56]

[54] Спасибо! Но я уже это прочитал завтра буду экспериментировать.



पन्ने: 1 2 पूरी शाखा

फोरम: "मामले";
वर्तमान संग्रह: 2009.08.16;
डाउनलोड करें: [xml.tar.bz2];

ऊपर





मेमोरी: 0.8 एमबी
समय: 0.05 c
15-1244925005
यूरी
2009-06-14 00:30
2009.08.16
आपको जन्मदिन की शुभकामनाएं! 14 जून 2009 रविवार


15-1244723703
द्रमुक
2009-06-11 16:35
2009.08.16
काम को लेकर संदेह है


15-1245399047
वासिली इवानोविच
2009-06-19 12:10
2009.08.16
asp.net और पृष्ठ सहभागिता


15-1245161138
@ !! पूर्व
2009-06-16 18:05
2009.08.16
कंसोल निकास पर लगाव को छोड़ देता है।


2-1245284214
<AIRDIGER>
2009-06-18 04:16
2009.08.16
सामान्य तरीके से वेब लाइन





अफ्रीकी अल्बानियन अरबी भाषा अर्मेनियाई आज़रबाइजानी बस्क बेलारूसी बल्गेरियाई कैटलन सरलीकृत चीनी) चीनी पारंपरिक) क्रोएशियाई चेक डेनिश डच अंग्रेज़ी एस्तोनियावासी फिलिपिनो फिनिश फ्रेंच
गैलिशियन् जॉर्जियाई जर्मन यूनानी हाईटियन यहूदी हिंदी हंगरी आइसलैंड का इन्डोनेशियाई आयरिश इतालवी जापानी कोरियाई लात्वीयावासी लिथुआनियाई मेसीडोनियन मलायी मोलतिज़ नार्वेजियन
फ़ारसी पोलिश पुर्तगाली रोमानियाई रूसी सर्बियाई स्लोवाक स्लोवेनियाई स्पेनिश स्वाहिली स्वीडिश थाई तुर्की यूक्रेनी उर्दू वियतनामी वेल्श यहूदी बंगाली बोस्नियाई
सिबुआनो एस्पेरांतो गुजराती हौसा हमोंग ईग्बो जावानीस कन्नड़ खमेर लाओ लैटिन माओरी मराठी मंगोलियन नेपाली पंजाबी सोमाली तामिल तेलुगु योरूबा
ज़ुलु
Английский Французский Немецкий Итальянский Португальский Русский Испанский