![]() |
Модераторы: gambit |
![]() ![]() ![]() |
|
Мурлыкатам_ |
|
||||||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 265 Регистрация: 5.2.2007 Где: город-герой Минск Репутация: нет Всего: 2 |
А может из-за включенного пула соединений MS SQL начать педалить рандомно? У мя минут 5 работает оки доки, потом бац - 100% проца и подвисает секунд на 20. Добавлено через 5 минут и 29 секунд
А может просто дофига в базе данных накапливается и комп не справляется? А ты пробывал заюзать CommandBehavior.CloseConnection и закрытие ридера:
Если попробуешь, отпишись плз о результатах. Добавлено через 8 минут и 5 секунд
Здесь 100% ошибка, что MySqlReader не закрыт и я полагаю, что сборку мусора тоже не стоит вызывать вручную. |
||||||||||||
|
|||||||||||||
Springtime |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 221 Регистрация: 25.10.2006 Где: Россия, Тюмень Репутация: нет Всего: 2 |
Не совсем понял ))) --------------------
ICQ: 1fe410f46e7f48f6c721bc866d8294a2 |
|||
|
||||
Мурлыкатам_ |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 265 Регистрация: 5.2.2007 Где: город-герой Минск Репутация: нет Всего: 2 |
При включенном пулинге соединений MS SQL Server 2005 может начать педалить в рандомное время? У мя ща такая проблема была, практически решилась отключением пула соединений и установкой working threads в 1024 в настройках движка базы на закладке с процессорами. Самый главный и волнующий лично меня вопрос: - Рационально, разумно, логично ли сделать SqlConnection мембер полем класса, который пишет в базу и открывать его в конструкторе класса, а затем в каждом методе просто проверять на налл и на закрытое состояние (и открывать по необходимости если оно было закрыто неожиданно). В этом случае, не нужно в каждом методе делать: 1 Создавать экземпляр класса
2 Открывать и закрывать соединение при выполнение каждой комманды (допустим прилада выполняет 1000 запросов к базе в час, так зачем нам 1000 раз создавать экземпляр класса скл соединение и 1000 раз открывать/закрывать его, на мой взгляд - это очевидное расточительство производительности). Очень буду рад если кто нить аргументировано скажет, можно так делать или не стоит так делать и почему. Спасибо. Чет я попробывал и вывалилась сразу куча проблем. Видимо есть какие то ограничения в использовани скл коннекшена, которые прост нун загуглить ![]() Это сообщение отредактировал(а) Мурлыкатам_ - 13.8.2010, 17:06 |
||||||
|
|||||||
Springtime |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 221 Регистрация: 25.10.2006 Где: Россия, Тюмень Репутация: нет Всего: 2 |
Так у тебя же запрос будет производиться в методе? если я правильно понял, вот там открывай и закрывай сразу а так я бы сделал статический метод в классе где в самом классе идёт его настройка на этапе компиляции, а при вызове метода соответственно подключение и отключение к базе без создания множества раз экземпляра класса если я тебя правильно понял а так по существу, множество раз делать -
это норма, по сути ADO.NET для этого и делался Это сообщение отредактировал(а) Springtime - 13.8.2010, 20:24 --------------------
ICQ: 1fe410f46e7f48f6c721bc866d8294a2 |
||||
|
|||||
kokcu |
|
||||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 69 Регистрация: 23.3.2009 Репутация: нет Всего: нет |
Вот так нужно?
А пул нужно в таком случае отключать?
Здесь часто мелькает mssql, я с mysql работаю, или разницы нет?
Выполняются восновном update запросы. Добавляется редко. А нагрузка примерно 2-5 команд в секунду. Это сообщение отредактировал(а) kokcu - 13.8.2010, 23:35 |
||||||
|
|||||||
mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 5 Всего: 306 |
не совсем. либо используй command.ExecuteReader в блоке using, либо закрывай Reader в finally. зачем тебе здесь Reader не ясно, полагаю код опустил. и зачем повторно закрываешь соединение (command.ExecuteReade(CommandBehavior.CloseConnection) & connection.Close())? хотя это не смертельно. типа того. это как посмотреть. |
|||
|
||||
kokcu |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 69 Регистрация: 23.3.2009 Репутация: нет Всего: нет |
Отписываюсь о результатах.
Привело к падению программы без ошибок через 10 минут, и так несколько раз(
Попробую так, главное чтоб проработало сутки. Ошибку исправил с закрытием ридера. А нужно Dispose вызывать? Или Close достаточно? |
||||
|
|||||
mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 5 Всего: 306 |
само по себе без разницы. но если есть Close - то его. Типа читаемость лучше и блаблабла. я тебе в самом начале рекомендовал не отказывать от пула, а закрывать соединения приведенными статическими методами, с каким нибудь интервалом. |
|||
|
||||
kokcu |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 69 Регистрация: 23.3.2009 Репутация: нет Всего: нет |
Кстате раз в минуту по таймеру делается Очистка всех пулов.
Но висеть sleep все равно остаются |
|||
|
||||
whoever |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 85 Регистрация: 5.7.2007 Репутация: нет Всего: 1 |
Вполне возможно, что пул переполняется из-за незакрытых соединений в результате ошибок. Вы же не вызываете Dispose или Close гарантированно (Dispose в случае с SqlConnection [подозреваю, что и с MySqlConnection] делает то же самое, что и Close). Используйте using, либо делайте класс (в который оборачиваете подключение и непосредственную работу с базой) IDisposable, в методе Dispose которого проверяйте, закрыто ли подключение, и если нет, то закрывайте, а сам класс используйте вкупе с using.
|
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Базы данных под .NET | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |