Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 428 Pomógł: 77 Dołączył: 10.07.2011 Skąd: Warszawa Ostrzeżenie: (0%)
|
Witajcie
Borykam się z pewnym problemem, mam przygotowany mechanizm PubSub (Websocket). Opierając się o autobahn napisałem chat od strony klienta, a gosws serwer. To z czym mam problem, bądź mi nie pasuje: 1) Serwer umiera przy dużej liczbie połączeń, cron "lata" co minutę i stara się reanimować, co w efekcie powoduje kolejne padnięcie trupem, 2) Tym mogę wyciągnąć usera, a co za tym idzie - podczas requesta, poza danymi leci również ciastko (imo nie powinno, nie do tego jest pub&sub nie?), 3) Alternatywa crossbar działa fajnie, 20k requestów/s nawet nie gryzie, aczkolwiek nie ma sharowania ciastek (przynajmniej na tym etapie dokumentacji na którym jestem, ale to nie istnotne), a poza tym i tak potrzebuję subscriber'a i publisher'a od strony php, co za tym idzie, sytuacja bardzo podobna do 1, mianowicie - dużo requestów, apka pada. to co chcę uzyskać, to względnie wydajne narzędzie, bazujące na czymś co (najlepiej) już jest (chociażby wspomniany crossbar), możliwość względnie bezawaryjnego "słuchania" i "nadawania" do dowolnego użytkownika/grupy użytkowników na kanale, szyfrowanie to swoją drogą. Można by zapewne autoryzować użytkownika po tokenie dołączonym do payload'u, ale tutaj security fkup (tak, wiem że podwędzenie użytkownika i hasła do komputera też może się "stać"). Jakieś sugestie? |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 428 Pomógł: 77 Dołączył: 10.07.2011 Skąd: Warszawa Ostrzeżenie: (0%)
|
Ad 3) Nie wierzę, że 20k zabija serwer, musisz robić tam coś jeszcze dziwnego. Nigdzie nie napisałem, że 20k zabija serwer, wspomniałem o tym, że pętla to robi, na moje oko dzieje się za dużo magii po odebraniu requesta i raczej tam muszę popatrzeć. Autoryzację użytkownika masz rozwiązaną po cookies, musisz tylko sesję obsługiwać np. w Redisie, ja osobiście tak robię i działa super, kolega by_ikar, widzę też coś takiego sobie pisze. Opis jak to zrobić, masz w dokumentacji GOSWebSocketBundle albo Ratchet. Redis od samego początku trzyma sesje, dlatego mogę go (użytkownika) autoryzować po stronię apki (wspomniałem o tym (IMG:style_emoticons/default/smile.gif) ) -- To o co pytałem, tyczyło się raczej kwestii podejścia do problemu, meritum problemu jest to, że podczas pętli wszystko siedzi w pamięci, wyobraź sobie doctrine'a który ciągnie dziesiątki, setki albo i tysiące rekordów z bazy a potem ładuje to w pamięć, logicznym jest wyczyszczenie cache'u po wykonaniu akcji push (client->server i server->client). Pytanie, na ile da radę vps utrzymujący aplikację, oraz handlowanie eventów, gdzieś jest granica (IMG:style_emoticons/default/smile.gif) |
|
|
|
kpt_lucek PubSub 3.11.2015, 17:44:22
by_ikar Cóż, nie może wyjść nic dobrego z puszczenia php w... 3.11.2015, 22:48:13
kpt_lucek Hmm... przeglądałem socket.io, wyglądało dość... d... 3.11.2015, 23:32:22
Damonsson Hmmm dziwne problemy. Sockety obsługiwane przez PH... 4.11.2015, 01:51:09 
by_ikar Cytat(Damonsson @ 4.11.2015, 02:51:09... 4.11.2015, 11:28:43 ![]() ![]() |
|
Aktualny czas: 26.12.2025 - 11:59 |