Назад | Перейти на главную страницу

Что такое чрезмерная подкачка?

Следующий отрывок из эта почта привел меня к этому вопросу:

Конфликт кеширования

На большом сайте, если вы используете MyISAM, в таблицах базы данных возникает конкуренция, когда кэш принудительно очищается после добавления узла или комментария. Поскольку необходимо удалить десятки тысяч фрагментов текста фильтра, таблица будет заблокирована на длительный период, и любые обращения к ней будут помещены в очередь в ожидании очистки данных в ней. То же верно и для кеша страниц.

Это часто приводит к "зависанию сайта" на минуту или две. В течение этого времени новые запросы продолжают накапливаться, и если у вас нет параметра MaxClients в настройке Apache правильно, система может перестать работать из-за чрезмерного свопинга.

Я думаю, что вам нужно спросить, «что взбивает».

"чрезмерное свопинг" == "слишком большое свопинг" само по себе не имеет большого значения. Думаю, вы это уже знаете.

Обычно современная операционная система имеет эту систему «виртуальной памяти», что означает, что вы можете определить доступную память в гораздо большей степени, чем фактическая физическая (например, ОЗУ) память, имеющаяся у вашего оборудования. Обычно это достигается за счет того, что только часть всей вашей виртуальной памяти находится в основном хранилище (обычно ОЗУ), а остальное перемещается во вторичное хранилище (обычно на жесткие диски). Процесс загрузки из вторичного хранилища в первичное называется «страницей в». Процесс сохранения памяти из первичного во вторичное хранилище называется «выходом на страницу».

Операция «page out», за которой следует операция «page in», называется «swapping», обычно для выталкивания части памяти, которую диспетчер виртуальной памяти думает больше не используется, во вторичное хранилище и извлекает часть памяти, которая будет использоваться из вторичного хранилища.

В некотором смысле ОЗУ - это кеш для виртуальной памяти, хранящейся во вторичном хранилище. Как и во всем механизме кеширования, здесь используется игра «хит / промах». Если у вас хороший процент попаданий, производительность будет хорошей (что обычно бывает с хорошим менеджером виртуальной памяти). Если у вас высокий процент промахов (низкий процент попаданий), это плохо, производительность даже хуже, чем скорость вторичного хранилища.

Разбивка - это состояние, при котором частота промахов очень высока, и это условие возникает часто: что-то, что вы недавно выгнали, нужно снова «выгружать», что делает слишком дорогостоящим чтение / запись из памяти. Как вы знаете, операция чтения / записи на жесткий диск очень дорога по сравнению с доступом к оперативной памяти.

Если вы из информатики, возможно, вы знаете, что быстрая сортировка может быть медленной O (n ^ 2), когда вы вводите ввод в определенной последовательности, это наихудшая последовательность. Взбучка - это что-то вроде худшего или почти худшего случая. В большинстве случаев вы получаете снижение производительности.

Когда вашим процессам требуется больше памяти, чем у вас есть RAM на вашем сервере, они «перекачивают» часть своей памяти на диск в вашем разделе подкачки. Доступ к этой виртуальной памяти намного медленнее, чем доступ к реальной оперативной памяти, поэтому, если он дойдет до точки, когда часто используемые данные должны быть загружены и удалены, это нанесет ущерб производительности вашей системы.