2013-11-14 8 views
0

Я столкнулся с проблемой WEBrick + Rails & Я не смог найти кого-либо еще с той же проблемой.WEBrick on Raspberry Pi дает «ThreadError: не может создать тему» ​​после бега на некоторое время

Я бегу WEBrick в мое приложение Rails с

$ rvmsudo rails server -p 80 

то я оставляю его в отделенной screen и выйти. Если я буду ждать несколько дней, WEBrick перестает обслуживать запросы, давая это каждый раз, когда кто-то пытается загрузить приложение:

ERROR ThreadError: can't create Thread (11) 
    /home/pi/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/webrick/server.rb:284:in `start' 

Тогда, когда я пытаюсь остановить сервер и перезапустить его с помощью Control-C, иногда он показывает это и я должен нажать Control-C дважды, чтобы убить его:

[2013-11-13 21:13:08] ERROR NoMethodError: undefined method `shutdown' for nil:NilClass 
    /home/pi/.rvm/gems/ruby-2.0.0-p247/gems/rack-1.5.2/lib/rack/handler/webrick.rb:25:in `shutdown' 

Я попытался проверить, имеет ли мой сервер достаточно ресурсов-много оперативной память, процессора, дисковое пространства подкачки и сетевой ввод/вывод, чтобы сэкономить. Все выглядит почти так же, как когда Rails работает нормально (это действительно простое приложение).

Программное обеспечение & детали оборудования: Rails 4.0.1 с ruby ​​2.0.0p247 (версия 2013-06-27 версия 41674) [armv6l-linux-eabihf] работает на малине Pi с новейшим Raspbian.

Source of my app is on GitHub. Он работает на http://door.servebeer.com/.

Заранее благодарим за вашу помощь!

ответ

0

У меня было подозрение, что я нажимал какой-то предел, не связанный с ресурсами Пи. Я заметил, что каждый раз, когда я перезагружаю приложение в своем браузере, будут созданы три новых потока Ruby.

Запуск this forkbomb-like test, я обнаружил, что Ruby на Pi может запускать около 300 потоков, прежде чем давать ThreadErrors. Таким образом, после каждых 100 просмотров страниц сервер перестает обслуживать страницы, потому что он достиг предела потока.

Это, как представляется, проблема с запуском ARM (возможно, еще одним из ошибок WEBrick). Когда я запускал это с Rails 4.0.1 и Ruby 2.0.0 на сервере Intel Ubuntu, потоки не оставались открытыми.