У меня есть Elixir/Phoenix, работающий на производстве, и через некоторое время один из процессов beam.smp переходит на 100% загрузку процессора (иногда более одного процесса). Я не знаю ни одного триггера, вызывающего это. Как я могу узнать, что происходит?Производство Elixir/Phoenix app hogs CPU
EDIT:
Я бегала Iex на сервере и подключается к узлу Phoenix. Чем я побежал Etop и получил этот результат:
Load: cpu 100 Memory: total 69429 binary 10568
procs 303 processes 16656 code 20194
runq 1 atom 727 ets 7205
Pid Name or Initial Func Time Reds Memory MsgQ Current Function
----------------------------------------------------------------------------------------
<19947.645.0> cowboy_protocol:init '-'90164000 88736 0 'Elixir.MyApp.Error
<19947.902.0> cowboy_protocol:init '-'88696000 88744 0 'Elixir.MyApp.Error
<19947.242.0> 'Elixir.Redix.Connec '-' 11697 24704 0 gen_server:loop/6
<19947.240.0> Elixir.Exq '-' 10284 24664 0 gen_server:loop/6
<19947.236.0> Elixir.Exq.Redis.Cli '-' 9597 34520 0 gen_server:loop/6
<19947.1695.0> etop_txt:init/1 '-' 6258 230504 0 etop:update/1
<19947.245.0> Elixir.Exq.Scheduler '-' 4831 24664 0 gen_server:loop/6
<19947.241.0> 'Elixir.Redix.Connec '-' 2339 8856 0 gen_server:loop/6
<19947.426.0> Elixir.MyApp.Presen '-' 262 143160 0 gen_server:loop/6
<19947.238.0> Elixir.Exq.Stats '-' 105 42344 0 gen_server:loop/6
========================================================================================
Той два cowboy_protocol:init
запись, вызывающей проблему. Но почему ... и как я могу остановить/предотвратить/отладить его?
Я нашел причину этого. У меня был шаблон, у которого был тег изображения с URL-адресом для изображения, которое больше не существует, и я забыл обновить тег. Но как это может вызвать такое? –
Похоже, что каждый запрос несуществующего изображения вызывает это. Это не может быть нормально ... –
Вы посмотрели функцию, указанную в выходном потоке, как «Текущая функция»? Начало имени модуля имеет префикс «MyApp», поэтому я предполагаю, что это ваш код. Скорее всего, это функция, в которой произошла ошибка. – michalmuskala