@h78329

Как распределить нагрузку и что использовать в скриптах?

Привет!

Долгое время пишу скрипт, который никак не могу запустить в продакшн из-за очень сильных лагов в пики. Суть скрипта состоит в том, чтобы парсить много страниц и сравнивать их между собой. Первым вариантом пробовал все сделать в одном скрипте php. Подросло количество данных и сравнивать их в одном цикле занимало уж очень много времени (1 скрипт занимал только одно ядро процессора), к тому же появилась необходимость в доступе к промежуточным данным. Решил немного переработать и стал использовать базу данных, а точнее MariaDB. Разнес все по таблицам - функционально стало все правильно. Только вот MySQL нагружает также ядро процессора и подлагивает в пики.

1. Для реализации функционала сервиса мне нужно хранить промежуточные данные, поэтому отказаться полностью от базы данных не могу. Может есть какие альтернативы? К слову, оперативная память пустует и проблем с ее расширением нет. И есть другие ядра, на которые можно перенести нагрузку.
2. Как правильно реализовать работу демонов (скрипты PHP в фоне), чтобы при отключении они восстанавливались? На данный момент используется start-stop-daemon и bash скрипт по cron-у для восстановления. Хотелось бы как-то избавиться от данного костыля.
3. Страницы на данный момент захватываются с помощью curl. Для выполнения этой части требуется несколько секунд, что также меня не устраивает. Пробовал перенести все на отдельный хостинг, который находился бы поближе, но результата никакого не последовало. Может можно как-то облегчить curl или возможно какие альтернативы? Страницы на сайтах тяжелые и используются post запросы.
  • Вопрос задан
  • 342 просмотра
Пригласить эксперта
Ответы на вопрос 2
angrySCV
@angrySCV
machine learning, programming, startuping
блин ну как можно использовать файловую систему для хранения промежуточных вариантов?
только оперативная память, она для этого и существует.
нужна производительность? перестаньте на скриптах из готовых решений собирать программы, начните писать нормальный код, на компилируемых языках.
Ответ написан
swanrnd
@swanrnd
Издатель HTML5 игр
Кешируйте все данные, которые получаем, через запросы.

Со страницами вы вряд ли что-то сделаете.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы