Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
ASP MVC 5 Периодически исключение
|
|||
|---|---|---|---|
|
#18+
Всем привет! Ребят помогите найти причину ошибки... Есть сайт ASP MVC 5 + dapper, 1-2 раза в день вижу ошибку в логе: System.OutOfMemoryException Выдано исключение типа "System.OutOfMemoryException". в BusinessLayer.Events.EventsManager.EventDetailed(Int32 id) в WEB.Controllers.EventsController.Event(Int32 id) в D:\BACKUP\***\WEB\Controllers\EventsController.cs:строка 86 в lambda_method(Closure , ControllerBase , Object[] ) в System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters) в System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) в System.Web.Mvc.Async.AsyncControllerActionInvoker.<BeginInvokeSynchronousActionMethod>b__39(IAsyncResult asyncResult, ActionInvocation innerInvokeState) в System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`2.CallEndDelegate(IAsyncResult asyncResult) в System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult) в System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3d() в System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f() в System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethodWithFilters(IAsyncResult asyncResult) в System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass21.<>c__DisplayClass2b.<BeginInvokeAction>b__1c() в System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass21.<BeginInvokeAction>b__1e(IAsyncResult asyncResult) запрос: (BusinessLayer.Events.EventsManager.EventDetailed(Int32 id)) Код: sql 1. Таблицы: Код: sql 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. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. План выполнения - сразу возникает вопрос - почему в таблицу вью 38% стоимость? Там наверно нужны дополнительные индексы? PS сейчас статистику просмотра страниц отключил (то есть в табличку вью не идет апдейт + 1 при посещении страницы, так как при наплывал людей часто падал сайт) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2017, 17:06 |
|
||
|
ASP MVC 5 Периодически исключение
|
|||
|---|---|---|---|
|
#18+
план выполнения - http://dl3.joxi.net/drive/2017/05/04/0000/0020/4116/16/caa9e4ba7c.jpg ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2017, 17:07 |
|
||
|
ASP MVC 5 Периодически исключение
|
|||
|---|---|---|---|
|
#18+
вернее в таблицу связи Rel_Events_Date 38% ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2017, 17:08 |
|
||
|
ASP MVC 5 Периодически исключение
|
|||
|---|---|---|---|
|
#18+
Event_Id - это где и что? и почему запрос не параметрический? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2017, 17:22 |
|
||
|
ASP MVC 5 Периодически исключение
|
|||
|---|---|---|---|
|
#18+
Konst_One Event_Id - это где и что? и почему запрос не параметрический? это я готовый пример взял, вот весь метод (BusinessLayer.Events.EventsManager.EventDetailed(Int32 id)): Код: sql 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2017, 17:24 |
|
||
|
ASP MVC 5 Периодически исключение
|
|||
|---|---|---|---|
|
#18+
Sputnick, Код: c# 1. эм нафига ты так делаешь? параметры открой для себя ну сколько на серваке памяти? мож течет по памяти ? по запросу ну форматирование сделал бы для приличия, а так схема без явного указания join читает плохо не рекомендую, вопросу индексов смотреть надо что тащишь.. ну я вижу по полям склейки ты не везде индексы, обычно по fk делают некластерные индексы для джойна( а там можно и инклуд индексы) п.с. ну дружище 21 век открой для себя log4net/nlog, вместо StreamWriter ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2017, 23:01 |
|
||
|
ASP MVC 5 Периодически исключение
|
|||
|---|---|---|---|
|
#18+
handmadeFromRuSputnick, Код: c# 1. эм нафига ты так делаешь? параметры открой для себя ну сколько на серваке памяти? мож течет по памяти ? по запросу ну форматирование сделал бы для приличия, а так схема без явного указания join читает плохо не рекомендую, вопросу индексов смотреть надо что тащишь.. ну я вижу по полям склейки ты не везде индексы, обычно по fk делают некластерные индексы для джойна( а там можно и инклуд индексы) п.с. ну дружище 21 век открой для себя log4net/nlog, вместо StreamWriter Спасибо за ответ. 1) Параметрический запрос это: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. ? У меня в некоторых простых местах так осталось по старинке, а вообще модель + параметры: Код: sql 1. 2. Какие преимущества у запросов с параметрами? 2) ну сколько на серваке памяти? мож течет по памяти ? -- Это вирт хостинг. 512. Вряд ли, так как на таком же хостинге/тарифе сидел новостной сайт asp mvc 4 + EF5 с дико не оптимизированными запросами которые EF генерирует и таких ошибок не было. 3) п.с. ну дружище 21 век открой для себя log4net/nlog, вместо StreamWriter - проект не сложный, читал что либы логирования много ресурсов отъедают. Хотя может это экономия на списках.... для себя уже выбрал serilog 4) Так, значит я перепишу запрос с джойном. А тут - ( а там можно и инклуд индексы) - не понял... мож пж подробней ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2017, 06:30 |
|
||
|
ASP MVC 5 Периодически исключение
|
|||
|---|---|---|---|
|
#18+
Sputnick1) Параметрический запрос это? Какие преимущества у запросов с параметрами? да, защита от sql инъекции, это основы основ SputnickЭто вирт хостинг. 512. Вряд ли, так как на таком же хостинге/тарифе сидел новостной сайт asp mvc 4 + EF5 с дико не оптимизированными запросами которые EF генерирует и таких ошибок не было. ну не оптимизированые запросы эт как бы больше к времени выполнение чем outofmemory, ну виртуальный эт шаред чтоль? у тебя мог ресурсы выжрать соседний сайт к примеру. а если выделенный сервак то ваще не будет работать так как винда серверная гиг сжирает, ну виндус нано можно но я хз как там с иис поработать. Sputnickпроект не сложный, читал что либы логирования много ресурсов отъедают. Хотя может это экономия на списках.... для себя уже выбрал serilog много эт сколько? там тот же внутри тот же StreamWriter если fileappender, и чуть кода для удобства Sputnick4) Так, значит я перепишу запрос с джойном. А тут - ( а там можно и инклуд индексы) - не понял... мож пж подробней [/quot] https://msdn.microsoft.com/ru-ru/library/ms190806.aspx пока рано смотреть в сторону include index, просто так индексы лепить на все подряд не стоит можешь и хуже сделать, сделай некластерный индекс по полям склейки таблиц и посмотри план запроса, сам по себе запрос не содержи ничего сложного прост Join-ы и все. не должно тормозить или что то еще. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2017, 08:47 |
|
||
|
ASP MVC 5 Периодически исключение
|
|||
|---|---|---|---|
|
#18+
так, запрос переписал на джойны: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. время выполнения такое же как и в старом варианте запроса - 125 мс убрал пометку "кластеризованый" индекс с трех индексов, теперь план выполнения такой - http://joxi.ru/0KAgMW4IRV3Nml ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2017, 09:14 |
|
||
|
ASP MVC 5 Периодически исключение
|
|||
|---|---|---|---|
|
#18+
Sputnickубрал пометку "кластеризованый" индекс с трех индексов а зачем? пытаюсь понять ход твоих мыслей. вкрации 1) кластерный индекс на первичным ключе убирать не надо 2) добавить некластернный индекс на поля склейки таблиц ну и почитать можно тут http://www.sql.ru/articles/mssql/03013101indexes.shtml ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2017, 09:45 |
|
||
|
ASP MVC 5 Периодически исключение
|
|||
|---|---|---|---|
|
#18+
handmadeFromRuSputnickубрал пометку "кластеризованый" индекс с трех индексов а зачем? пытаюсь понять ход твоих мыслей. вкрации 1) кластерный индекс на первичным ключе убирать не надо 2) добавить некластернный индекс на поля склейки таблиц ну и почитать можно тут http://www.sql.ru/articles/mssql/03013101indexes.shtml Вы поосторожнее с такими советами, особенно когда даёте их тем, кто не в теме. У ТСа был хороший план, где надо было разобраться с одним Clustered Index Scan, а теперь у него сплошные Key Lookup-ы :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2017, 10:25 |
|
||
|
ASP MVC 5 Периодически исключение
|
|||
|---|---|---|---|
|
#18+
Sputnick, какие поля у Вас выбираются из таблицы Rel_Events_Date? Из запроса не понятно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2017, 10:30 |
|
||
|
ASP MVC 5 Периодически исключение
|
|||
|---|---|---|---|
|
#18+
skyANASputnick, какие поля у Вас выбираются из таблицы Rel_Events_Date? Из запроса не понятно. никаких, это связная таблица, которая связывает таблицу дат событий Date_Events и сами события Events, она (Rel_Events_Date) нужна, так как я с ней работаю для изощренной выборки для рассылки персональных уведомлений подписчикам по дате, категории и т д ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2017, 10:42 |
|
||
|
ASP MVC 5 Периодически исключение
|
|||
|---|---|---|---|
|
#18+
skyANAhandmadeFromRuпропущено... а зачем? пытаюсь понять ход твоих мыслей. вкрации 1) кластерный индекс на первичным ключе убирать не надо 2) добавить некластернный индекс на поля склейки таблиц ну и почитать можно тут http://www.sql.ru/articles/mssql/03013101indexes.shtml Вы поосторожнее с такими советами, особенно когда даёте их тем, кто не в теме. У ТСа был хороший план, где надо было разобраться с одним Clustered Index Scan, а теперь у него сплошные Key Lookup-ы :) а что я плохо посоветовал? я ж не виноват что он убрал их, поэтому я и направил на статью чтоб он прочитал и понял принципы индексов, так как вижу что он плывет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2017, 12:08 |
|
||
|
ASP MVC 5 Периодически исключение
|
|||
|---|---|---|---|
|
#18+
handmadeFromRuskyANAпропущено... Вы поосторожнее с такими советами, особенно когда даёте их тем, кто не в теме. У ТСа был хороший план, где надо было разобраться с одним Clustered Index Scan, а теперь у него сплошные Key Lookup-ы :) а что я плохо посоветовал? я ж не виноват что он убрал их, поэтому я и направил на статью чтоб он прочитал и понял принципы индексов, так как вижу что он плывет. Для того запроса, что тут обсуждается не нужен "некластернный индекс на поля склейки таблиц". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2017, 13:45 |
|
||
|
ASP MVC 5 Периодически исключение
|
|||
|---|---|---|---|
|
#18+
SputnickskyANASputnick, какие поля у Вас выбираются из таблицы Rel_Events_Date? Из запроса не понятно. никаких, это связная таблица, которая связывает таблицу дат событий Date_Events и сами события Events, она (Rel_Events_Date) нужна, так как я с ней работаю для изощренной выборки для рассылки персональных уведомлений подписчикам по дате, категории и т д Значит скорее всего Вы не то выбрали для Primary Key в ней. Покажите полную инструкцию CREATE для неё. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2017, 13:47 |
|
||
|
ASP MVC 5 Периодически исключение
|
|||
|---|---|---|---|
|
#18+
skyANASputnickпропущено... никаких, это связная таблица, которая связывает таблицу дат событий Date_Events и сами события Events, она (Rel_Events_Date) нужна, так как я с ней работаю для изощренной выборки для рассылки персональных уведомлений подписчикам по дате, категории и т д Значит скорее всего Вы не то выбрали для Primary Key в ней. Покажите полную инструкцию CREATE для неё. сейчас вроде все правильно, для первичных ключей кластерный (Rel_Events_Date_Id), а дополнительные для склейки обычный индекс (Event): Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2017, 14:39 |
|
||
|
ASP MVC 5 Периодически исключение
|
|||
|---|---|---|---|
|
#18+
handmadeFromRuSputnick1) Параметрический запрос это? Какие преимущества у запросов с параметрами? ну не оптимизированые запросы эт как бы больше к времени выполнение чем outofmemory, ну виртуальный эт шаред чтоль? у тебя мог ресурсы выжрать соседний сайт к примеру. а если выделенный сервак то ваще не будет работать так как винда серверная гиг сжирает, ну виндус нано можно но я хз как там с иис поработать. ну не оптимизированые запросы эт как бы больше к времени выполнение ---- да, новостной этот сайт перекочевал на вдс, без кеширования таймаут соединения с бд часто выскакивает, с кешированием летает все. а если выделенный сервак то ваще не будет работать так как винда серверная гиг сжирает ---- 1 гиг оперативы, 2012 r2 сервер и 200 метров еще свободно. Слышал можно запускать вин сервер без оболочки, чтобы только службы работали.... меньше чтоб оперативы отъедало. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2017, 14:47 |
|
||
|
ASP MVC 5 Периодически исключение
|
|||
|---|---|---|---|
|
#18+
похоже индекс один провтыкал, в таблице Rel_Events_Date поле Date_id, по нем связывается с таблицей Date_Events ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2017, 15:13 |
|
||
|
ASP MVC 5 Периодически исключение
|
|||
|---|---|---|---|
|
#18+
skyANAДля того запроса, что тут обсуждается не нужен "некластернный индекс на поля склейки таблиц". эм вообще то нужен, у него ни по одному fk(хотя он их даже не разметил судя по схеме) не было индекса, только на первичные ключи. так что твой коммент что я учу плохому считаю не уместным к примеру вот у него есть склейка с Rel_Events_Date через Event, где Event просто поле и все. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2017, 16:48 |
|
||
|
ASP MVC 5 Периодически исключение
|
|||
|---|---|---|---|
|
#18+
handmadeFromRuskyANAДля того запроса, что тут обсуждается не нужен "некластернный индекс на поля склейки таблиц". эм вообще то нужен, у него ни по одному fk(хотя он их даже не разметил судя по схеме) не было индекса, только на первичные ключи. так что твой коммент что я учу плохому считаю не уместным к примеру вот у него есть склейка с Rel_Events_Date через Event, где Event просто поле и все. Ты первый план смотрел? Зачем там дополнительные индексы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2017, 17:05 |
|
||
|
ASP MVC 5 Периодически исключение
|
|||
|---|---|---|---|
|
#18+
skyANA, конечно смотрел, и написал что считается хорошим тоном вешать некластренный индекс на поле склейки таблиц, в чем мой совет не очень? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2017, 17:14 |
|
||
|
ASP MVC 5 Периодически исключение
|
|||
|---|---|---|---|
|
#18+
skyANA, тем более у него поля должны быть судя по схеме как fk дабы была целостность структуры ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2017, 17:18 |
|
||
|
ASP MVC 5 Периодически исключение
|
|||
|---|---|---|---|
|
#18+
SputnickskyANAпропущено... Значит скорее всего Вы не то выбрали для Primary Key в ней. Покажите полную инструкцию CREATE для неё. сейчас вроде все правильно, для первичных ключей кластерный (Rel_Events_Date_Id), а дополнительные для склейки обычный индекс (Event): Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. Поле Rel_Events_Date_Id лишнее и Rel_Events_Date_idx не нужен. Сделайте просто кластерный индекс по обоим полям: Код: sql 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2017, 17:45 |
|
||
|
ASP MVC 5 Периодически исключение
|
|||
|---|---|---|---|
|
#18+
skyANASputnickпропущено... [/src] Поле Rel_Events_Date_Id лишнее и Rel_Events_Date_idx не нужен. Сделайте просто кластерный индекс по обоим полям: Код: sql 1. 2. 3. 4. 5. блин, он же Rel_Events_Date_Id действительно избыточный, спасибо, перестрою запросы на сайте, посмотрю как план изменится ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2017, 09:09 |
|
||
|
|

start [/forum/topic.php?fid=18&fpage=28&tid=1355526]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
22ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
67ms |
get tp. blocked users: |
2ms |
| others: | 224ms |
| total: | 355ms |

| 0 / 0 |
