В .NET Core приложении под высокой нагрузкой вы замечаете, что ответы API начинают задерживаться. Профилирование показывает блокировки потоков в ThreadPool. Как будете искать и устранять проблему?
Проверю, нет ли синхронных вызовов внутри async-методов (.Result, .Wait()), проанализирую contention на lock и тяжёлые операции в основном потоке. Для оптимизации — вынесу CPU-bound задачи в Task.Run или ProcessPool, ограничу параллелизм через SemaphoreSlim, а для I/O оставлю async/await без блокировок.
Библиотека собеса по С#
Библиотека собеса по С#
😁2
Каковы различные типы операторов принятия решений в C#?
Существуют различные типы операторов принятия решений, включенные в C#. Типами операторов могут быть оператор if, оператор if-else, оператор switch и оператор if-else-if.
Библиотека собеса по С#
Библиотека собеса по С#
🥱9
Объясните модификаторы доступа в C#.
Модификаторы доступа — это ключевые слова, которые определяют уровень доступности члена типа или самого типа. Например, открытый класс доступен всему миру, тогда как внутренний класс может быть доступен только сборке.
Библиотека собеса по С#
Библиотека собеса по С#
Как реализовать шаблон проектирования Singleton в C#?
Мы можем реализовать шаблон проектирования синглтона в C#, используя:
✍🏻 Непотокобезопасный синглтон;
✍🏻 Потокобезопасный синглтон;
✍🏻 Потокобезопасный синглтон с двойной проверкой блокировки;
✍🏻Потокобезопасный без блокировки;
✍🏻 Используя тип Lazy .NET 4.
Библиотека собеса по С#
Мы можем реализовать шаблон проектирования синглтона в C#, используя:
✍🏻 Непотокобезопасный синглтон;
✍🏻 Потокобезопасный синглтон;
✍🏻 Потокобезопасный синглтон с двойной проверкой блокировки;
✍🏻Потокобезопасный без блокировки;
✍🏻 Используя тип Lazy .NET 4.
Библиотека собеса по С#
This media is not supported in your browser
VIEW IN TELEGRAM
Включайте кружок там личное приглашение от спикера. 👆
Уже завтра в прямом эфире, разбираем архитектуру контекста в мультиагентных системах.
🤫 Секретный лут:
👉 Регистрируйтесь на трансляцию
Please open Telegram to view this post
VIEW IN TELEGRAM
Почему алгоритм Дейкстры не работает с отрицательными рёбрами и что использовать вместо него?
Короткий ответ: жадный выбор «замораживает» вершины, предполагая, что найденные расстояния минимальны; с отрицательными рёбрами это нарушается. Используйте Беллмана–Форда (O(VE)) для отрицательных рёбер и детекции отрицательных циклов или Джонсона для всех пар на разреженных графах. Кстати, у нас сейчас действует 40% скидка на курс Алгоритмы и структуры данных .
🤖 Осталось 4 места на курс по ИИ-агентам. Набор закрывается 30 апреля.
🔗 Успеть на обучение
Библиотека собеса по С#
🔗
Библиотека собеса по С#
Что такое делегаты в C#?
Это эквивалент указателя функции C в C#, основное отличие которого состоит в том, что делегаты C# являются типобезопасными. Это ссылочный тип, который можно использовать для обработки других функций, таких как данные. Мы можем передавать функции в качестве параметров и обрабатывать любые связанные функции обратного вызова и эвенты.
Библиотека собеса по С#
Библиотека собеса по С#
Осталось всего 4 места на курс по ИИ-агентам. 30 апреля закрываем набор окончательно.
В ГС честно рассказали:
— Кому курс не подойдет;
— Какой хардкор в программе (LangGraph, AutoGen, CrewAI);
— Как мы даем токены, чтобы вы не тратили свои деньги.
🏃♀️ Записаться, пока есть места
В ГС честно рассказали:
— Кому курс не подойдет;
— Какой хардкор в программе (LangGraph, AutoGen, CrewAI);
— Как мы даем токены, чтобы вы не тратили свои деньги.
Please open Telegram to view this post
VIEW IN TELEGRAM
Можете ли вы использовать «this» в статическом методе C#?
Нет, потому что «this» возвращает ссылку на текущий экземпляр того же класса, а статические методы не принадлежат какому-либо конкретному экземпляру, поскольку их можно вызывать только по имени класса.
Единственным исключением являются методы расширения, поскольку мы можем использовать «this» с первым параметром метода.
🤖 Осталось 4 места на курс по ИИ-агентам. Набор закрывается 30 апреля.
🔗 Успеть на обучение
Библиотека собеса по С#
Единственным исключением являются методы расширения, поскольку мы можем использовать «this» с первым параметром метода.
🔗
Библиотека собеса по С#
👍5
Когда вы используете lock, поток блокируется до тех пор, пока не завершится выполнение кода внутри блока. Операции с await требуют освобождения потока, чтобы он мог продолжить выполнение других задач, что несовместимо с блокировкой потока через lock.
Если вы хотите использовать асинхронные операции с ожиданием, следует использовать другие механизмы синхронизации, такие как SemaphoreSlim, которые поддерживают асинхронное ожидание.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
В высоконагруженном .NET Core сервисе вы замечаете рост задержек при обработке запросов. Профилирование показывает большое количество асинхронных задач в состоянии WaitingForActivation. Что это может означать и как решать проблему?
Это часто указывает на блокирующий код внутри async-методов (например, вызовы .Result или .Wait()), либо на долгие операции без await. Нужно убрать синхронные блокировки, использовать полноценный async/await, добавить таймауты, проверить сторонние библиотеки на наличие блокирующих вызовов и при необходимости вынести тяжёлые операции в отдельные потоки/процессы.
Библиотека собеса по С#
Библиотека собеса по С#
👍4❤2
В .NET Core сервисе под высокой нагрузкой вы замечаете рост задержек и частые блокировки потоков при работе с БД. Как будете искать и устранять проблему?
Проверить, не используются ли синхронные вызовы (.Result, .Wait()), профилировать async-цепочки. Убедиться, что пул подключений к БД настроен корректно, и что долгие операции не блокируют ThreadPool. Решение — переписать на полноценный async/await, оптимизировать запросы, при необходимости ограничить параллелизм через SemaphoreSlim или использовать кэширование.
Библиотека собеса по С#
Библиотека собеса по С#
🔥2😢1
В ASP.NET Core под нагрузкой растёт хвост задержек: CPU низкий, но наблюдаются пики длины очереди ThreadPool и таймауты HttpClient. Где искать корень проблемы и как её устранить?
Это типичный признак thread pool starvation из-за sync-over-async: блокировки .Result/.Wait(), синхронные I/O или тяжёлая синхронная работа в request-потоках. Диагностика — EventCounters/PerfView (ThreadPool QueueLength, Contentions), анализ async-стека. Решение — сделать путь запроса полностью асинхронным (DB/HTTP/FS), убрать блокировки, вынести CPU-bound в Task.Run/фоновые очереди, корректно использовать HttpClientFactory, и как временную меру — поднять ThreadPool.SetMinThreads.
Библиотека собеса по С#
Библиотека собеса по С#
Как используется property?
Свойство — это обёртка вокруг поля. Свойство используется как для присвоения, так и для чтения значения из поля с помощью методов set и get. Свойство можно создать для различных полей, таких как закрытые, открытые, защищённые и внутренние.
Библиотека собеса по С#
Библиотека собеса по С#
👍2🥱2
В ASP.NET Core у вас async-метод защищает кэш обычным lock и делает await внутри критической секции. Под нагрузкой — залипания и просадка RPS. В чём проблема и как починить?
await внутри lock держит монитор и блокирует потоки → contention/starvation и возможные deadlock’и. Решение: не делать await под lock; использовать ConcurrentDictionary (например, GetOrAdd с Lazy<Task<T>>) или асинхронную синхронизацию (SemaphoreSlim/AsyncLock, часто per-key), выносить await за пределы критической секции.
Библиотека собеса по С#
Библиотека собеса по С#
🦾 Почему ваши AI-продукты на базе LLM ломаются (и как это чинить)?
Выкатили ИИ-фичу в прод, а она галлюцинирует, падает или выдает мусор? Приглашаем на открытый вебинар, где разберем реальную боль внедрения LLM-агентов и научимся делать так, чтобы «всё работало».
🗓 Когда: 14 мая в 19:00 МСК
⏱️ Формат: 60 минут мяса + 30 минут ответов на ваши вопросы
🧑🏻💻 Кто вещает: Эмиль Сатаев — Backend Platform Developer (8+ лет в разработке). Человек, который своими руками внедряет LLM и агентные системы в реальные коммерческие сервисы.
🎁 Главный бонус для онлайна:
Только участникам прямого эфира подарим уникальный промокод на скидку 10.000 ₽ на большой курс AgentOps.
👉 Занять место на вебинаре
Выкатили ИИ-фичу в прод, а она галлюцинирует, падает или выдает мусор? Приглашаем на открытый вебинар, где разберем реальную боль внедрения LLM-агентов и научимся делать так, чтобы «всё работало».
🗓 Когда: 14 мая в 19:00 МСК
⏱️ Формат: 60 минут мяса + 30 минут ответов на ваши вопросы
🧑🏻💻 Кто вещает: Эмиль Сатаев — Backend Platform Developer (8+ лет в разработке). Человек, который своими руками внедряет LLM и агентные системы в реальные коммерческие сервисы.
🎁 Главный бонус для онлайна:
Только участникам прямого эфира подарим уникальный промокод на скидку 10.000 ₽ на большой курс AgentOps.
👉 Занять место на вебинаре
Что такое AJAX в ASP.NET?
Полная форма ASP.NET AJAX — это асинхронный JavaScript и XML. ASP.NET AJAX, также известный как AJAX, представляет собой набор дополнений ASP.NET . Он использует асинхронную передачу данных между браузером и веб-сервером, чтобы веб-страницы могли запрашивать небольшие фрагменты информации с сервера вместо целых страниц. Этот метод делает интернет-приложения меньше, быстрее и удобнее для пользователя. Он создан корпорацией Microsoft для выполнения функций AJAX в веб-приложениях. ASP.NET AJAX работает с библиотекой AJAX, которая использует объектно-ориентированное программирование (ООП) для более быстрых многофункциональных веб-приложений.
Библиотека собеса по С#
Библиотека собеса по С#
❤1
Как запускать один периодический джоб на весь кластер ASP.NET Core без внешнего планировщика?
Оберните BackgroundService в распределённый lock (Redis SET NX PX, Postgres advisory lock и т.п.) с heartbeats/TTL и авто-продлением; выполняйте работу только у лидера. Делайте задачи идемпотентными, держите дедлайны/отмену, при потере lock — немедленно завершайте цикл. Сохраняйте «курсор прогресса» в БД.
Библиотека собеса по С#
Библиотека собеса по С#
👍1
Как правильно реализовать освобождение ресурсов в IAsyncDisposable?
Короткий ответ: Реализуйте шаблон с охраной от повторного вызова: DisposeAsync() вызывает приватный DisposeAsyncCore() и синхронный Dispose(false), закрывает IAsyncDisposable ресурсы через await using, остальные — в Dispose. Используйте AsyncLazy/флаг disposed, прокидывайте CancellationToken только там, где это безопасно, и учитывайте, что await using всегда вызывает именно DisposeAsync().
Библиотека собеса по С#
Библиотека собеса по С#