Несколько дней назад я заметил ожидание дискового ввода-вывода и падение активности диска (что было здорово). Затем я также заметил, что мой кэш был заполнен (*) и фрагментирован. Затем я очистил кеш. После этого задержка диска и активность диска перешли на предыдущий уровень (что было плохо).
IOtop показывает, что [jbd2 / sda2-8] и [flush-8: 00] всегда находятся на вершине использования диска. Это Dell R210, аппаратный RAID 1 (H200) с большим количеством свободной памяти (всего 16 ГБ, из которых около 8 ГБ - буфер / кэш).
(*) Кэш-память - это кэш кода операции APC для PHP, который уменьшает доступ к диску для выполнения сценария PHP. Кэш был полон и фрагментирован, потому что он содержал файлы из экземпляра разработки. Когда я заметил это, я отфильтровал их.
Вопрос в том, почему дисковый ввод-вывод увеличивается, когда теоретически он должен уменьшаться? Ниже приведены некоторые графики из Мунина. Кэш был полон с 6 по 8 февраля.
Изменить после того, как я закомментировал apc.mmap_file_mask, как сказал @ cyberx86
И через несколько дней https://serverfault.com/a/362152/88934
источник
apc.mmap_file_mask=/tmp/apc.XXXXXX
), вы можете увидеть повышенный ввод-вывод. Попробуйте установитьapc.mmap_file_mask
использование общей памяти (например/apc.shm.XXXXXX
) или to/dev/zero
(анонимная mmapped memory).Ответы:
Если вы используете отображение памяти на основе файлов (например
apc.mmap_file_mask=/tmp/apc.XXXXXX
), вы можете увидеть повышенный ввод-вывод.Попробуйте установить
apc.mmap_file_mask
использование общей памяти (например/apc.shm.XXXXXX
) или to/dev/zero
(анонимная mmapped memory). При сохранении значения неопределенным по умолчанию используется анонимная mmapped память.Обычно mmapped файлы - это отличная вещь:
Однако, по сравнению с хранением чего-либо исключительно в памяти, они влекут за собой дополнительные операции ввода-вывода - значительно, когда файл постоянно меняется. Недостатком неиспользования mmapped файлов является отсутствие постоянства - ваш кеш не выдержит перезапуска, так как он хранится только в памяти.
Поэтому можно предположить, что в то время как кэш заполнялся и стабилизировался, он претерпел наибольшее изменение, которое должно было постоянно записываться на диск; как только кеш был заполнен, ttl для каждого объекта замедлил скорость, с которой данные в кеше переворачивались, уменьшая изменение и уменьшая запись на диск.
источник
Через несколько дней я хочу вернуться с графиками. Изменение значительно улучшает эту ситуацию. Это сокращает все, кроме времени обслуживания ввода-вывода (я думаю, это потому, что больше нет простого чтения небольших файлов PHP, что дешево).
Загрузка сервера (она была уже достаточно низкой, поэтому я не обнаружил изменений).
источник
apc.mmap_file_mask=/tmp/apc.XXXXXX