socket_send_timeout
Директива `wasm_socket_send_timeout` устанавливает максимальное время отправки данных через сокет WebAssembly в NGINX.
Описание
Директива 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;
}Убедитесь, что значение таймаута соответствует потребностям производительности вашего приложения.
Имейте в виду, что при слишком низком значении таймаута может возрасти число ошибок соединения.