Problemy wydajnościowe - pytania początkującego

Witam,

uruchomiłem ostatnio serwis na serwerach megiteam.pl. Jest to średnio rozbudowana aplikacja Rails 3.0.9 (serwis ogłoszeniowy) jednak niepokoi mnie zużycie pamięci. Z serwisu korzystają teraz 2 osoby w celu testowania a zużycie pamięci jest na poziomie 110 mb. Serwer to Thin + Ruby 1.8.7. Uruchomiony tylko ten jeden proces.

Czy możliwe jest aby serwis był tak źle napisany? Czy może to jest codzienność z pracowaniem na Ruby on Rails?

Kodu całego nie wstawię bo to mija się z celem, wątpię też czy to może być problem jednego wąskiego gardła.

  1. Czy testy mogłyby coś mi podpowiedzieć?

  2. Czy serwis oparty na zasobach ma szanse działać dużo szybciej od takiego nafaszerowanego w routsach “match /:cos/:cos” ?

Będę wdzięczny za jakieś wskazówki dot. optymalizacji i dobrych praktyk pisania. Szukałem w googlach ale nie mogę nic konkretnego wyciągnąć co podpada pod ten przypadek.

Takie życie. Jedna instancja Railsów może zajmować od 80MB do nawet 300MB. Nie ma przy tym znaczenia ile osób z niej korzysta (dopóki nie jest potrzebna druga).

  1. Testy Ci nic nie podpowiedzą.
  2. Nie powinieneś się tym przejmować, a zamiast tego skupić na tym, żeby kod był bardziej czytelny i elegancki. (tip: poguglaj hasło premature optimization)

Wyręczę Bragiego: Jeśli 50MB ramu na hostingu, to dla Ciebie problem, to masz coś nie tak z modelem biznesowym.

  1. im więcej gemów wpakowanych do gemfile, tym gorzej
  2. im większy burdel w routach (match zamiast resources) - tym gorzej
  3. istnieje mnóstwo poradników dot. optymalizacji railsów, więc szkoda się powtarzać ( pełno tricków jest) - brak indeksów w db, pobieranie za dużo danych z bazy, brak cache
    W każdym razie serwis może być aż tak źle napisany :wink:

A to ciekawe stwierdzenie, jakieś dowody?

110mb to całkiem nieźle jak na aplikację railsową.

A to ciekawe stwierdzenie, jakieś dowody?[/quote]
Dobrze wiesz że to nie prawda i chcesz trollować (ale Ty?!). resources, get, match i podobne robią dokładnie to samo, nie mogą więc wpłynąć na zużycie pamięci/wydajność…

To takie pół-trolowanie :wink: Chodziło mi o to, żeby krzyzak zrobił jakieś testy i/lub spojrzał na źródła railsów i sam doszedł do takiego wniosku.

@krzyzak: żeby nie było, że tylko troluję, przejrzyj sobie źródła w tym miejscu: https://github.com/rails/rails/blob/master/actionpack/lib/action_dispatch/routing/mapper.rb#L1114 , oraz metody get/post itp. i zobacz jak działają :slight_smile:

Kolega wyżej wspomniał o wielu gemach, czy ich duża ilość może poważnie zwolnić działanie aplikacji?

Sama ich ilość nie, co najwyżej aplikacja będzie wolniej startować. Chodziło tylko ilość zjedzonego ramu.

Akurat tip o routach nie odnosił się do wydajności a do czytelności/jakości kodu. Często jest tak, że ludzie nadużywają wspomnianych wcześniej konstrukcji. I również, żeby nie być gołosłownym, przykład routów z realnej aplikacji, autorstwa znajomego :wink: