Подключение (коннект) — это одно сетевое соединение, которое ваше ПО открывает через прокси к целевому сайту.
Поток — это единица выполнения кода в вашем ПО, и один поток может открывать много соединений одновременно. Лимит считает именно соединения, а не потоки.
Одновременные подключения — это количество отдельных сетевых соединений, которые могут быть активными через вашу услугу в один момент времени. Это не количество потоков в вашем приложении, а число активных сетевых соединений. Лимит общий на всю услугу — он распространяется на все IP пакета сразу, а не на каждый IP по отдельности. Если тариф допускает 1 500 одновременных подключений, значит, суммарно по всем вашим IP может быть активно не более 1 500 соединений.
Лимиты для каждого тарифа — и что происходит при их превышении (режим Slow Mode) — описаны в наших правилах сервиса.
Поток в контексте программного обеспечения — это единица выполнения кода. Многие приложения работают в многопоточной среде, где несколько задач могут выполняться параллельно. Однако важно понимать, что один поток может открыть несколько соединений одновременно. Например, при эмуляции браузера на движке Chromium, один поток может инициировать десятки соединений, чтобы загрузить все элементы веб-страницы. Это может быстро привести к достижению лимита одновременных подключений.
HTTP-клиенты — curl, библиотеки Python, приложения на Java — обычно держат соединения открытыми для повторного использования (keep-alive) даже после завершения запроса. Если ваш код не закрывает их явно, большинство языков и инструментов закрывают простаивающие соединения автоматически только через 60–120 секунд. Пока соединение не закрыто на уровне TCP, для нашего сервера оно остаётся активным — даже если ваш скрипт уже закончил задачу.
Отсюда и берётся неожиданное превышение: вы запускаете новую партию задач, пока соединения от предыдущей ещё «дозакрываются», партии накладываются друг на друга — и суммарное число соединений превышает лимит, хотя реально работающих гораздо меньше.
Чтобы избежать проблем с ограничением одновременных подключений, рекомендуется:
1. Переиспользовать соединения — и закрывать их по завершении: Keep-alive сам по себе полезен — он экономит TCP/TLS-хендшейки и ускоряет парсинг. Проблема только в соединениях, оставленных открытыми после окончания работы. Закрывайте клиент или сессию явно, когда задача выполнена: в Python — контекстный менеджер (with requests.Session() as s:) или session.close(); в Node.js — agent.destroy(); в Java — закрытие HTTP-клиента. Для простых разовых скриптов на curl подойдёт опция --no-keepalive — она принудительно закрывает соединение сразу, но каждый запрос платит за это новым хендшейком, поэтому для объёмного парсинга она не годится.
2. Контролировать потоки: Помните, что один поток может открыть несколько соединений. Планируйте количество потоков от лимита одновременных подключений, а не наоборот.
3. Мониторить подключения: Отслеживайте, сколько соединений реально открыто — в Linux это ss -tan или netstat с фильтром по адресу прокси, либо метрики пула соединений вашего HTTP-клиента. Так видно, когда и почему вы приближаетесь к лимиту.
4. Настроить таймауты клиента: Задайте в своём HTTP-клиенте таймауты простоя и соединения, чтобы неиспользуемые соединения закрывались раньше, а не ждали стандартные 60–120 секунд. А если сам лимит мал для вашей нагрузки — обратитесь в поддержку за его увеличением.
На любой услуге доступно увеличение количества одновременных соединений. Стоимость одного дополнительного соединения — 0,03$ в месяц, минимальное количество — 1 000 соединений.
Например:
Услуга 500 IP включает 1 500 одновременных соединений (69$/мес).
Вы можете докупить ещё 1 000 одновременных соединений за 30$/мес.
Итого на данной услуге у вас будет 2 500 одновременных соединений.
За увеличением лимита обратитесь в поддержку через систему тикетов.
А еще...