wziąłem testowo najtańszy serwer na Digital Ocean (1 rdzeń, 512 MB RAM) i chciałem zobaczyć, z czym sobie poradzi. Stworzyłem na scaffoldzie aplikację pozwalającą na tworzenie postów na blogu (title, content), nie zmieniałem css, nie dodawałem bootstrapa itd. itp. No i tu małe zdziwienie/przerażenie z mojej strony, bo po odpaleniu serwera i podglądnięciu htopem okazuje się, że serwer ma obciążenie do 10% CPU gdy jedna osoba (ja) przegląda tą aplikację w przeglądarce.
Czy to nie aby za dużo? Zużycie pamięci 450/490, swap włączony, nie grzebałem nic w konfiguracji - korzystam z istniejącego dropleta Rails z DO.
Nie ma w tym nic dziwnego. Chwilowe zużycie procesora nie mówi za wiele. Gdyby nie operacje I/O to przez czas wykonywania żądania oczekiwałbym 100% zużycia CPU. Kwestia jest inna. Pytanie ile żądań/s obsłuży Ci ten serwer. Musiałbyś sobie zrobić jakieś benchmarki żeby mieć jakieś oczekiwania co do tego ile użytkowników będzie w stanie ten serwer uciągnąć. Opieranie się na 1 użytkowniku i chwilowym zużyciu procesora po prostu nie ma sensu.
Użyłem siege z 50 użytkownikami i potrafiło zadławić serwer bardzo mocno. Może to bardziej kwestia tego, że wszystko ‘leci’ przez serwer railsowy zamiast przez jakiś web server (unicorn?)?
Pytanie tylko, czy to jest prawidłowa droga rozumowania? Może lepiej zrobić 2-3 droplety po 512 RAMu (rails, web server, db)? Czy wszystko może być ciągnięte przez jeden taki mały serwerek? Nie buduję drugiego facebooka, chcę się czegoś nauczyć po prostu i szukam informacji od osób z większym doświadczeniem.
Ja Ci mogę doradzić ze swojego niewielkiego doświadczenia, że zmiana servera z Webricka poprawi performance. Unicorna używałem i różnica duża nie była , lecz w przypadku passengera wydajność wzrosła znacznie.
Może tu jest jakiś błąd - odpalałem poprzez komendę rails server (bez żadnych dodatków, więc prawdopodobnie nawet w trybie development, nie production).
Po zapuszczeniu siege unicorn i nginx były na 0 procent CPU, jedyne co skakało to właśnie ten rails server. Także na razie bawię się ze zmianą na unicorn+nginx i zobaczę, co wtedy siege i htop powiedzą.