Общие вопросы про облегчение потоков.



  • @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 потоков.
    Только вот загруженность домашнего сервера на порядок ниже..
    0_1498050164721_forum24 домашний сервак.png

    Чем у купленного
    0_1498050191964_forum25 купленный сервер.png

    Что то я совсем запутался..



  • @Fox said in Общие вопросы про облегчение потоков.:

    Сейчас странность заметил, на обоих серверах запущен один скрипт по 20 потоков.
    Только вот загруженность домашнего сервера на порядок ниже..
    0_1498050164721_forum24 домашний сервак.png

    Чем у купленного
    0_1498050191964_forum25 купленный сервер.png

    Что то я совсем запутался..

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



  • This post is deleted!


  • @Fox said in Общие вопросы про облегчение потоков.:

    С get и post запросами я уже работал, но это вот вообще всё магия, как могут приходить и уходить сообщения в чате без отправки запросов.. через какие то туннели..

    Может через вебсокет?



  • @anchorday Да, скорее всего так и есть..

    После декодирования и деобфускации..

    function sendChat(_0x1A2D4) {
        if (jibreht8y548wru23io == true) {
            console.log("[sendChat] message send to socket ""+ _0x1A2D4+ "" | roomname ""+ room+ """)
        };
        if (nowChat == "main") {
            emitToServer("sendChat", {
                socket_hash: socket_hash,
                mess: _0x1A2D4,
                roomname: room,
                lang: user_language
            })
        } else {
            if (nowChat == "team") {
                emitToServer("sendChat", {
                    socket_hash: socket_hash,
                    mess: _0x1A2D4,
                    roomname: room,
                    lang: user_language,
                    team_id: "yes"
                })
            }
        }
    }
    

    и

    socket.on("messageChat", function (_0x19F62) {
        chatMessage.push(_0x19F62);
        htmlChat(_0x19F62, 1)
    }).on("messageTeamChat", function (_0x19F62) {
        if (_0x19F62.team_id == team_id) {
            chatBandMessage.push(_0x19F62);
            htmlChat(_0x19F62, 1, true);
            if ($("#openChatButton").attr("style") == "") {
                $("#newChatMessage").clearQueue();
                $("#newChatMessage").stop();
                $("#newChatMessage").attr("style", "background-color: #bf2424;");
                $("#newChatMessage").fadeIn(50).delay(1000).fadeOut(300)
            }
        } else {}
    })
    

    Есть хороший мануал по сабжу?



  • @Fox said in Общие вопросы про облегчение потоков.:

    Есть хороший мануал по сабжу?

    Не знаю что-то, что посоветовать. Вот на learn.javascript есть про вебсокеты https://learn.javascript.ru/websockets Я просто гуглил, читал что на первых страницах выдачи.

    Слабо представляю как можно в бас без браузера с вебсокетами работать. Тоже встречалось такое и я забил в итоге.
    Если у кого-то есть мысли на этот счет, тоже послушаю.



  • Так, например, при работе в Chrome socket.io будет использовать websockets. А если ваш браузер не поддерживает websockets, то библиотека попытается использовать flash sockets, а если и этот вариант не подойдет, то long polling и так далее.

    Может попробовать сделать что нужно на сайте через браузер, не поддерживающий websockets и с отключенным флешем, и отснифать запросы?



  • @anchorday said in Общие вопросы про облегчение потоков.:

    Так, например, при работе в Chrome socket.io будет использовать websockets. А если ваш браузер не поддерживает websockets, то библиотека попытается использовать flash sockets, а если и этот вариант не подойдет, то long polling и так далее.

    Тоже нашёл эту инфу на https://nodeguide.ru/doc/modules-you-should-know/socketio/

    Может всё таки в BAS'e есть способ работать с websockets.



  • Судя по мануалам https://learn.javascript.ru/websockets

    Протокол WebSocket работает над TCP.
    Это означает, что при соединении браузер отправляет по HTTP специальные заголовки, спрашивая: «поддерживает ли сервер WebSocket?».
    Если сервер в ответных заголовках отвечает «да, поддерживаю», то дальше HTTP прекращается и общение идёт на специальном протоколе WebSocket, который уже не имеет с HTTP ничего общего.

    Создать подобный XMLHttpRequest-запрос (подделать WebSocket) невозможно, по одной простой причине: указанные выше заголовки запрещены к установке методом setRequestHeader.

    Получается через BAS не получится работать с websockets?


    На github нашёл js сниффер websockets.

    (function () {
    	WebSocket.prototype._send = WebSocket.prototype.send;
    	WebSocket.prototype.send = function (data) {
    		this._send(data);
    		this.addEventListener('message', function (msg) {
    			console.log('>> ' + msg.data);
    		}, false);
    		this.send = function (data) {
    			this._send(data);
    			console.log("<< " + data);
    		};
    		console.log("<< " + data);
    	}
    })()
    

    Он работает выводя всю информацию, которую fiddler не видел.

    Данные вида

    "socket_hash":"c5Qwte","info":"number"}
    

    Образование хеша и сами функции у меня есть, декодированные и деобфускациониронные js ..


    Вопрос:В теории, можно ведь не загружая страницу, даже на пустой в BAS'e использовать экшен явасрипт, и скопировать туда функции js?
    Или сохранить страницу, руками вырезать всё, кроме обращений js и работать с ним..


    Походу единственный вариант остаётся - написать модуль для работы с websockets.



  • @Fox said in Общие вопросы про облегчение потоков.:

    Он работает выводя всю информацию, которую fiddler не видел.

    В фидлере вкладка «websockets» почему-то сразу не видна. Нужно дважды кликнуть по вебсокету в списке запросов и тогда она появится, там все есть и содержание и ключ маски и тд.
    Еще в Charles тоже есть поддержка вебсокетов.



  • @anchorday websockets изучать уже начал :). Главное понять, как с ними работать, минимизировав нагрузку на потоки в BAS. Я так понимаю с закрытым браузером не получится работать?


  • administrators

    @Fox

    Вдруг кто разбирается в Node.js и как можно ему отправлять post-запросы?

    Точно так же, как и серверу написанному на другом языке.

    Вебсокеты хороши тем, что поддерживают постоянное соединение и могут реагировать на события от сервера.

    Проблемы с производительностью еще остались?



  • @support Да, после запуска в 45 потоков, проект кушает ресурсы на 80%, однако через несколько часов намертво загружает сервер, что тот перестаёт отвечать.
    Вопрос на миллион, можно ли работать с вебсокетами без участия браузера? Или, например, получить соединение в браузере, потом его закрыть и общаться с сервером напрямую средствами BAS'a?


Log in to reply
 

Looks like your connection to Bablosoft was lost, please wait while we try to reconnect.