[erlang-questions] monitor long_schedule and strange timeouts
Mikael Pettersson
mikpelinux@REDACTED
Fri May 20 16:31:55 CEST 2016
Max Lapshin writes:
> Once per hour we get strange situation on customer server.
>
> Log is getting full with messages like:
>
>
> 2016-05-20 02:06:52.204 <0.300.0> flu_sys_monitor:46 Monitor:
> {monitor,<0.27485.22>,long_schedule,[{timeout,2591},{in,{gen_server,loop,6}},{out,{gen_server,loop,6}}]}
>
> 2016-05-20 02:06:52.210 <0.300.0> flu_sys_monitor:46 Monitor:
> {monitor,<0.342.0>,long_schedule,[{timeout,2595},{in,{live_info_storage,loop_setter,1}},{out,{live_info_storage,loop_setter,1}}]}
>
> (loop_setter is a very small function that just reads message and set field
> in ets table)
>
> and many processes in system are getting stuck in different places like:
>
>
> {current_stacktrace,[{erts_internal,await_result,1,[]}
>
>
> Amount of erlang:statistics(total_active_tasks) is getting down from
> average 800 to 200 when such situation happens.
>
>
> I have two questions:
[snip]
> 2) are there any hints how to debug situation? Is it an external of
> something internal? If customer is running some task on this server, then
> why long schedules may appear?
A. The server is slowing down for whatever reason. Use normal OS-level
monitoring tools to look for CPU, memory, or I/O hogs around the times
your long schedules occur. A backup can slow down your file accesses,
for instance.
B. You may be using BIFs that perform a lot of work without yielding to
the scheduler. Unless the context of the long_schedule events give
enough hints as to what BIFs are involved, I'd use either gdb to dump
the scheduler thread stacks at frequent intervals, or run a gprof-
enabled VM and then analyze the gprof output. Other profiling tools
like perf should also work.
We have hit a number of these long-running BIFs, some have been fixed,
but not all.
A special case is listing directories with huge numbers of files in them:
that can take very long time but consumes very little CPU.
More information about the erlang-questions
mailing list