Я не так силен в linux / unix, поэтому прошу помощи по моей проблеме. У меня сайт на Amazon ec2. Я запускаю apache tomcat mysql на одном большом экземпляре 8 ГБ ОЗУ. База данных довольно большая, но у меня нет проблем с производительностью, а в коробке около 3 ГБ свободной памяти. Я заметил, что примерно раз в час ящик практически зависает, поэтому сайт не отвечает, и даже оболочка ssh работает очень медленно. Я включил мониторинг производительности и заметил, что Amazon сообщает, что каждый час или около того происходят огромные всплески ввода-вывода на диск.
Я использую UBUNTU с версией ядра 2.6.32-305-ec2. Я запустил мониторинг с помощью vmstat и заметил, что в нормальном режиме работы окно сообщает о 1,5 ГБ свободной памяти и 2 ГБ кеша, и кеш постепенно увеличивается. но в какой-то момент кеш начинает расти, занимает всю оперативную память, оставляя около 1 МБ или что-то в этом роде. А затем я вижу множество процессов, ожидающих диска, и все, что зависит от ввода-вывода дисков, зависает. Обычно это длится от 3 до 5 минут. Насколько я понимаю, система сбрасывает кеш на диск и освобождает память, и именно это вызывает весь этот беспорядок. У меня не было этой проблемы, пока я не думаю, что она началась недавно, когда я загрузил гораздо больше данных в mysql. Но, опять же, есть много свободной памяти, это просто управление памятью и кешем с помощью Linux. Я читал, что это должно быть без проблем, и это хорошо, когда есть буферный кеш, но отключение сайта на 5 минут каждый час определенно плохо для меня. Пожалуйста, посоветуйте, какие варианты у меня есть. Я ничего не нашел в Интернете.
Что это vmstat
выходы
r b swpd free buff cache si so bi bo in cs us sy id wa
0 30 0 45512 134300 4062404 0 0 437 685 31 40 11 4 74 6
5 31 0 47200 134328 4057136 0 0 28188 15508 1682 2255 13 9 2 66
3 33 0 46904 134328 4057048 0 0 16761 8785 1099 1523 4 3 0 89
0 35 0 48440 134344 4054908 0 0 23688 11572 1453 1782 6 3 0 85
Взгляните на Грега Смита Тайна кеша записи в Linux. Возможно, вам потребуется уменьшить dirty_ratio и dirty_background_ratio.