Я знаю, що це робить ... Напевно, мені цікаво, чому це виправляє проблему в додатку, який я успадкував. Я взяв на себе досить великий додаток tomcat, який виступає як сервер Red5 для безлічі флеш-клієнтів, і обробляє багато даних про взаємодію в режимі реального часу, які в кінцевому підсумку видаються на api-рейку. Проблема виснажувалась із великим навантаженням, з часом відповіді цих клієнтів зростали до 3-400 мс, там, де зазвичай <100 мс. Клієнт підозрював, що це питання пам'яті, яке ми насправді ніколи не могли підтвердити. Одного разу сервер постановки я проводив тест навантаження, в основному перестав приймати запити або був дуже повільним. На примху я послав
sync && echo 3 > /proc/sys/vm/drop_caches
і чарівно сервер повернувся до життя і почав працювати на повній швидкості, обслуговуючи це з'єднання. Це був збіг чи ця поведінка має сенс і чому?
sync
або просто echo
. Потім спробуйте з’ясувати, чому сервер повільний у випадках, які це виправляє (чи CPU максований? Чи мається IO? Чи є пейджинг системи?)