socket_send_timeout

Директива `wasm_socket_send_timeout` устанавливает максимальное время отправки данных через сокет WebAssembly в NGINX.

Синтаксисwasm_socket_send_timeout time;
По умолчанию60s
Контекст
Аргументы1

Описание

Директива wasm_socket_send_timeout задаёт длительность таймаута для отправки данных через сокет WebAssembly. Эта директива особенно актуальна в средах, где NGINX расширен возможностями WebAssembly, что позволяет дополнительно контролировать, как долго операции с сокетом могут блокироваться до истечения таймаута. Основная полезность этой директивы заключается в оптимизации производительности приложений, выполняющихся в NGINX с встроенными модулями WebAssembly, предотвращая их бесконечную блокировку во время операций отправки из‑за сетевых проблем или неотзывчивых пиров.

Директива принимает один аргумент — длительность таймаута, указываемую в секундах или в формате, совместимом с временными директивами NGINX (например, 60s, 1m и т.д.). При превышении указанной длительности соединение будет завершено, и будет возвращена ошибка. Это важно для поддержания устойчивости приложений, зависящих от передачи данных в реальном времени, поскольку гарантирует, что приложение не будет удерживать ресурсы дольше, чем необходимо.

При настройке этой директивы важно выбрать значение, обеспечивающее баланс между производительностью и надёжностью. Слишком короткий таймаут может привести к частым разрывам соединений, тогда как слишком длинный — к тому, что ресурсы будут заняты дольше, чем хотелось бы, во время операций отправки по сокету.

Пример конфига

wasm {
    module my_filter /path/to/filter.wasm;
}

http {
    server {
        listen 9000;

        location / {
            proxy_wasm my_filter;
            proxy_pass http://backend;
        }
    }
    wasm_socket_send_timeout 30s;
}

Убедитесь, что значение таймаута соответствует потребностям производительности вашего приложения.

Имейте в виду, что при слишком низком значении таймаута может возрасти число ошибок соединения.

← Ко всем директивам