Производительность проектов

danni

Client
Регистрация
01.07.2012
Сообщения
373
Благодарностей
6
Баллы
18
Вопрос наверное глупый, но как-то я уже несколько дней потратил и не пришел к выводу.
Тут больше на логику, чем на остальное.
Суть такая - последнее время мне 90% рабочего времени зеннопостера нужно для выполнения 2 шаблонов. (Для примерного понимания нагрузки - i7,16гб озу, 1гб канал. Занято обычно на 50-60% озу и проца, с учетом всего остального барахла).
1) Добавление новых постов на форумы(1 пост авторизация, 1 гет страница добавления, 1 гет добавление).
2) Отправка ссылок на эти форумы на разные страницы для индексации (1 пост запрос).
По количеству потоков 1) 175 ; 2) 55 - далеко не уверен, что это оптимально, но если ставить больше, то скорость будет та же(вроде бы....).
И смысл моей проблемы - максимально эффективно что-то изменить(в контексте данного вопроса - количество потоков на каждый из двух шаблонов).
В общем я хочу понять, сколько потоков того или иногда шаблона максимально эффективно ставить, т.к. возможно, что например 2) работает слишком быстро и нет смысла столько ставить потоков, ведь они уменьшают скорость 1).
Был бы это эксперимент в "вакууме", то все было бы проще, а так все меняется постоянно, какие-то сайты выпадают из индекса и даже если выбрать несколько вариантов и их потестить по часу например, то они могут отличаться не из-за скорости, а из-за того, что какой-то сайт из базы лег или выпал.
Помогите что-то придумать с логикой) А так - примерно 200 потоков одновременно на гет-пост это все, что можно выжать с моего компа? Как-то не то, что не вериться, а грустно, что половина ресурсов свободна, а канал интернета гигабит, а скорость меня не сильно устраивает.
 

Nick

Client
Регистрация
22.07.2014
Сообщения
1 963
Благодарностей
797
Баллы
113
Ты сам-то как думаешь, почему быстрее не пашет? Где узкое место?
 

danni

Client
Регистрация
01.07.2012
Сообщения
373
Благодарностей
6
Баллы
18
Ты сам-то как думаешь, почему быстрее не пашет? Где узкое место?
Ну если выдвигать версии, то у меня зенка стоит на ссд, а все файлы на хдд. Ходят слухи, что если кинуть все на ссд, то будет быстрее, но многие их опровергают) Я когда-то держал все на ссд, не помню особой разницы.
Так же какие-то ограничения в сети все равно могут быть, хотя Сетевой монитор показывает 1700 возможных соединений, 160 - другие, Зенка за 10 секунд такие значения (3,4,5,4,13,4,3,8 ).
Ну и то, в чем я шарю смутно - логика работы зенки в некоторых случаях. Имею ввиду, что если начать брать по строкам файл и что-то делать с этими строками, то скорость будет одинаковая хоть 1, хоть 100 потоков.(Я понимаю, что так нужно и это делали умные программисты, тут без вопросов).
А так без понятия, вот сейчас все работает, конкретно зенка занимает 1гб озу и 50-70% проца.
Если задумываться про проблемы в самих шаблонах, то даже не знаю, т.к. я часто замеряю скорость, мне это важно и везде результат один. Нагляднее всего, когда есть всего 1 пост запрос и 30 сайтов, куда надо без авторизации писать текст, в итоге в 50 потоков будет та же скорость, что в 100, хотя они все довольно резвые и таймаут стоит 5 сек.
 

Nick

Client
Регистрация
22.07.2014
Сообщения
1 963
Благодарностей
797
Баллы
113
сколько времени у тебя один поток проекта первого и второго типа в среднем отрабатывает до завершения?
 

danni

Client
Регистрация
01.07.2012
Сообщения
373
Благодарностей
6
Баллы
18
сколько времени у тебя один поток проекта первого и второго типа в среднем отрабатывает до завершения?
Ну можно и примерно прикинуть, но нет ли идей как помониторить? Можно время начала вычитать из времени конца на последнем действии. Это кстати интересная мысль в том плане, что можно посмотреть время когда X и когда 2X потоков, правда по идее ж, что "что-то в шаблоне тормозит" и что они будут в очереди стоять, в силу архитектуры зенки например, то время будет одинаковое.
И кстати, если не используется браузер, то нет разницы делать циклы или по 1 выполнению? Rostonix мне вроде говорил, что без разницы, но все подключения и привязки, даже не знаю.
Ну у меня проект первого типа, где постинг в форумы с авторизацией 1 раз проходит и завершается, т.к. 60 секунд пауза между сообщениями и нет смысла ее ждать, лучше начать следующим аккаунтом постить, так что после сохранения урла сообщения - выход.
 
