Рубиновые процессы в OSX продолжают превышать 90%. Что происходит? - PullRequest
0 голосов
/ 15 апреля 2011

У меня есть несколько приложений на Ruby / Rails, которые я создаю локально. В последнее время я заметил, что независимо от того, над каким приложением я работаю, мой процесс Ruby будет нарастать до 90 +%, вентилятор процессора включится, и его не остановить, если я не убью присоску. Кажется, не имеет значения, над каким приложением я работаю. Есть идеи? Есть ли способ отследить, что не так?

Я запускаю приложения на Mongrel, Apache / Passenger и POW, и каждый раз получаю один и тот же результат.

И, кстати, у меня нет никаких заданий или задач, выполняемых постоянно. Эта загрузка процессора происходит без поражения серверов.

Моя система:

Ruby: ruby 1.8.7 (2009-06-12 patchlevel 174) [universal-darwin10.0]
Rails: Rails 3.0.4
OSX 10.6.7, MBP 2.53 GHz Core 2 Duo

Ответы [ 3 ]

2 голосов
/ 15 апреля 2011

Вы пытались открыть окно терминала и запустить top или открыть Activity Monitor, затем запустить каждый из них по отдельности и посмотреть, когда ваш процессор начинает подниматься?И top, и Activity Monitor позволят вам отсортировать данные по загрузке процессора приложением.Используйте top -o cpu и посмотрите, является ли наибольшая нагрузка приложением, которое вы запустили, или, возможно, чем-то еще, которое приложение запускает.

Приложение Rails будет всплывать при запуске, но должно успокоиться, ожидая входящих соединений.Если у вас есть периодические задачи, которые он выполняет, вы должны увидеть, что они снова вызывают всплеск активности процессора, а затем заканчиваются, когда задача заканчивается.

Вы находитесь на MacBook Pro.Сколько у вас оперативной памяти?Может быть, ваши приложения заканчиваются и слишком часто меняются местами?Это может повлиять на общую производительность вашей системы, заставляя процессор работать тяжелее, вызывая его нагрев.Жесткий диск MacBook Pro разработан с учетом эффективности использования батареи, а не высокой производительности, поэтому, если вы сильно ударили по диску с большим количеством операций ввода-вывода из базы данных, вы можете нагреть машину и заставить приложения ждать из-за блокировки записиили что-то в этом роде.

Существует множество разных вещей, которые могут привести к замедлению работы вашего компьютера и приложений, и вы на самом деле не дали нам много работы, поэтому это некоторые общие идеиво что бы я заглянул.

1 голос
/ 08 августа 2011

Я также заметил это и смог точно определить его. Если я запускаю top -o cpu, а затем открываю другое окно терминала и запускаю IRB, а затем закрываю окно терминала, не выходя из IRB, а затем внезапнонаверху показан процесс ruby ​​с процессором около 90%.Если я проведу тот же эксперимент, но выйду из IRB до закрытия окна, рубиновый боров не будет на 90%.

Так что, очевидно, мы должны быть осторожны, чтобы не закрыть окна терминала, если мы не вышли должным образомruby-программ.

0 голосов
/ 15 апреля 2011

Это может быть скорее предложение, чем ответ, потому что я не знаю, охватывает ли оно вашу проблему, но это займет всего несколько минут, и вы можете попробовать это.

У меня естьбыла эта проблема на FreeBSD, и здесь было мое решение.Почему-то версии Ruby / Rails / etc были несовместимы друг с другом, и они также не давали мне сообщений об ошибках, которые я всегда мог отследить.

Я уверен, что вы делаете это, но убедитесь, что ваш пакет всегда актуален.

Я перешел на rvm (менеджер версий Ruby) и вообще прекратил использовать системный Ruby,В целом это был лучший шаг системного администратора, который я сделал с Ruby, потому что Mac OS X / Macports (моя машина разработки) и FreeBSD / ports (моя рабочая машина) сильно отстают в версиях Ruby.

Я вижу, что вына уровне исправления ruby ​​1.8.7 174 на Mac OS X - уровень исправления текущей версии где-то на уровне или выше 330.

Более того, если вы отправляете на производственный сервер, который не является Mac OS X, вы 'Вероятно, вы получите лучшую переносимость с RVM, потому что вы можете установить одинаковые версии Ruby, Rails и всех гемов на обеих машинах.

...