Comments 12
У одного из хостеров есть такой пунктик:
" Помимо защиты от DDoS на маршрутизаторе, дополнительно установлены ограничения на 30 одновременных соединений на реверсном прокси nginx и 30 одновременных соединений на MySQL. Что достаточно для того, что б злоумышленник не вывел сервер из строя.
"
" Помимо защиты от DDoS на маршрутизаторе, дополнительно установлены ограничения на 30 одновременных соединений на реверсном прокси nginx и 30 одновременных соединений на MySQL. Что достаточно для того, что б злоумышленник не вывел сервер из строя.
"
0
Повнимательнее почитайте литературу по linq to sql
1. (Из MSDN) Не пытайтесь повторно использовать экземпляры DataContext. Каждый DataContext сохраняет состояние (включая кэш идентификации) для одного определенного сеанса редактирования/запроса. Для получения новых экземпляров на основе текущего состояния базы данных используйте новый DataContext.
2. using можно не использовать. Дата контекст открывает и закрывает соединение когда это необходимо. IDisposable добавлен, видимо, для расширяемости.
1. (Из MSDN) Не пытайтесь повторно использовать экземпляры DataContext. Каждый DataContext сохраняет состояние (включая кэш идентификации) для одного определенного сеанса редактирования/запроса. Для получения новых экземпляров на основе текущего состояния базы данных используйте новый DataContext.
2. using можно не использовать. Дата контекст открывает и закрывает соединение когда это необходимо. IDisposable добавлен, видимо, для расширяемости.
+5
При чем самое веселове это когда ошибку нельзя увидеть на сайте, но на SQL Server она в Event Log-е…
0
*веселое
0
msdn.microsoft.com/ru-ru/library/bb386929.aspx тут то, о чем сказал Ordos
0
Кхе… Если оба этих метода вызываются с одной страницы, то нагрузка на сервер возрастает в 2 раза. У тебя 2 раза выполняется один и тот же запрос. Нельзя было как-то через отдельное свойство это сделать, которое инициализировалось бы в конструкторе?
0
да сейчас уже используется свойство, просто так нагляднее показать «ошибку» с датаконтекстом.
0
А то и в три, если тайтл выводится и в заголовок браузера, и на саму страницу
0
в 2 ибо было так:
а стало так:
[OutputCache(Location = OutputCacheLocation.Server, Duration = 600, VaryByParam = "None")]
public ActionResult Catering()
{
ViewData["Title"] = "Кейтеринг";
ViewData["PageText"] = CustomPages.PageText("Catering");
ViewData["PageTitle"] = CustomPages.PageTitle("Catering");
return View();
}
* This source code was highlighted with Source Code Highlighter.
а стало так:
[OutputCache(Location = OutputCacheLocation.Server, Duration = 600, VaryByParam = "None")]
public ActionResult Catering()
{
CustomPages page = new CustomPages("Catering");
ViewData["Title"] = "Кейтеринг";
ViewData["PageText"] = page.CustomPage.PageText;
ViewData["PageTitle"] = page.CustomPage.PageTitle;
return View();
}
* This source code was highlighted with Source Code Highlighter.
0
в своем проекте, мы пользуемся такой техникой: создается один контекст на один запрос к серверу. реализуется очень просто.
пользоваться примерно так: var db = DbHelper.Context();
Copy Source | Copy HTML
- /// <summary>
- /// Класс вспомогательных методов для работы с БД
- /// </summary>
- public static class DbHelper
- {
- /// <summary>
- /// Получаем объект-датаконтекст из текущего хранилища
- /// </summary>
- /// <typeparam name="T">
- /// Тип контекста
- /// </typeparam>
- /// <returns>
- /// Объект датаконтекста
- /// </returns>
- public static T Context<T>() where T : DataContext, IDataContext, new()
- {
- if (HttpContext.Current.Items[typeof(T).FullName] == null)
- {
- var obj = new T();
- HttpContext.Current.Items[typeof(T).FullName] = obj;
- }
-
- return (T)HttpContext.Current.Items[typeof(T).FullName];
- }
-
- }
пользоваться примерно так: var db = DbHelper.Context();
0
Sign up to leave a comment.
Ошибки LINQ to SQL на сайтах при нагрузке (> 30 пользователей)