Последнее редактирование:

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 707
Баллы
113
И кстати, если не используется браузер, то нет разницы делать циклы или по 1 выполнению? Rostonix мне вроде говорил, что без разницы, но все подключения и привязки, даже не знаю.
нет смысла делать без циклов имхо, если браузер отключен.
 

danni

Client
Регистрация
01.07.2012
Сообщения
373
Благодарностей
6
Баллы
18
нет смысла делать без циклов имхо, если браузер отключен.
Обычный постинг в mybb через гет-пост (взял аккаунт, написал пост, взял новый аккаунт). Примерно так и должно быть, что 150 потоков это максимально эффективно, на 300 будет та же скорость? Или это у меня возможно что-то не так?
 

Nick

Client
Регистрация
22.07.2014
Сообщения
1 963
Благодарностей
797
Баллы
113
Если у тебя шаблон всего из нескольких действий, нет никакой причины, чтобы на каждый аккаунт отдельно поднимать-убивать поток, получаются высокие накладные расходы. Сделай внутри цикл на 100 постов, а потом завершай работу. Уверен, всё заметно ускорится.
 

danni

Client
Регистрация
01.07.2012
Сообщения
373
Благодарностей
6
Баллы
18
Если у тебя шаблон всего из нескольких действий, нет никакой причины, чтобы на каждый аккаунт отдельно поднимать-убивать поток, получаются высокие накладные расходы. Сделай внутри цикл на 100 постов, а потом завершай работу. Уверен, всё заметно ускорится.
Да, помогло. Я везде сделал бесконечные циклы, не считая ошибок. Я так понимаю, что если выход из ошибок зациклить тоже в начало, то станет только лучше?
И еще хотел спросить, как можно оптимизировать второй мой основной шаблон. На скрине набросок по сути, т.к. я 100 раз менял то так, то так. Берется 1 сайт из базы(их не более 50) и по нему пытается 55 раз отправится сообщение, правда с таймаутом 5 сек(вроде так оптимальнее выходит), поэтому часто у него не получается и все сначала. Пробовал так, что "каждый раз брать новый сайт" и по 1 сообщению отправлять на каждый, но так выходит медленнее, т.к. периодически парочка из них лежит и мы получается постоянно по ним пытаемся что-то сделать, а в моем случае берется сайт - если все ок, то 55 сообщений на него отправляем, нет - заново.
gb.png
 

Nick

Client
Регистрация
22.07.2014
Сообщения
1 963
Благодарностей
797
Баллы
113
Ну в общем - да. Правда, совсем бесконечно гонять не надо, а то через 100 млрд. лет у нас солнце взорвётся, планеты разнесёт на куски, а у тебя там всё ещё запросы будут исполняться.

По второму вопросу:
1. Добавь переменную-флажок. Если запрос прошёл, пусть устанавливается в 1, если нет - в значение 0.
2. В условие добавь - если счётчик меньше 55 И значение флага - 1, то фигачить дальше. Иначе - очищать список и брать новый сайт.
 

danni

Client
Регистрация
01.07.2012
Сообщения
373
Благодарностей
6
Баллы
18
Ну в общем - да. Правда, совсем бесконечно гонять не надо, а то через 100 млрд. лет у нас солнце взорвётся, планеты разнесёт на куски, а у тебя там всё ещё запросы будут исполняться.

По второму вопросу:
1. Добавь переменную-флажок. Если запрос прошёл, пусть устанавливается в 1, если нет - в значение 0.
2. В условие добавь - если счётчик меньше 55 И значение флага - 1, то фигачить дальше. Иначе - очищать список и брать новый сайт.
Еще такая вещь интересна - если я поставлю таймаут 1 и в куче случаев будет красный выход(все равно зациклю):
1) Запрос отправиться на сервер(если он вообще доступен) и будет там обрабатываться, но я этого уже не дождусь(мне результат парсить и не нужно)
2) Не отправиться
Очень бодро работало, правда я уже не могу отследить количество положительных результатов в таком случае. Но когда запустил другой проект параллельно с этим, то стало значительно хуже, хотя сайты разные, все разное, нагрузка маленькая, запустил отдельные 20 процессов Тора для этого... видимо мог гигабитный канал не так уж крут.
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)