Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > pl.comp.os.linux.programowanie > #2151
| From | queequeg@trust.no1 (Queequeg) |
|---|---|
| Newsgroups | pl.comp.os.linux.programowanie |
| Subject | UDP na localhost, gubienie datagramów |
| Date | 2019-03-08 12:24 +0000 |
| Organization | news.chmurka.net |
| Message-ID | <cc3a114c-98ff-4beb-aeca-00d24c6a5026@trust.no1> (permalink) |
Hej, Mam (chyba dosyć nietypowy) problem. Jest aplikacja, której nie mogę zmienić, i która wysyła datagramy UDP do skonfigurowanego serwera. Częstotliwość tych datagramów jest różna. Skonfigurowałem aplikację tak, żeby wysyłała datagramy do localhosta, i napisałem program, który chodzi na tej samej maszynie i je odbiera. Niestety przy dużym obciążeniu (datagramy wysyłane jeden po drugim) część z nich jest gubiona. W prostym teście, w którym jeden program wysyłał 10000 datagramów jeden po drugim, a drugi je odbierał, gubione było ok. 30% datagramów. Co ciekawe, efekt ten nie występuje, gdy skonfigurowany jest zewnętrzny serwer (w tej samej sieci) -- wtedy odbierane jest 100% datagramów. Może LAN wprowadza takie opóźnienia, że nagle się to wyrabia, a może sam serwer na tyle obciąża CPU na tej źródłowej maszynie (to słaby, jednordzeniowy ARMv7), że dopiero wtedy to klęka... Wiem, że to naturalna cecha UDP i pewnie po prostu jakiś bufor w kernelu się przepełnia, ale czy z poziomu aplikacji odbierającej można jakoś na to wpłynąć? Eksperymenty z SO_RCVBUF nic nie dały. Tylko proszę bez "przejdź na TCP lub unix domain socket lub pipe lub cokolwiek" :) Gdybym mógł modyfikować aplikację wysyłającą, to bym to zrobił. Dzięki. -- https://www.youtube.com/watch?v=9lSzL1DqQn0
Back to pl.comp.os.linux.programowanie | Previous | Next | Find similar
UDP na localhost, gubienie datagramów queequeg@trust.no1 (Queequeg) - 2019-03-08 12:24 +0000
csiph-web