I had problems with requests taking too much memory too. I had to move all memory heavy logic into a pool of processes (poolboy), so there could be only so much of such tasks at any give time. When user sends request to create a report, controller tries to checkout a process from pool, and if it gets a timeout it just returns a message to the user that he has to wait for a while. Another way to throttle is to make such tasks asynchronously. You may store requests for reports in db and return from immediately. There should be a process(es) which perform these tasks in the background and return result to the user via something like ajax or comet. You may even cancel these tasks if, for example, client haven't send a ping request with task id in a given interval of time.
четверг, 16 января 2014 г., 18:10:03 UTC+4 пользователь [email protected] написал: > > Hello, > > When e.g. a GET request is canceled from the client's end, CB still > performs the request completely. This is a big problem to us since we do > some heavy server side report generation. If a user reloads the requests > multiple times, chances are that OOM will occur, and we all know that OOM > is Erlang's Achilles' heel. I just tested this in v0.8.9. > > It doesn't seem as this issue have been raised before but I know the > problem has existed from at least 0.8.1. Any plans of addressing it? Gut > feeling about how hard this will be to fix? > > Best regards, > Martin Torhage > -- You received this message because you are subscribed to the Google Groups "ChicagoBoss" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. Visit this group at http://groups.google.com/group/chicagoboss. To view this discussion on the web visit https://groups.google.com/d/msgid/chicagoboss/e44fa344-1f63-46fc-948c-10be99758bbb%40googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
