Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Достигнут максимальный размер пула. Как можно найти причину
|
|||
|---|---|---|---|
|
#18+
Добрый день! Над проектом работало очень много людей, в итоге в последнее время стала очень часто возникать ошибка - Достигнут максимальный размер пула. Можно ли как то средствами Sql Server понять где мы не закрываем подключение? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2018, 10:34 |
|
||
|
Достигнут максимальный размер пула. Как можно найти причину
|
|||
|---|---|---|---|
|
#18+
Попробуйте может поможет. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. А вообще вам надо бы код клиента подправить. В идеале у вас должен быть один общий метод который открывает соединение выполняет запрос и закрывает его. Его нужно использовать во всех DA методах. Вот вам примерчик на C#, думаю идея понятна. (PS: код тут написал, так что может содержать ошибки.) Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2018, 11:46 |
|
||
|
Достигнут максимальный размер пула. Как можно найти причину
|
|||
|---|---|---|---|
|
#18+
D_A_S1, емнип на C# клиенте надо вызывать не только клозе, но и дисконнект. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2018, 10:56 |
|
||
|
Достигнут максимальный размер пула. Как можно найти причину
|
|||
|---|---|---|---|
|
#18+
Владислав КолосовD_A_S1, емнип на C# клиенте надо вызывать не только клозе, но и дисконнект. В каком классе и какой это метод? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2018, 11:25 |
|
||
|
Достигнут максимальный размер пула. Как можно найти причину
|
|||
|---|---|---|---|
|
#18+
Владимир Затуливетер Код: c# 1. Dispose будет автоматически вызван при вызове Finalize сборщиком мусора. Вот так и получается превышение размера пула коннектов (или, если не повезёт, превышения не будет, но программа будет работать медленно). документацияAlways call Dispose before you release your last reference to the Component. Otherwise, the resources it is using will not be freed until the garbage collector calls the Component object's Finalize method. Нужно всегда явно закрывать соединение. Или хотя бы явно вызвать Dispose Владимир ЗатуливетерВ идеале у вас должен быть один общий метод который открывает соединение выполняет запрос и закрывает его. Его нужно использовать во всех DA методах. Не то, что "в идеале", а абсолютно обязательно. Это по моему понимает любой программист после первой написанной программы :-) Потому что при малейшей правке приходится лазить по всему коду. Не говоря уже об ошибках из за описки или невнимательности. Владислав Колосовемнип на C# клиенте надо вызывать не только клозе, но и дисконнект.Не, нету никакого "дисконнект", в классах доступа к БД это называется Close ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2018, 11:30 |
|
||
|
Достигнут максимальный размер пула. Как можно найти причину
|
|||
|---|---|---|---|
|
#18+
alexeyvgDispose будет автоматически вызван при вызове Finalize сборщиком мусора. В интернетах пишут что это не так, и, цитирую Eric JThe connection is disposed immediately after going out of scope of the using statement. That has nothing to do with garbage collection. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2018, 15:26 |
|
||
|
Достигнут максимальный размер пула. Как можно найти причину
|
|||
|---|---|---|---|
|
#18+
Диклевич АлександрalexeyvgDispose будет автоматически вызван при вызове Finalize сборщиком мусора. В интернетах пишут что это не так, и, цитирую Eric JThe connection is disposed immediately after going out of scope of the using statement. That has nothing to do with garbage collection.Не знаю, может, это в новых версиях так работает? Я процитировал документацию к .NET Framework, версии 3.5, 3.0, 2.0, 1.1, 1.0 И сам видел описанное мной поведение, но давно, много лет назад, когда ещё писал на C# А, вот, Владимир Затуливетер использует using , а для неё вызов Dispose гарантируется, это я не учёл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2018, 15:58 |
|
||
|
Достигнут максимальный размер пула. Как можно найти причину
|
|||
|---|---|---|---|
|
#18+
Да, Close() не обязательно вызывать т.к. ипользуется using в приведенном коде. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2018, 17:11 |
|
||
|
Достигнут максимальный размер пула. Как можно найти причину
|
|||
|---|---|---|---|
|
#18+
Подскажите, пожалуйста. Ищу, где могут быть проблемы. У меня есть вот метод, который заполняет объекты класса: Код: c# 1. 2. 3. 4. 5. Класс RequestTransaction имеет следующее: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. Класс Office имеет следующее: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. У меня вопрос: первоначальный метод использует свое подключение и заполняет список RequestTransaction. У каждого объекта RequestTransaction нужно определить офис, для этого используется метод, где также идет открытие своего подключения к БД. В таком случае будут ли корректно закрываться соединения? Получается что одно соединение вложено в другое ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2018, 12:36 |
|
||
|
Достигнут максимальный размер пула. Как можно найти причину
|
|||
|---|---|---|---|
|
#18+
D_A_S1, Вы пишете приложение для одного пользователя или многопользовательское? Один тип источника поступления данных или несколько? По коду уже видно, что приложение будет затруднительно сопровождать и развивать как многопользовательское или неавтономное. По вопросам C# Вам лучше обратиться на специализированный форум. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2018, 13:45 |
|
||
|
Достигнут максимальный размер пула. Как можно найти причину
|
|||
|---|---|---|---|
|
#18+
D_A_S1Подскажите, пожалуйста. Ищу, где могут быть проблемы. У меня есть вот метод, который заполняет объекты класса:Мы же не видим ваш код (может, конечно, на форуме C# разобрались бы...) Что у вас за DBModule.NewSqlConnection? Что у него за метод такой, Query? Типами щас вообще не пользуются, везде "var", как в бейсике :-) В общем, по фрагменту непонятно, как это работает. Вам писали, как себя ведут классы SqlConnection из System.Data.SqlClient, но что там у вас - непонятно. И ещё, вам советовали, как избежать таких ошибок в принципе, потому что даже если в приведённом коде ошибки нет, то весь код приложения представляет из себя адскую лапшу, в которой может затесаться непонятно что. По поводу правильности конкретно этого кода - в общем достаточно сделать тестовую функцию с вызовами вашего кода, и посмотреть на сиквеле профайлером, закрываются ли коннекты, или нет (точнее, возвращаются ли они в пул). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2018, 15:23 |
|
||
|
Достигнут максимальный размер пула. Как можно найти причину
|
|||
|---|---|---|---|
|
#18+
Код: c# 1. Вот так не делайте, это вообще "кривой" подход. На каждую вашу транзакцию (RequestTransaction) будете дергать Office.GetById. Это очень тормознуто и затратно по ресурсам. Вот так надо: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2018, 22:37 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=39686754&tid=1689255]: |
0ms |
get settings: |
13ms |
get forum list: |
19ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
35ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
32ms |
get tp. blocked users: |
1ms |
| others: | 258ms |
| total: | 374ms |

| 0 / 0 |
