... and it failed to build with cmake. Bummer. I'll fix it tomorrow. Michal
On 2017-12-20 23:54, Michal Marek wrote: > OK, I started with the hopefully least controversial part, which is the > soft limit for message queues: https://github.com/zeromq/malamute/pull/298. > > Thanks, > Michal > > On 2017-12-15 17:30, Osiris Pedroso wrote: >> And if anybody, after seeing your implementation believes they have an >> improvement, they are free to provide that as well. >> >> Organic software growth, solving problems that really exist for >> everybody with each person's contribution counting towards the solution. >> >> On Fri, Dec 15, 2017 at 3:29 AM Michal Vyskocil >> <michal.vysko...@gmail.com <mailto:michal.vysko...@gmail.com>> wrote: >> >> Hi, >> >> The beauty of C4 proces is that you will decide how to do solve the >> problem. If your solution will work for you, just submit it there. >> We can give you an advice, nothing more >> >> Michal >> >> Dne 12. 12. 2017 4:26 odpoledne napsal uživatel "Marek, Michal" >> <michalmar...@eaton.com <mailto:michalmar...@eaton.com>>: >> >> Hi Michal, >> >> regarding limits, there already is a configurable hard limit on the >> mailbox size. What I want to add is a soft limit to print a warning, >> plus analogous limits for message age. For my use case, I'm >> primarily >> interested in the soft limits, to get a log message as soon as >> things >> start to go wrong. >> >> Regarding a) (for the rest of the audience, fty-rest is our >> "gateway" >> between HTTP and malamute): It certainly is possible, but the >> respective >> HTTP request can time out anyway and delivering the mailbox >> message at >> this point is a waste of cycles... >> >> Regarding b), that's what I considered in my original email, but >> it's >> not as simple as it looks: The broker would need to keep track >> of past >> ephemeral clients, so as not to queue mail for them, so either its >> memory consumption would gradually grow beyond limits, or it >> would have >> to forget clients after some time, which means that there would >> have to >> be an arbitrary limit... Which means we are back to square one >> ;). That >> said, I can go for either solution, just let me know which one is >> preferable. But keep in mind that it's a choice between two evils: >> Either a configurable pattern match, which works fine, but is >> admittedly >> a hack, or a per-client ephemeral flag, which is a cleaner >> interface, >> but the implementation would have to deal with a growing set of past >> client connections. >> >> Thanks, >> Michal >> >> On 2017-12-12 11:42, Michal Vyskocil wrote: >> > Hi Michal, >> > >> > I am not happy with limits, they are hard to get right and >> will probably >> > break legal cases. My proposal is to >> > >> > a) Fix fty-rest to use malamute client pool >> > https://github.com/42ity/fty-rest/blob/master/src/shared/tntmlm.cc >> > exclusively. This way you will have fixed number of mlm >> clients, which >> > will regularly read their mailboxes. Theoretically it is >> possible that >> > their mailbox will grow indefinitely, but that'd be very >> pathological >> > case - like only one thread issuing long replies and timeouts >> all the time. >> > >> > b) Extend malamute protocol, so clients can mark themselves as >> > "ephemeral". Adding broker based configuration just brings >> additional >> > hidden protocol. Client always knows if he wants to have >> persistent >> > mailbox or not. Don't forget this does not work with mlm >> client pool :-) >> > See following example (and please come with better names :-) >> > >> > |// Set client's mailbox as temporary, so messages won't be >> queued if >> > client is not connected. >> > // Return 0 if successful, -1 otherwise (interrupted, not >> supported) >> > int mlm_client_set_temporary_mailbox (mlm_client_t *); >> > >> > //... >> > >> > mlm_client_t *client = mlm_client_new (); >> > mlm_client_set_temporary_malbox (client); mlm_client_connect >> (...); | >> > >> > >> > The limits inside broker looks really complicated and >> impossible to >> > setup in real use cases. Plus if you really know that if >> client is gone >> > you're not interested in messages, "ephemeral" clients is what >> you want to. >> > >> > Bye >> > Michal >> > >> > >> > On Mon, Dec 11, 2017 at 12:23 PM, Osiris Pedroso >> <opedr...@gmail.com <mailto:opedr...@gmail.com> >> > <mailto:opedr...@gmail.com <mailto:opedr...@gmail.com>>> wrote: >> > >> > Sounds like a good improvement on Malamute's current >> implementation. >> > Go ahead a submit your PR wit these changes. >> > If someone deems them improvable, they will do so by doing >> a new PR. >> > >> > PS: About the limits, I suggest a much smaller limit for >> the warning: >> > size-limit-warn = 65536 >> > >> > >> > >> > On Fri, Dec 8, 2017 at 8:07 AM Marek, Michal >> <michalmar...@eaton.com <mailto:michalmar...@eaton.com> >> > <mailto:michalmar...@eaton.com >> <mailto:michalmar...@eaton.com>>> wrote: >> > >> > Hi, >> > >> > I've been debugging issues in our project, where >> malamute's >> > memory usage >> > increases due to undelivered mailbox messages. The >> > mailbox/size-limit >> > config option helps in some cases, but it does not >> cover everything. >> > E.g., we have client connections that are ephemeral -- >> they >> > connect with >> > a randomly generated address, send a request to some >> other client's >> > mailbox and either receive a response or disconnect >> after a >> > timeout. The >> > result is that if the system is under higher load, >> malamute ends >> > up with >> > bunch of queues holding one message each. Another >> issue is that it's >> > difficult to debug such cases, because the mailbox >> engine is rather >> > silent. Would you guys take patches that >> > >> > A) add some "soft" limit for the queue size to log a >> warning >> > when the >> > mailbox grows too much? I'm thinking of something like >> > mlm_server >> > mailbox >> > size-limit = 524288 >> > size-limit-warn = 262144 >> > >> > B) add an aging mechanism for messages? The idea is >> that a message >> > undelivered for a long period of time can a sign of a >> > problem, either >> > on the sender or the receiver. In fact, in our use >> case, all the >> > clients are supposed to be connected, so actually >> any queued >> > message >> > is an anomaly. >> > >> > C) implement some special handling of ephemeral >> clients, so that >> > messages directed to them are either delivered >> directly or >> > dropped. >> > Now the problem is that if the clients are to >> advertise their >> > ephemeral nature, malamute would have to keep track >> of past >> > clients, >> > so the memory usage would just accumulate elsewhere >> :). How about >> > keying this off the client address somehow, e.g. via a >> > configurable >> > regex: >> > mlm_server >> > mailbox >> > no-queue-pattern = ^temp\..* >> > and the clients would set their address to >> "temp.XXXXXX". >> > >> > The above also applies to service queues to some >> extent, we just >> > do not >> > use this model in our project. What do you think? >> > >> > Thanks, >> > Michal >> >> -- >> Michal Marek Eaton European Innovation Center >> Open Source Developer Bořivojova 2380 >> 42ity.org <http://42ity.org> 252 63 Roztoky >> Tel: +420 211 151 532 <tel:%2B420%20211%20151%20532> >> www.eaton.cz <http://www.eaton.cz> >> >> >> >> >> >> ----------------------------- >> Eaton Elektrotechnika s.r.o. ~ Sídlo společnosti, jak je zapsáno >> v rejstříku: Komárovská 2406, Praha 9 - Horní Počernice, 193 00, >> Česká Republika ~ Jméno, místo, kde byla společnost >> zaregistrována: Praha ~ Identifikační číslo (IČO): 498 11 894 >> >> ----------------------------- >> >> ----------------------------- Eaton Elektrotechnika s.r.o. ~ Sídlo společnosti, jak je zapsáno v rejstříku: Komárovská 2406, Praha 9 - Horní Počernice, 193 00, Česká Republika ~ Jméno, místo, kde byla společnost zaregistrována: Praha ~ Identifikační číslo (IČO): 498 11 894 ----------------------------- _______________________________________________ >> zeromq-dev mailing list >> zeromq-dev@lists.zeromq.org <mailto:zeromq-dev@lists.zeromq.org> >> https://lists.zeromq.org/mailman/listinfo/zeromq-dev >> >> _______________________________________________ >> zeromq-dev mailing list >> zeromq-dev@lists.zeromq.org <mailto:zeromq-dev@lists.zeromq.org> >> https://lists.zeromq.org/mailman/listinfo/zeromq-dev >> >> >> >> _______________________________________________ >> zeromq-dev mailing list >> zeromq-dev@lists.zeromq.org >> https://lists.zeromq.org/mailman/listinfo/zeromq-dev >> > -- Michal Marek Eaton European Innovation Center Open Source Developer Bořivojova 2380 42ity.org 252 63 Roztoky Tel: +420 211 151 532 www.eaton.cz _______________________________________________ zeromq-dev mailing list zeromq-dev@lists.zeromq.org https://lists.zeromq.org/mailman/listinfo/zeromq-dev