Доброго
Имеется:
- мощный выделенны сервер AMD EPYC 7402P 24x2.8Ghz 128GB RAM 2TB NVME 5Gbps
- OS windows server 2022 datacenter
- zennoposter 7.7.21.0
- простейший шаблон-парсер на GET запросах, в будущем - zenno
- такой же парсер, только на питоне, в будущем - python
Логика парсера:
- парсер берет урл из текстового файла
- делает get запрос, получает тело страницы
- в полученном коде регуляркой ищет совпадение "rs-test"
- если нашел - кладет в result.txt, если нет - переходит к следующему урлу
Запуск:
- запуск на зенке в 200 потоков в безбраузерном режиме
- позже запуск на питоне в 1000 корутинов асинхронно (для сравнения)
Результат скорости:
- zenno | 50 урлов \ сек, база в 50к строк обрабатывается за 17 минут, нагрузки на CPU и RAM минимальна, канал забит 20-30 Mbps
- python | 190 урлов \ сек, база в 50к строк обрабатывается за 4 минуты, нагрузки на CPU и RAM нет вообще, канал забит 40-50 Mbps
- количество результатов + - одинаковое
Вопрос:
Сколько бы я не пытался выжать по скорости больше не получается.
Не увеличение потоков. Не увеличение корутинов.
Расширение списка динамических портов до 65534. Уменьшение таймаутов и т.д.
Что я делаю не так?
Не уже ли софт упирается в стандартные возможности стека TCP и не может больше выжать по потокам и подключениям?
Проще запускать на Linux сервере и не парить себе мозг в виндой?
Заранее благодарен за советы!
Имеется:
- мощный выделенны сервер AMD EPYC 7402P 24x2.8Ghz 128GB RAM 2TB NVME 5Gbps
- OS windows server 2022 datacenter
- zennoposter 7.7.21.0
- простейший шаблон-парсер на GET запросах, в будущем - zenno
- такой же парсер, только на питоне, в будущем - python
Логика парсера:
- парсер берет урл из текстового файла
- делает get запрос, получает тело страницы
- в полученном коде регуляркой ищет совпадение "rs-test"
- если нашел - кладет в result.txt, если нет - переходит к следующему урлу
Запуск:
- запуск на зенке в 200 потоков в безбраузерном режиме
- позже запуск на питоне в 1000 корутинов асинхронно (для сравнения)
Результат скорости:
- zenno | 50 урлов \ сек, база в 50к строк обрабатывается за 17 минут, нагрузки на CPU и RAM минимальна, канал забит 20-30 Mbps
- python | 190 урлов \ сек, база в 50к строк обрабатывается за 4 минуты, нагрузки на CPU и RAM нет вообще, канал забит 40-50 Mbps
- количество результатов + - одинаковое
Вопрос:
Сколько бы я не пытался выжать по скорости больше не получается.
Не увеличение потоков. Не увеличение корутинов.
Расширение списка динамических портов до 65534. Уменьшение таймаутов и т.д.
Что я делаю не так?
Не уже ли софт упирается в стандартные возможности стека TCP и не может больше выжать по потокам и подключениям?
Проще запускать на Linux сервере и не парить себе мозг в виндой?
Заранее благодарен за советы!
Последнее редактирование:


