Wiem, co robi ... Chyba jestem ciekawy, dlaczego rozwiązuje problem w odziedziczonej przeze mnie aplikacji. Przejęłam dość dużą aplikację tomcat, która działa jako serwer Red5 dla wielu klientów Flex i obsługuje wiele danych interakcji w czasie rzeczywistym, które ostatecznie są wyrzucane do interfejsu Railsowego. Problem z czasem był obciążony, a reakcje na tych klientów rosły do 3-400 ms, gdzie zwykle <100 ms. Klient podejrzewał, że to problem z pamięcią, którego tak naprawdę nigdy nie byliśmy w stanie potwierdzić. Pewnego dnia serwer pomostowy, na którym przeprowadzałem test obciążenia, zasadniczo przestał przyjmować żądania lub działał bardzo wolno. Na kaprys wysłałem
sync && echo 3 > /proc/sys/vm/drop_caches
i magicznie serwer wrócił do życia i zaczął działać na pełnych obrotach, obsługując te połączenia. Czy to był przypadek, czy to zachowanie ma sens i dlaczego?
sync
lub echo
. Następnie spróbuj dowiedzieć się, dlaczego serwer działa wolno w przypadkach, które to rozwiązuje (czy procesor jest maksymalny? Czy IO jest maksymalny? Czy system stronicuje?)