Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

+1 512новых вакансий за сутки·54 396вакансий открыто сейчас·Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Новые вакансии в TelegramРаботодателям
Talanto
Вакансии
Компании5 565
РезюмеAIПодготовкаСтатьи
BoostТарифыBoost
Войти

Не нашли подходящее?

Пусть нужная вакансия найдёт вас сама.

  1. Подборка в TelegramНовые вакансии по вашему фильтру — сразу в бота.Подключить
  2. Мэтчи по резюмеЗагрузите резюме — покажем, где вы подходите лучше всего.Загрузить
  3. Сохранить фильтрНастройте поиск один раз и возвращайтесь к новым вакансиям.Настроить
Что нового на TalantoTalanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Для работодателей

Опубликуйте вакансию — отклики придут в ваш кабинет.

  1. Вакансиябесплатно
  2. Откликиконтакты бесплатно
  3. Наймэтапы и интервью

40 компаний публикуют вакансии напрямую · 4 395 кандидатов открыты к предложениям

Разместить вакансию

Популярные направления

Все подборки
  • Python8 752
  • Облачные технологии6 631
  • QA вакансии2 183
  • Android1 322
  • Инженер данных860
  • Продакт-менеджер316

Разработка

  • iOS1 238
  • Backend вакансии1 196
  • AI вакансии549
  • Fullstack вакансии500
  • Frontend вакансии426
  • Mobile вакансии28

По стеку

  • Go5 209
  • Java3 131
  • Kotlin1 113
  • Node.js1 008
  • Rust833
  • .NET656
  • PHP322
  • C++270
  • C#207

DevOps и инфраструктура

  • Kubernetes3 882
  • Linux-инфраструктура2 817
  • DevOps вакансии2 655
  • Terraform / IaC2 191
  • Мониторинг и Observability1 071
  • CI/CD919
  • SRE308
  • Кибербезопасность38

Аналитика и данные

  • Аналитик данных522
  • Data Scientist435
  • Бизнес-аналитик397
  • Системный аналитик67

Другие направления

  • Проджект-менеджер109
  • UI/UX дизайн67
  • Ручное тестирование14

По регионам

  • Вакансии в США22 951
  • Вакансии в Европе10 259
  • Работа в России2 963
  • Вакансии в Канаде2 034

По формату

  • Удалённые вакансии39 691
  • Релокация в США22 951
  • Гибридная работа3 633
  • Офисная работа2 761

По уровню

  • Senior вакансии19 599
  • Middle вакансии11 130
  • Junior вакансии3 562

Сейчас нанимают

Все компании
  • Wise192 вакансии
  • Rakuten189 вакансий
  • ASML163 вакансии
  • Grab134 вакансии
  • Celonis42 вакансии
  • Spotify37 вакансий
  • Adyen28 вакансий
  • Infobip28 вакансий
  • Monzo20 вакансий
  • Darktrace17 вакансий

Вакансии из 344 источников: карьерные страницы компаний и джоб-борды.

КомпанииО насНовостиПубличная офертаУсловия использованияПолитика конфиденциальностиПоддержка
←К теме TokioВсе вопросы
TokioMiddleТеория

Как профилировать и отлаживать проблемы производительности в приложении на Tokio с помощью tokio-console?

В закладки
Сначала попробуйте ответить сами30 секунд
Сравнить с ответом ↓

tokio-console — TUI-профилировщик: добавьте console-subscriber::init() и запустите tokio-console. Он показывает живые задачи, время idle/busy, ресурсы и помогает находить зависшие или busy-poll задачи.

Установка и настройка

# Установить консоль
cargo install --locked tokio-console
# Cargo.toml
[dependencies]
tokio = { version = "1", features = ["full", "tracing"] }
console-subscriber = "0.3"

[profile.release]
debug = 1 # минимальные символы для трассировки
// main.rs — вызвать до #[tokio::main] или в начале main
fn main() {
    console_subscriber::init(); // инициализирует tracing subscriber

    let rt = tokio::runtime::Builder::new_multi_thread()
        .enable_all()
        .build()
        .unwrap();

    rt.block_on(run());
}

