2015-05-29 4 views
15

Ich möchte meine Rails-App mit Puma-Webserver auf Heroku bereitstellen. Allerdings bin ich mir nicht wirklich sicher, ob alle Edelsteine ​​fadensicher sind. Das Lesen des Quellcodes aller Edelsteine ​​ist für uns keine praktikable Option.So überprüfen Sie die Threadsicherheit der Rails-App für Puma

Gibt es eine Möglichkeit, alle Edelsteine ​​automatisch auf Thread-Sicherheit zu überprüfen? Oder meldet sich Puma/zeigt ein spezifisches Fehlerprotokoll an, wenn Thread-unsicherer Code ausgeführt wurde?

+2

FWIW Fadensicherheit in Ruby ist bestenfalls zweifelhaft. Dies ist einer der Gründe, warum Jose Elixir geschaffen hat. Ich würde in keinem Ruby-Code auf Thread-Sicherheit zählen. Ihre beste Wette ist die Verwendung von rubinius oder jruby – engineerDave

Antwort

1

Gewindesicherheit kann generell nicht erkannt werden. Wenn es eine Möglichkeit gäbe, es automatisch zu erkennen, würde wahrscheinlich Ihr Compiler/Interpreter Sie davor warnen. Race conditions kann von automatischen Systemen nicht erkannt werden, sie können sogar schwer zu reproduzieren sein.

Je nach Interpret:

  • CRubyGIL hat, so Puma mit damit sinnlos.
  • Wenn Sie JRuby oder Rubinius verwenden, als Sie wahrscheinlich von Puma und höchstwahrscheinlich die Edelsteine ​​Sie haben ihre Methoden/Klassen Thread-Sicherheit dokumentiert verwenden profitieren können. In diesem Fall müssen Sie nur Ihren Code überprüfen.
+0

Die GIL bedeutet nicht, dass Sie Thread unsafe Code nicht schreiben können –

+0

"Ein Interpreter, der GIL verwendet, wird immer genau einen Thread gleichzeitig ausführen lassen, auch wenn er auf einem Multi- Core-Prozessor "=> solange der Speicher freigegeben ist, ist es immer noch möglich für Deadlock, Race Conditions, Liveness-Problem auftreten? –

+0

OK, Sie haben Recht damit. Die GIL vereinfacht die meisten möglichen Threading-Probleme, die auftreten können. Sie haben Recht, der Hauptpunkt ist, dass Sie den Code für die Thread-Sicherheit nicht automatisiert testen können und "Puma" für eine Ruby-Implementierung mit GIL keine Vorteile gegenüber der Verwendung von "Unicorn" hat. – hakcho