Ошибки Heroku, Oink и R14. Может ли одна строка кода потребовать 70 МБ памяти?
Я был несколько обеспокоен количеством R14
ошибки я получаю на Heroku в последнее время.
Я не знаю, связано ли это с использованием Unicorn. Или недавно установили New Relic или Logentries. Я действительно не могу решить это.
Я "установил" Oink и только что получил следующий анализ, но понятия не имею, как полностью понять, что он пытается мне сказать.
---- MEMORY THRESHOLD ----
THRESHOLD: 0 MB
-- SUMMARY --
Worst Requests:
1. Nov 13 02:53:51, 70836 KB, messages#getmessagecount
2. Nov 13 02:03:04, 65836 KB, messages#getmessagecount
3. Nov 13 02:21:46, 60236 KB, messages#getmessagecount
4. Nov 13 01:32:47, 6328 KB, messages#deletemessage
5. Nov 13 01:33:43, 6328 KB, locations#sendprofiles
6. Nov 13 01:32:56, 6328 KB, messages#deletemessage
7. Nov 13 01:32:58, 6328 KB, messages#deletemessage
8. Nov 13 01:32:49, 6328 KB, messages#deletemessage
9. Nov 13 01:47:46, 5300 KB, messages#getmessagecount
10. Nov 13 03:09:56, 5300 KB, messages#getmessagecount
Worst Actions:
9, messages#deletemessage
7, messages#getmessagecount
1, locations#sendprofiles
1, photos#photodatarequest
1, messages#getmessages
Aggregated Totals:
Action Max Mean Min Total Number of requests
messages#getmessagecount 70836 29814 464 208700 7
messages#deletemessage 6328 3016 180 27144 9
locations#sendprofiles 6328 6328 6328 6328 1
photos#photodatarequest 460 460 460 460 1
messages#getmessages 300 300 300 300 1
Я, как дилетант, обеспокоен тем, что мой message#getmessagecount
ест много памяти. Это то, что выше?
Если так... рутина просто:
def getmessagecount
@messagecount = Message.where(recipient: current_user, messageSysMessCode: 0, messageAdminMessage: false).count
end
И я понятия не имею, как это может быть "утечка" памяти.
График использования памяти на Heroku за последний день выглядит так:
я использую Ruby 2.1.4
а также Rails 4.1.7
если это поможет. Я использую две веб-динамо и один рабочий.
Ох... и моя процедура удаления сообщения:
def deletemessage
@message = Message.where(recipient_id: current_user.id, id: params[:messageID]).first
if (@message)
@message.delete
@code = "OK"
else
@code = "Couldn't delete message"
end
конец
Это убивает мою производительность (если это правильно сказать) каждые 3 часа или около того. Я понятия не имею, почему это увеличивается каждые 10 минут (что я надеюсь вывести из чтения графика). 10 минут могут быть значительными, так как у меня есть приложение для iPhone, которое опрашивает getmessagecount
рутина каждые 10 минут с одним тестовым приложением. Я могу только удивляться, что произойдет, если 10 копий приложения (или тысячи) начнут попадать на сервер?
Любая помощь будет очень ценится.