eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingWieloużytkownikowy serwer udp?
Ilość wypowiedzi w tym wątku: 20

  • 11. Data: 2017-10-12 15:58:32
    Temat: Re: Wieloużytkownikowy serwer udp?
    Od: Roman Tyczka <n...@b...no>

    On Thu, 12 Oct 2017 12:40:08 +0000 (UTC), Adam Wysocki wrote:

    > Roman Tyczka <n...@b...no> wrote:
    >
    >> Czyli wołając reqesta do serwera http i używając w nagłówku HTTP pola
    >> keep-alive powoduję, że serwer http utrzymuje ze mną aktywne połączenie tcp
    >> czyli de facto otwartego socketa? I sobie to połączenie wisi, aż łaskawie
    >> zechce mi się (klientowi http) odezwać ponownie?
    >
    > Tak. Jak masz do wyświetlenia 15 obrazków z jednej domeny, to nie ma sensu
    > tworzyć 15 połączeń. Można zrobić keepalive i pobrać wszystkie w jednym.

    Ja nie pytam o teorię i logiczne rozwiązanie. Pytam o implementacje na
    poziomie serwera HTTP, np. apache.
    Jeśli byłaby to prawda to serwery typu fejsbuk miałyby otwarte dziesiątki
    milionów socketów i pożarte olbrzymie zasoby na "nie wiadomo co", bo wszak
    klient może się więcej nie odezwać a socket musi wisieć, bo nie wiadomo czy
    się odezwie czy nie.

    --
    pozdrawiam
    Roman Tyczka


  • 12. Data: 2017-10-12 17:05:28
    Temat: Re: Wieloużytkownikowy serwer udp?
    Od: "M.M." <m...@g...com>

    On Thursday, October 12, 2017 at 3:58:34 PM UTC+2, Roman Tyczka wrote:
    > On Thu, 12 Oct 2017 12:40:08 +0000 (UTC), Adam Wysocki wrote:
    >
    > > Roman Tyczka <n...@b...no> wrote:
    > >
    > >> Czyli wołając reqesta do serwera http i używając w nagłówku HTTP pola
    > >> keep-alive powoduję, że serwer http utrzymuje ze mną aktywne połączenie tcp
    > >> czyli de facto otwartego socketa? I sobie to połączenie wisi, aż łaskawie
    > >> zechce mi się (klientowi http) odezwać ponownie?
    > >
    > > Tak. Jak masz do wyświetlenia 15 obrazków z jednej domeny, to nie ma sensu
    > > tworzyć 15 połączeń. Można zrobić keepalive i pobrać wszystkie w jednym.
    >
    > Ja nie pytam o teorię i logiczne rozwiązanie. Pytam o implementacje na
    > poziomie serwera HTTP, np. apache.
    > Jeśli byłaby to prawda to serwery typu fejsbuk miałyby otwarte dziesiątki
    > milionów socketów [...]

    10mln podziel na 60tys komputerów i już nie jest tak strasznie.

    Pozdrawiam


  • 13. Data: 2017-10-12 18:40:33
    Temat: Re: Wieloużytkownikowy serwer udp?
    Od: Roman Tyczka <n...@b...no>

    On Thu, 12 Oct 2017 08:05:28 -0700 (PDT), M.M. wrote:

    >>>> Czyli wołając reqesta do serwera http i używając w nagłówku HTTP pola
    >>>> keep-alive powoduję, że serwer http utrzymuje ze mną aktywne połączenie tcp
    >>>> czyli de facto otwartego socketa? I sobie to połączenie wisi, aż łaskawie
    >>>> zechce mi się (klientowi http) odezwać ponownie?
    >>>
    >>> Tak. Jak masz do wyświetlenia 15 obrazków z jednej domeny, to nie ma sensu
    >>> tworzyć 15 połączeń. Można zrobić keepalive i pobrać wszystkie w jednym.
    >>
    >> Ja nie pytam o teorię i logiczne rozwiązanie. Pytam o implementacje na
    >> poziomie serwera HTTP, np. apache.
    >> Jeśli byłaby to prawda to serwery typu fejsbuk miałyby otwarte dziesiątki
    >> milionów socketów [...]
    >
    > 10mln podziel na 60tys komputerów i już nie jest tak strasznie.

    Tak czy owak jest to niepotrzebne i ...dziwne.
    Istnieje co prawda coś takiego jak websockets, ale to zupełnie inna bajka.

    Dlatego dopytuję o szczegóły implementacyjne, a nie o to co wynika z opisu
    polecenia http, bo coś czuję, że jednak nie jest to tak implementowane.
    Oczywiście mogę się mylić! A lubię zaliczać dysonanse poznawcze tego
    rodzaju :-)

    --
    pozdrawiam
    Roman Tyczka


  • 14. Data: 2017-10-12 18:49:06
    Temat: Re: Wieloużytkownikowy serwer udp?
    Od: "M.M." <m...@g...com>

    On Thursday, October 12, 2017 at 6:40:34 PM UTC+2, Roman Tyczka wrote:
    > On Thu, 12 Oct 2017 08:05:28 -0700 (PDT), M.M. wrote:
    >
    > >>>> Czyli wołając reqesta do serwera http i używając w nagłówku HTTP pola
    > >>>> keep-alive powoduję, że serwer http utrzymuje ze mną aktywne połączenie tcp
    > >>>> czyli de facto otwartego socketa? I sobie to połączenie wisi, aż łaskawie
    > >>>> zechce mi się (klientowi http) odezwać ponownie?
    > >>>
    > >>> Tak. Jak masz do wyświetlenia 15 obrazków z jednej domeny, to nie ma sensu
    > >>> tworzyć 15 połączeń. Można zrobić keepalive i pobrać wszystkie w jednym.
    > >>
    > >> Ja nie pytam o teorię i logiczne rozwiązanie. Pytam o implementacje na
    > >> poziomie serwera HTTP, np. apache.
    > >> Jeśli byłaby to prawda to serwery typu fejsbuk miałyby otwarte dziesiątki
    > >> milionów socketów [...]
    > >
    > > 10mln podziel na 60tys komputerów i już nie jest tak strasznie.
    >
    > Tak czy owak jest to niepotrzebne i ...dziwne.
    > Istnieje co prawda coś takiego jak websockets, ale to zupełnie inna bajka.
    >
    > Dlatego dopytuję o szczegóły implementacyjne, a nie o to co wynika z opisu
    > polecenia http, bo coś czuję, że jednak nie jest to tak implementowane.
    > Oczywiście mogę się mylić! A lubię zaliczać dysonanse poznawcze tego
    > rodzaju :-)

    Jest w sieci wiele przykładów serwerów i klientów http. Jeśli Ci zależy,
    możesz któryś poznać. Wpisz w google np. taką frazę "qt http server"



  • 15. Data: 2017-10-12 18:50:21
    Temat: Re: Wieloużytkownikowy serwer udp?
    Od: "M.M." <m...@g...com>

    On Thursday, October 12, 2017 at 6:49:07 PM UTC+2, M.M. wrote:
    > On Thursday, October 12, 2017 at 6:40:34 PM UTC+2, Roman Tyczka wrote:
    > > On Thu, 12 Oct 2017 08:05:28 -0700 (PDT), M.M. wrote:
    > >
    > > >>>> Czyli wołając reqesta do serwera http i używając w nagłówku HTTP pola
    > > >>>> keep-alive powoduję, że serwer http utrzymuje ze mną aktywne połączenie tcp
    > > >>>> czyli de facto otwartego socketa? I sobie to połączenie wisi, aż łaskawie
    > > >>>> zechce mi się (klientowi http) odezwać ponownie?
    > > >>>
    > > >>> Tak. Jak masz do wyświetlenia 15 obrazków z jednej domeny, to nie ma sensu
    > > >>> tworzyć 15 połączeń. Można zrobić keepalive i pobrać wszystkie w jednym.
    > > >>
    > > >> Ja nie pytam o teorię i logiczne rozwiązanie. Pytam o implementacje na
    > > >> poziomie serwera HTTP, np. apache.
    > > >> Jeśli byłaby to prawda to serwery typu fejsbuk miałyby otwarte dziesiątki
    > > >> milionów socketów [...]
    > > >
    > > > 10mln podziel na 60tys komputerów i już nie jest tak strasznie.
    > >
    > > Tak czy owak jest to niepotrzebne i ...dziwne.
    > > Istnieje co prawda coś takiego jak websockets, ale to zupełnie inna bajka.
    > >
    > > Dlatego dopytuję o szczegóły implementacyjne, a nie o to co wynika z opisu
    > > polecenia http, bo coś czuję, że jednak nie jest to tak implementowane.
    > > Oczywiście mogę się mylić! A lubię zaliczać dysonanse poznawcze tego
    > > rodzaju :-)
    >
    > Jest w sieci wiele przykładów serwerów i klientów http. Jeśli Ci zależy,
    > możesz któryś poznać. Wpisz w google np. taką frazę "qt http server"

    Może tam Cię coś zainteresuje:
    http://doc.qt.io/qt-5/qtwebsockets-echoserver-exampl
    e.html

    Pozdrawiam


  • 16. Data: 2017-10-12 19:04:52
    Temat: Re: Wieloużytkownikowy serwer udp?
    Od: Roman Tyczka <n...@b...no>

    On Thu, 12 Oct 2017 09:50:21 -0700 (PDT), M.M. wrote:

    >>> Istnieje co prawda coś takiego jak websockets, ale to zupełnie inna bajka.
    >>>
    >> Jest w sieci wiele przykładów serwerów i klientów http. Jeśli Ci zależy,
    >> możesz któryś poznać. Wpisz w google np. taką frazę "qt http server"
    >
    > Może tam Cię coś zainteresuje:
    > http://doc.qt.io/qt-5/qtwebsockets-echoserver-exampl
    e.html
    >
    > Pozdrawiam

    Ale przecież napisałem, że nie chodzi o websockety bo to inna bajka, osobna
    (nowa) technologia i do czego innego służąca.
    A jeśli chodzi o źródła serwerów... jedynie serwery pokroju Apache czy IIS
    są tu istotne, bo to one trzymają na swoich plecach internet, a żeby zbadać
    źródła takiego Apache to ...jestem za chudy w uszach. Stąd dopytuję, może
    ktoś w tym siedzi zawodowo i po prostu wie.

    --
    pozdrawiam
    Roman Tyczka


  • 17. Data: 2017-10-12 20:06:34
    Temat: Re: Wieloużytkownikowy serwer udp?
    Od: Piotr Chamera <p...@p...onet.pl>

    W dniu 2017-10-12 o 19:04, Roman Tyczka pisze:
    > On Thu, 12 Oct 2017 09:50:21 -0700 (PDT), M.M. wrote:
    >
    >>>> Istnieje co prawda coś takiego jak websockets, ale to zupełnie
    >>>> inna bajka.
    >>>>
    >>> Jest w sieci wiele przykładów serwerów i klientów http. Jeśli Ci
    >>> zależy, możesz któryś poznać. Wpisz w google np. taką frazę "qt
    >>> http server"
    >>
    >> Może tam Cię coś zainteresuje:
    >> http://doc.qt.io/qt-5/qtwebsockets-echoserver-exampl
    e.html
    >>
    >> Pozdrawiam
    >
    > Ale przecież napisałem, że nie chodzi o websockety bo to inna bajka,
    > osobna (nowa) technologia i do czego innego służąca. A jeśli chodzi
    > o źródła serwerów... jedynie serwery pokroju Apache czy IIS są tu
    > istotne, bo to one trzymają na swoich plecach internet, a żeby zbadać
    > źródła takiego Apache to ...jestem za chudy w uszach. Stąd dopytuję,
    > może ktoś w tym siedzi zawodowo i po prostu wie.

    Z ciekawości zerknąłem do Wikipedii
    (https://en.wikipedia.org/wiki/HTTP_persistent_conne
    ction), piszą, że
    dla HTTP 1.1 jest to (keepalive) zachowanie domyślne. Apache ma
    domyślnie ustawiony dość krótki czas utrzymywania połączenia (15 i 5
    sekund w zal. od wersji).

    ,,HTTP 1.1
    In HTTP 1.1, all connections are considered persistent unless declared
    otherwise.[1] The HTTP persistent connections do not use separate
    keepalive messages, they just allow multiple requests to use a single
    connection. However, the default connection timeout of Apache httpd 1.3
    and 2.0 is as little as 15 seconds[2][3] and just 5 seconds for Apache
    httpd 2.2 and above.[4][5] The advantage of a short timeout is the
    ability to deliver multiple components of a web page quickly while not
    consuming resources to run multiple server processes or threads for too
    long.[6]"

    Bardzo popularny Nginx (popularniejszy na mocno obciążonych witrynach od
    Apache, https://w3techs.com/technologies/cross/web_server/ra
    nking) ma
    ten czas domyślnie ustawiony na 75 sekund, czyli już dość długo). Można
    to ustawić w konfiguracji w zależności od potrzeb za pomocą dwu opcji:

    Syntax: keepalive_requests number;
    Default: keepalive_requests 100;
    Context: http, server, location
    This directive appeared in version 0.8.0.
    Sets the maximum number of requests that can be served through one
    keep-alive connection. After the maximum number of requests are made,
    the connection is closed.

    Syntax: keepalive_timeout timeout [header_timeout];
    Default: keepalive_timeout 75s;
    Context: http, server, location
    The first parameter sets a timeout during which a keep-alive client
    connection will stay open on the server side. The zero value disables
    keep-alive client connections. The optional second parameter sets a
    value in the "Keep-Alive: timeout=time" response header field. Two
    parameters may differ.

    The "Keep-Alive: timeout=time" header field is recognized by Mozilla and
    Konqueror. MSIE closes keep-alive connections by itself in about 60 seconds.


    Dokumentacja i źródła tego serwera są dostępne na http://nginx.org/



  • 18. Data: 2017-10-12 23:09:10
    Temat: Re: Wieloużytkownikowy serwer udp?
    Od: "M.M." <m...@g...com>

    On Thursday, October 12, 2017 at 7:04:54 PM UTC+2, Roman Tyczka wrote:
    > On Thu, 12 Oct 2017 09:50:21 -0700 (PDT), M.M. wrote:
    >
    > >>> Istnieje co prawda coś takiego jak websockets, ale to zupełnie inna bajka.
    > >>>
    > >> Jest w sieci wiele przykładów serwerów i klientów http. Jeśli Ci zależy,
    > >> możesz któryś poznać. Wpisz w google np. taką frazę "qt http server"
    > >
    > > Może tam Cię coś zainteresuje:
    > > http://doc.qt.io/qt-5/qtwebsockets-echoserver-exampl
    e.html
    > >
    > > Pozdrawiam
    >
    > Ale przecież napisałem, że nie chodzi o websockety bo to inna bajka, osobna
    > (nowa) technologia i do czego innego służąca.
    > A jeśli chodzi o źródła serwerów... jedynie serwery pokroju Apache czy IIS
    > są tu istotne, bo to one trzymają na swoich plecach internet, a żeby zbadać
    > źródła takiego Apache to ...jestem za chudy w uszach. Stąd dopytuję, może
    > ktoś w tym siedzi zawodowo i po prostu wie.
    >
    > --
    > pozdrawiam
    > Roman Tyczka

    I tak nie wiem czego nie wiesz. Robi się close(socket) jeśli
    upłynął zadany czas, albo po każdej odpowiedzi. Zaimplementować to
    można na kilkadziesiąt sposobów i każdy będzie dobry. Jeśli
    nie odpowiesz mi dlaczego chcesz to wiedzieć i do czego potrzebujesz, to
    mogę jedynie ponownie odesłać do źródeł. Możesz napisać swój
    edukacyjny serwer http i będziesz miał jakąś implementację bez
    czytania źródeł apache i iis. Naprawdę nie trzeba być mistrzem
    świata w programowaniu, aby w kilka godzin napisać swój serwer z
    konfiguracją keep-alive.



    Natomiast teoretycznie można by zoptymalizować czasy, ale nie
    słyszałem aby w praktyce to się stosowało. Obojętnie jak
    to w danej implementacji ktoś zoptymalizuje, to po prostu
    robi się close(socekt) gdy zaszły warunki danej strategii.
    Wracając, w przypadku http, klienta każdy może napisać, więc nie
    można liczyć na rozsądne zachowanie ze strony klienta. Wszelkie
    strategie muszą być po stronie serwera. Otwieranie za każdym razem
    połączenia kosztuje. Przetrzymywanie otwartych połączeń też kosztuje.
    Serwer w przybliżeniu wie jaki jest średni rozkład prawdopodobieństwa
    zapytań od jednego klienta, a nawet wie, jakie jest rozkład po
    konkretnym zapytaniu. Jeśli znamy rozkłady, znamy koszt
    otwierania połączenia, znamy koszt przechowywania połączenia, to
    można zbudować hash-table zapewniającą sub-optymalne zachowanie:

    while( is_work )

    request = get_request

    if new_connection then
    keep_alive = init_value
    else
    keep_alive += hash_table[ request ]
    end if

    response = compute( request )
    send( response )

    if current_time - time_open > keep_alive
    close(socket)
    end if

    build_strategy( hash_table , request )
    end while

    Pozdrawiam


  • 19. Data: 2017-10-14 10:02:13
    Temat: Re: Wieloużytkownikowy serwer udp?
    Od: "AK" <n...@n...net>

    Użytkownik "Roman Tyczka" <n...@b...no> napisał:

    > Ale przecież napisałem, że nie chodzi o websockety bo to inna bajka, osobna
    > (nowa) technologia i do czego innego służąca.

    No przeciez Ci napisali w kontekscie HTTP: keep-alive

    AK


  • 20. Data: 2017-10-17 15:46:06
    Temat: Re: Wieloużytkownikowy serwer udp?
    Od: m...@k...org

    Jak chcesz wiedziec, jak to robi Fb to:
    https://github.com/facebook/proxygen

    --
    Michal

strony : 1 . [ 2 ]


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: