Общие вопросы про облегчение потоков.
-
Сейчас странность заметил, на обоих серверах запущен один скрипт по 20 потоков.
Только вот загруженность домашнего сервера на порядок ниже..
Чем у купленного
Что то я совсем запутался..
-
@Fox said in Общие вопросы про облегчение потоков.:
Сейчас странность заметил, на обоих серверах запущен один скрипт по 20 потоков.
Только вот загруженность домашнего сервера на порядок ниже..
Чем у купленного
Что то я совсем запутался..
ну ты сравнил хех)
рил тачка это рил
а сервер на виртуализации
обрати внимание где инфа под графиком где кеш 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. Я так понимаю с закрытым браузером не получится работать?
-
Вдруг кто разбирается в Node.js и как можно ему отправлять post-запросы?
Точно так же, как и серверу написанному на другом языке.
Вебсокеты хороши тем, что поддерживают постоянное соединение и могут реагировать на события от сервера.
Проблемы с производительностью еще остались?
-
@support Да, после запуска в 45 потоков, проект кушает ресурсы на 80%, однако через несколько часов намертво загружает сервер, что тот перестаёт отвечать.
Вопрос на миллион, можно ли работать с вебсокетами без участия браузера? Или, например, получить соединение в браузере, потом его закрыть и общаться с сервером напрямую средствами BAS'a?
-
@Fox said in Общие вопросы про облегчение потоков.:
Да, после запуска в 45 потоков, проект кушает ресурсы на 80%, однако через несколько часов намертво загружает сервер, что тот перестаёт отвечать.
А что за проект? Какие в нем действия, итд
Вопрос на миллион, можно ли работать с вебсокетами без участия браузера?
Да, конечно, полно клиентских библиотек.
Или, например, получить соединение в браузере, потом его закрыть и общаться с сервером напрямую средствами BAS'a?
Да, можно открыть браузер(помойму в том же домене) и работать с вебсокетами через апи яваскрипта.
-
Да, конечно, полно клиентских библиотек.
Например, в мой любимый qt такая либа встроена.
-
@support Спасибо большое! Это был главный вопрос :).
Проект элементарный, в 43 потока, с пропуском кадров 1000, через прокси и с уникальным отпечатком заходят на сайт и ждут информации. Первый поток с пропуском кадров 1, парсит чат и даёт информацию остальным через глобальную переменную. В 20 потоков скрипт работает стабильно неделями, загружая систему на 30%-40%, но увеличив потоки до 30 вешают сервер через сутки..Ещё заметил, что если сам сервер не перезагрузить, то снова запущенный скрипт в те же, стабильные, 20 потоков будет кушать в 1.5-2 раза больше ресурсов.
Начну изучать qt :), и возможность его использования в BAS'e.
-
@Fox Какое потребление ресурсов в случае 20 потоков? Память/проц?
Начну изучать qt :), и возможность его использования в BAS'e.
Лучше на js напишите и парьтесь. Но дело ваше)
-
@support said in Общие вопросы про облегчение потоков.:
напишите и парьтесь
Хорошо сказано :))
Если можно реализовать на js, значит буду пытаться на js. Если есть хорошая литература на эту тему, буду рад.
Какое потребление ресурсов в случае 20 потоков? Память/проц?
Вот домашний сервер.
А вот купленный сервер
На кардиограмму похоже )) вон пульс даже есть..
Что странно, дак это объём используемой памяти, 80% и там и там, что 4гб, что 12 гб.
-
Переписал проект немного, отказавшись от моих любимых регулярок, в пользу json и xpath. И удалось этим снизить общую нагрузку на проц аш на
!!
30%!!
Сейчас сервер работает со всеми 45 потоками и кушает чуть больше 50% мощности.