Вот как по мне, оперативы 16гб, но проц грузится под 100% при 30 потоках (смотря кст потоки чего, от самого скрипта зависит. Например парсер в 170 работает спокойно(не гет/пост, в браузере)
Смотри, есть варик разогнать проц, посмотри видосики, но за темпой его следи (желательно под нагрузкой).
Лет 8-10 назад, когда озу было около 4гб на старом пк, вставлял флешки в пк и с них выделял память, чтоб юзал,когда оперативка использовалась на 100% (там само по себе предусмотрено, что пк бывает жд по свойствам оперативки юзает(вроде подкачкой называется), но там выделяемый объем ограничен, можно увеличить). Помогало, но именно для работы без лагов компа, не думаю, что данный метод будет эффективен при работе под нагрузкой, хотя попробовать можно)
Общие вопросы про облегчение потоков.
-
Если грузит процессор, то можно попробовать выставлять паузы таким образом, что бы все потоки грузили страницы Не одновременно.
У меня сайт по нагруженности равен примерно фейсбуку и максимум в 10 потоков работает на 4х ядерном vds от zomro (далее идет 100 загрузка cpu что не есть позволительно) и заметно что пик нагрузки при загрузке страниц. Можно предположить, что если каждый поток будет ждать предыдущий перед загрузкой страниц, то количество потоков можно увеличить в 4-5 раз.
ЗЫ видел недавно сообщение от какого-то разраба, он утверждал что его софт для соц сети на C# с эмуляцией браузера тянет как минимум несколько сотен потоков, вот бы нам такое))
-
@denanotherday да такой автоматический метод был бы весьма удобен
-
@denanotherday said in Общие вопросы про облегчение потоков.:
@venom777 вот если бы сделать, что-бы загрузка во втором потоке начиналась после окончания загрузки в первом и тд.
так сделай, кто мешает то, для этого все уже есть в софте.
в онапстарт создать ассоц. массив глобальная переменная, к-во ключей = к-ву потоков, значение ключа = статус загрузки страницы текущего потока.
Перед загрузкой страницы, проверяй, смотри в глобальной переменной ключ-1 (предыдущий поток) статус его загрузки, если загружена страница, то в путь: грузи страницу в текущем потоке и меняй его статус.
В итоге будет 2 поток ждать пока загрузится страница в Первом потоке, 3 - во втором и т.д.Это описано на скорую руку и как попало, но сути не меняет. Просто нужно еще продумать пару нюансов, например такой как, возврат статусу потоку, после окончания работы или во время сбоя.
-
@DrPrime На счёт удаления элементов DOM. Если на сайте есть активность - чат\напоминалки\уведомления.. Всё ведь включается для каждого потока и нагружает весь проект. Если логика скрипта подразумевает цикличное выполнение действий на одной странице, без перезагрузки. Думаю есть смысл по удалять всё это богатство.
-
@denanotherday > вот если бы сделать, что-бы загрузка во втором потоке начиналась после окончания загрузки в первом и тд.
Да Это будет, также БАС перестанет создавать потоки если в системе мало ресурсов
-
@support @DrPrime У меня проект работает в 45 потоков, жутко нагружая систему. У проекта есть админка, к которой потоки раз в 1-5 минут отправляют get-запрос, на разные php страницы. Типа reboot.php, в которой может быть цифра, и если это цифра равна номеру потока, то поток перезагружается. И прочим php страницам.
Знаю, можно было сделать все опции на одной страницы и получать их post-запросом, но разбираться мне пока некогда.
На сервере стоит xampp получается на каждый get-запрос он генерирует ответ исходя из php страницы.А не снизит ли нагрузку на железо, если BAS будет получать ответ из читать файл, чем получая ответ из get-запроса?
-
@smurfik Отнюдь! Переделал сейчас проект, убрал get-запросы к админке, производительность стала в разы выше, просто не узнать! Но я не тупо заменил одно на другое. Я выделил отдельный поток, который читает файлы раз в 1-5 минут и уже исходя из содержания файла устанавливает глобальную переменную. А все потоки периодически смотрят глобальные переменные.
-
Не понимаю. Купленный сервер vds 4 Ядра / 8000 МГц CPU / 13000 Мб ОЗУ / 100 Гб SSD / 1 IP / 1 Гбит/с Порт идеально работает с 20 потоками, но намертво зависает на 44..
А в коридоре, на антресоли стоит сервер Intel Core 2 Quad Q6600, 2400 MHz / 5 Гб ОЗУ / 1000 Гб HDD / и интернет по вафле. А справляется один в один. Даже по загруженности одинаково..
Целевой сайт работает на Node.js в связке с Socket.IO. Если я выполню запретить запрос с маской *, а разрешить только с домена сайта, то ни чего работать не будет. Приходится разрешать socket.io.js и тому подобные..
Сам скрипт элементарный, все аккаунты загружают отпечаток, прокси, заходят на сайт и в цикле ждут новой записи в базе. А как появилась запись - вводят в форму и жмут отправить.. Всё!Запрещено, всё что можно запретить. Ни каких лишних телодвижений скрипт уже не делает, выполняет только 1 задачу. Пропуск кадров стоит !!1500!!. Данные в базу заносит другой скрипт BAS'a..
Что ещё тут можно
нах*йсделать? Ребят, у меня уже руки опускаются..
Вдруг кто разбирается в Node.js и как можно ему отправлять post-запросы? -
@Fox said in Общие вопросы про облегчение потоков.:
Не понимаю. Купленный сервер vds 4 Ядра / 8000 МГц CPU / 13000 Мб ОЗУ / 100 Гб SSD / 1 IP / 1 Гбит/с Порт идеально работает с 20 потоками, но намертво зависает на 44..
А в коридоре, на антресоли стоит сервер Intel Core 2 Quad Q6600, 2400 MHz / 5 Гб ОЗУ / 1000 Гб HDD / и интернет по вафле. А справляется один в один. Даже по загруженности одинаково..
Целевой сайт работает на Node.js в связке с Socket.IO. Если я выполню запретить запрос с маской *, а разрешить только с домена сайта, то ни чего работать не будет. Приходится разрешать socket.io.js и тому подобные..
Сам скрипт элементарный, все аккаунты загружают отпечаток, прокси, заходят на сайт и в цикле ждут новой записи в базе. А как появилась запись - вводят в форму и жмут отправить.. Всё!Запрещено, всё что можно запретить. Ни каких лишних телодвижений скрипт уже не делает, выполняет только 1 задачу. Пропуск кадров стоит !!1500!!. Данные в базу заносит другой скрипт BAS'a..
Что ещё тут можно
нах*йсделать? Ребят, у меня уже руки опускаются..
Вдруг кто разбирается в Node.js и как можно ему отправлять post-запросы?А в чем особенность отправки post-запроса к Node.js?
-
С сервером я пока решил так, запускаю 30 потоков на купленном и 14 на своём. Пока исправно работает
тьфу, тьфу, тьфу..@xclsv Особенность узнать, что отправлять.. Элементарный чат. Снифаю запросы через HttpAnalyzerStdV7 и Fiddler. Кликаю в форму для отправки сообщения в чате, отправляется сразу get-запрос вида:
http://mc.yandex.ru/clmap/31214616?page-url=***&pointer-click=rn%3A319247250%3Ax%3A34123%3Ay%3A19275%3At%3A1045%3Ap%3APA3WAA5&browser-info=rqnl%3A1%3Ast%3A1498020459%3Au%3A1492181440525020828А как отправляю сообщение, идёт post-запрос:
http://mc.yandex.ru/webvisor/31214616?wmode=0&rn=717832863&page-url=***&wv-type=0&wv-hit=650994071&wv-part=31&wv-check=63598&force-urlencoded=1&browser-info=v%3A822%3Az%3A300%3Ai%3A20170621094554%3Arqnl%3A1%3Ast%3A1498020864%3Au%3A1492181440525020828Но если отправлять в BAS'e эти запросы, или даже пересылать через Fiddler, результата ни какого..
-
@Fox said in Общие вопросы про облегчение потоков.:
С сервером я пока решил так, запускаю 30 потоков на купленном и 14 на своём. Пока исправно работает
тьфу, тьфу, тьфу..@xclsv Особенность узнать, что отправлять.. Элементарный чат. Снифаю запросы через HttpAnalyzerStdV7 и Fiddler. Кликаю в форму для отправки сообщения в чате, отправляется сразу get-запрос вида:
http://mc.yandex.ru/clmap/31214616?page-url=***&pointer-click=rn%3A319247250%3Ax%3A34123%3Ay%3A19275%3At%3A1045%3Ap%3APA3WAA5&browser-info=rqnl%3A1%3Ast%3A1498020459%3Au%3A1492181440525020828А как отправляю сообщение, идёт post-запрос:
http://mc.yandex.ru/webvisor/31214616?wmode=0&rn=717832863&page-url=***&wv-type=0&wv-hit=650994071&wv-part=31&wv-check=63598&force-urlencoded=1&browser-info=v%3A822%3Az%3A300%3Ai%3A20170621094554%3Arqnl%3A1%3Ast%3A1498020864%3Au%3A1492181440525020828Но если отправлять в BAS'e эти запросы, или даже пересылать через Fiddler, результата ни какого..
Это все запросы к Яндекс.Метрике. Полагаю, искомые запросы отправляются все-таки не туда =)
Чтобы отснифить запросы, не обязательно использовать фиддлер. Попробуй отследить свой запрос прямо в браузере. F12, вкладка network. Жмём кнопку отправки и смотрим, куда ушел запрос с твоими данными формы. -
@xclsv Я тоже сперва смотрел в Firebug'e. Только там тоже ни чего нет. При клике в форму для отправки сообщения в чате
https://mc.yandex.ru/clmap/31214616?page-url=https***&pointer-click=rn%3A651866061%3Ax%3A26214%3Ay%3A23130%3At%3A5712%3Ap%3APA3WAA5&browser-info=rqnl%3A1%3Ast%3A1498028816%3Au%3A1492181440525020828С get и post запросами я уже работал, но это вот вообще всё магия, как могут приходить и уходить сообщения в чате без отправки запросов.. через какие то туннели..
-
@Fox said in Общие вопросы про облегчение потоков.:
@xclsv Я тоже сперва смотрел в Firebug'e. Только там тоже ни чего нет. При клике в форму для отправки сообщения в чате
https://mc.yandex.ru/clmap/31214616?page-url=https***&pointer-click=rn%3A651866061%3Ax%3A26214%3Ay%3A23130%3At%3A5712%3Ap%3APA3WAA5&browser-info=rqnl%3A1%3Ast%3A1498028816%3Au%3A1492181440525020828Это точно метрика ) В ней составляется карта кликов. Потому, данные о каждом клике отправляются к ней на сервер.
С get и post запросами я уже работал, но это вот вообще всё магия, как могут приходить и уходить сообщения в чате без отправки запросов.. через какие то туннели..
Ну тогда, полагаю, запросы могут отправляться туда, где я не особо шарю )
Если не жалко - можешь скинуть в лс сайт. Посмотрю. -
Сейчас странность заметил, на обоих серверах запущен один скрипт по 20 потоков.
Только вот загруженность домашнего сервера на порядок ниже..

Чем у купленного

Что то я совсем запутался..
-
@Fox said in Общие вопросы про облегчение потоков.:
Сейчас странность заметил, на обоих серверах запущен один скрипт по 20 потоков.
Только вот загруженность домашнего сервера на порядок ниже..

Чем у купленного

Что то я совсем запутался..
ну ты сравнил хех)
рил тачка это рил
а сервер на виртуализации
обрати внимание где инфа под графиком где кеш L т.п и найди различия ) -