async fn run() {
    // ваш код
}

tokio-console — инструмент профилирования Tokio

tokio-console — интерактивный терминальный профилировщик для Tokio-приложений. Он использует tracing subscriber внутри приложения и отображает живые данные о задачах, ресурсах и состоянии планировщика через gRPC.

Запуск и подключение

# В одном терминале — запустить приложение
TOKIO_CONSOLE_BIND=127.0.0.1:6669 cargo run

# В другом — открыть консоль
tokio-console
# или явно указать адрес
tokio-console http://127.0.0.1:6669

Что показывает консоль

  • Tasks: список задач с их состоянием (running / idle / scheduled), временем ожидания, числом опросов.
  • Resources: мьютексы, семафоры, каналы — показывает ожидающих и владельца.
  • Busy / idle time: соотношение рабочего и ожидающего времени задачи — аномальный idle указывает на зависание.
  • Poll count: задача с тысячами коротких опросов — кандидат на busy-polling.

Диагностика проблем

// Именуйте задачи для читаемости в консоли
let handle = tokio::task::Builder::new()
    .name("db-fetcher")
    .spawn(async move {
        // ...
    })
    .unwrap();

Дополнительные инструменты

  • TOKIO_WORKER_THREADS=1 — уменьшает параллелизм для воспроизведения гонок.
  • tracing-flame — генерирует flamegraph из tracing span'ов.
  • perf + flamegraph (Linux) — CPU профилирование на уровне системных вызовов.
  • heaptrack / cargo-flamegraph — анализ аллокаций.

Переменные окружения

  • TOKIO_CONSOLE_BIND — адрес gRPC сервера (по умолчанию 127.0.0.1:6669).
  • TOKIO_CONSOLE_RETENTION — время хранения завершённых задач (по умолчанию 60s).
  • RUST_LOG=tokio=trace — включает детальный трейсинг событий рантайма.

Подводные камни

  • Требуется feature "tracing": без features = ["tracing"] в зависимости tokio данные задач не собираются.
  • Overhead в production: console-subscriber добавляет заметные накладные расходы; не включайте в production-бинарник без явной необходимости.
  • Совместимость tracing subscriber: если приложение уже использует tracing_subscriber::fmt, нужно использовать console_subscriber::ConsoleLayer как один из слоёв через .with().
  • Имена задач только через Builder: tokio::spawn не принимает имя — только tokio::task::Builder::new().name("...").spawn(...).
  • gRPC порт занят: при запуске нескольких экземпляров приложения укажите разные TOKIO_CONSOLE_BIND для каждого.
  • Нет исторических данных: консоль показывает только текущее состояние и окно retention; для долгосрочного мониторинга используйте Prometheus + Grafana с tokio-metrics.

Типичные ошибки

  • Отвечать определением без production-сценария.
  • Не называть runtime boundary, security boundary или failure mode.
  • Игнорировать версию API, observability и тестовую проверку.

Что проверяет интервьюер

  • Объясняет механизм своими словами и без выдуманных API.
  • Называет реальные риски, диагностику и критерий корректности.
  • Связывает ответ с текущей документацией и миграционными ограничениями.

Как вы знаете этот вопрос?

Проверить себя по теме Tokio →

Источники

  • https://docs.rs/tokio/1.49.0/tokio/
←Предыдущий вопросКаковы распространённые причины async deadlock в Tokio и как их предотвратить?Следующий вопрос→Что такое structured concurrency и как `JoinSet` в Tokio поддерживает её?

Связанные темы

Tokiorisk-analysistechnical-depthtokio-productionTokio (Rust)

Частые вопросы на собеседовании

  • В каких проектах Tokio (Rust) оправдан, а где он становится источником лишней сложности?
  • Какие production или build/runtime-риски есть у Tokio (Rust): воспроизводимость, совместимость, debugging, ресурсы или supply chain?
  • Как понять, что проблема связана именно с Tokio (Rust), а не с приложением, окружением, сетью или зависимостями?
  • Какие ошибки делают команды, когда используют Tokio (Rust) без понимания его модели выполнения или сборки?