Ich entwickle gerade eine Web-App und wechsle dafür zwischen Windows- und Mac-Dev-Maschinen.
Mein Problem ist, dass Seiten extrem langsam unter Windows rendern, aber es ist nicht mein Ruby-Code, der langsam ausgeführt wird, sondern dass statische Dateien langsam bedient werden.
Eine typische Seite braucht etwa 200ms um gerendert zu werden und in dev geliefert zu werden (sowohl Mac als auch Windows sind hier ähnlich), aber es enthält ungefähr 50 statische Dateien (in der Produktion sind es nur 5 bis 10, sobald sie verkleinert und kombiniert werden) in dev sind sie noch getrennt).
Diese 50 Dateien benötigen etwa 1,5 Sekunden für die Bereitstellung auf dem Mac, aber etwa <10 Sekunden> für Windows. Was macht es ziemlich gewunden, Dinge zu testen ...
Ich habe sowohl Webrick als auch Thin ausprobiert, sie sind ungefähr gleich.
Hat jemand dieses Problem gefunden und weiß, wie man das verbessert?
Ich habe versucht, das Webrick-Konf zu ": DoNotReverseLookup = & gt; true" zu ändern, wie in dieser Antwort vorgeschlagen aber es hilft nicht.
Jede Hilfe wird sehr geschätzt werden Danke! Daniel
Sie stoßen auf zwei existentielle Probleme, die Ruby-Entwickler lange Zeit geplagt haben:
Wenn Sie also darauf bestehen, die Entwicklung unter Windows selbst zu machen (statt nur unter Linux zu entwickeln oder auf einer Linux-VM unter Windows zu entwickeln), müssen wir uns überlegen, wie Sie ein Schwein mit Lippenstift versehen können.
>Einige Ideen:
Wenn Sie sich entschieden haben, Rails in einer Umgebung zu entwickeln, für die sie nicht entwickelt wurde, können Sie eine VM in der beschriebenen Weise einrichten hier . Der Autor berichtet von einer erheblichen Beschleunigung.
Verwenden Sie eine Ubuntu-VM in VirtualBox, es ist wahrscheinlich viel näher an Ihrer Deployment-Umgebung als Mac und Windows, was bedeutet, dass es in der Produktion weniger "aber in der Entwicklung" Probleme gab.
Außerdem ersparen Sie sich viel Zeit, sich mit Eigenheiten verschiedener Rubin / Edelsteinsimulationen und verschiedenen Kopfschmerzen aufgrund von nativen Erweiterungen zu beschäftigen.
Sie können:
Ubuntu Installation unter VirtualBox ist schnell, einfach und gut dokumentiert, es ist ziemlich einfach nur ein Assistent. Alternativ können Sie versuchen, ein gutes Landstreicher Rezept zu finden (siehe Ссылка ) oder fragen Sie nach, ob ein Kollege von Ihnen bereit wäre zu teilen seine / ihre vbox.
Ich habe eine Leistungseinbuße bei der Entwicklung (aufgrund der Echtzeit-Kompilierung) bei der Arbeit mit Projekten mit einer großen Anzahl von Assets festgestellt, aber ich war nicht auf Windows.
Ich nehme an, der große Leistungsunterschied kann durch eine ineffiziente Asset-Kompilierung unter Windows verursacht werden.
Ich habe keine Erfahrung mit Windows-Entwicklung, ich habe lange Zeit keine Windows-Maschine benutzt, jedoch habe ich eine merkliche Leistungssteigerung bei der parallelen Verarbeitung von Assets (in Entwicklung) festgestellt, als ich zu Multithread-Servern wechselte. speziell Puma . Beachten Sie, dass der Standard-Rails-Webserver (Webrick) in jedem Fall sehr ineffizient ist.
Wie Konstantin in dieser Antwort erklärt , gibt es derzeit mehrere Möglichkeiten. Sie können sie nach dem Verarbeitungsmodus gruppieren.
Überspringe den gesamten Hintergrundverlauf über Ruby-Threads, Multi-Prozess usw., ich würde dich einladen, Puma in deinem Rechner auszuprobieren und zu sehen, ob es die Last verbessert.
Puma funktioniert besser mit Ruby-Implementierungen, die echtes Multi-Threading bieten, aber zitiert die offizielle Readme
Im MRT gibt es eine Global Interpreter Lock (GIL), die sicherstellt, dass immer nur ein Thread gleichzeitig ausgeführt werden kann. Aber wenn Sie eine Menge IO blockieren (wie HTTP-Aufrufe an externe APIs wie Twitter), verbessert Puma immer noch den MRT-Durchsatz, indem es das Blockieren von IO gleichzeitig erlaubt (EventMachine-basierte Server wie Thin deaktivieren diese Fähigkeit und erfordern Sie verwenden spezielle Bibliotheken). Puma wurde entwickelt, um Rack-Anwendungen eine einfache und leistungsstarke Anfrage / Antwort-Pipeline zu bieten.
Tags und Links ruby-on-rails-3 windows performance webrick thin