fbserver кушает 100% проца (думаю, это не сборка мусора)
Добавлено: 09 июн 2009, 17:03
Win 2000, XP Pro, Home...
SS (на CS такой проблемы нет (хотя тестов было мало), но CS и не совсем подходит)
FB 1.5.*, 2.0.*, 2.1.*
Dialect 1
EVENT'ов нет
foreign key'ев нет
Антивирусов нет
Фаерволов нет
Немного предистории.
Программа работает с 2003 года. Сотни мазазинов и АЗС в Украине.
Изначально работала на FB 1.0.* - подобных проблем не возникало.
В 2007 году появились первые "ласточки". Но тогда я думал, что это из-за
уже довольно большого размера баз (за несколько лет базы выросли до 400-600Мб).
Но сейчас такие проблемы начали встречаться все чаще, и даже на только что созданных
базах, которые работают около месяца (размером в 30-50Мб).
Итак: ни с того, ни с сего fbserver.exe начинает жрать 100% проца при коннекте к базе (любом - в т.ч. из IBExpert, gbak...).
Иногда - не сразу при коннекте, а при попытке просмотреть данные любой не пустой таблицы(как в данном примере).
Проявляется очень редко, но регулярно. Повторить практически не удается. Но сейчас мне удалось достать базу в таком состоянии.
Вот база:
http://www.utncard.com/bugs/M_POS_100p.rar
(архив 10Мб)
Вот статистика:
http://www.utncard.com/bugs/stat_100p.txt
Работа с базой происходит следующим образом (в данном случае): один компьютер, коннект чз LOCALHOST:D:\...\m_pos.gdb,
с базой работает несколько приложений, каждое из которых может иметь с ней одновременно несколько соединений (из dll-плугинов и из основной проги).
В одной из программ идет одновременная работа с базой из двух потоков (ч-з 2-й коннект, всё "по науке").
В среднем одновременно получается не более 10 коннектов к этой базе.
Некоторые коннекты висят, пока работает система. Иногда неделями, иногда несколько дней - до перезагрузки компа. Некоторые - временные.
С появлением FB 2.0 я экспериментировал с GCPolicy - ставил любые варианты - всё безуспешно.
Заметил: если такое с базой произошло - то будет происходить и позже примерно раз в месяц. Но есть базы, огромные, с которыми за многие годы такого не было и нет.
Сейчас же эта проблема просто горит: на свежих базах у новых клиентов такое поведение появляется практически сразу,
что очень опасно - можем их из-за этого потерять.
Да, совсем забыл сказать. Лечится это с помощью бубна: иногда помогает перезапустить компьютер (раз 5 или 8 ), иногда - бэкап/рестор (если удастся).
Чаще всего - подождать минут 40-240(!), и сервер сам успокаивается. Прямо как после сборки мусора.
Самое интересное - со всех магазинов/АЗС все данные стекаются в филиальные/центральные базы, размеры которых достигают десятков Гб - проблем никаких, в т.ч. и этих.
Если есть хотябы какие-то мысли, почему такое происходит - говорите, пожалуйста - буду рад всему.
Ну а если подскажете, что можно сделать, чтобы избавиться от этой проблемы - тем более
Заранее всем спасибо.
SS (на CS такой проблемы нет (хотя тестов было мало), но CS и не совсем подходит)
FB 1.5.*, 2.0.*, 2.1.*
Dialect 1
EVENT'ов нет
foreign key'ев нет
Антивирусов нет
Фаерволов нет
Немного предистории.
Программа работает с 2003 года. Сотни мазазинов и АЗС в Украине.
Изначально работала на FB 1.0.* - подобных проблем не возникало.
В 2007 году появились первые "ласточки". Но тогда я думал, что это из-за
уже довольно большого размера баз (за несколько лет базы выросли до 400-600Мб).
Но сейчас такие проблемы начали встречаться все чаще, и даже на только что созданных
базах, которые работают около месяца (размером в 30-50Мб).
Итак: ни с того, ни с сего fbserver.exe начинает жрать 100% проца при коннекте к базе (любом - в т.ч. из IBExpert, gbak...).
Иногда - не сразу при коннекте, а при попытке просмотреть данные любой не пустой таблицы(как в данном примере).
Проявляется очень редко, но регулярно. Повторить практически не удается. Но сейчас мне удалось достать базу в таком состоянии.
Вот база:
http://www.utncard.com/bugs/M_POS_100p.rar
(архив 10Мб)
Вот статистика:
http://www.utncard.com/bugs/stat_100p.txt
Работа с базой происходит следующим образом (в данном случае): один компьютер, коннект чз LOCALHOST:D:\...\m_pos.gdb,
с базой работает несколько приложений, каждое из которых может иметь с ней одновременно несколько соединений (из dll-плугинов и из основной проги).
В одной из программ идет одновременная работа с базой из двух потоков (ч-з 2-й коннект, всё "по науке").
В среднем одновременно получается не более 10 коннектов к этой базе.
Некоторые коннекты висят, пока работает система. Иногда неделями, иногда несколько дней - до перезагрузки компа. Некоторые - временные.
С появлением FB 2.0 я экспериментировал с GCPolicy - ставил любые варианты - всё безуспешно.
Заметил: если такое с базой произошло - то будет происходить и позже примерно раз в месяц. Но есть базы, огромные, с которыми за многие годы такого не было и нет.
Сейчас же эта проблема просто горит: на свежих базах у новых клиентов такое поведение появляется практически сразу,
что очень опасно - можем их из-за этого потерять.
Да, совсем забыл сказать. Лечится это с помощью бубна: иногда помогает перезапустить компьютер (раз 5 или 8 ), иногда - бэкап/рестор (если удастся).
Чаще всего - подождать минут 40-240(!), и сервер сам успокаивается. Прямо как после сборки мусора.
Самое интересное - со всех магазинов/АЗС все данные стекаются в филиальные/центральные базы, размеры которых достигают десятков Гб - проблем никаких, в т.ч. и этих.
Если есть хотябы какие-то мысли, почему такое происходит - говорите, пожалуйста - буду рад всему.
Ну а если подскажете, что можно сделать, чтобы избавиться от этой проблемы - тем более

Заранее всем спасибо.